{"domain":"mcp.graphsheets.ai","count":1,"changes":[{"captured_at":"2026-11-14T01:16:14.169171","card_hash":"fe4ac1571c65afcb8f927b01b8b149ab8903985f07efe7e33f865f6f18d07cb4","previous_card_hash":null,"diff":{"skills_added":[{"id":"explain-figure","name":"Explain a figure","description":"Why a value is what it is: the evaluation trace behind one node in one period — its formula, each input's value and whether it came from a formula, an input, an actual override or an error. `depth` follows the trail further. Send a data part {\"skill\": \"explain-figure\", \"arguments\": {…}}; the arguments are the `explain` tool's.","tags":["explain","audit","trace"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"list-models","name":"List models","description":"The models this token can see: uid, title, head hash, when last changed, and the verification rung each is on. Send a data part {\"skill\": \"list-models\", \"arguments\": {…}}; the arguments are the `model_list` tool's.","tags":["models","list"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"model-overview","name":"Model overview","description":"The model at a glance: title, axis, scenarios, sections with node counts, ledgers, whether uncertainty is declared, the verification rung, check status per scenario and lint counts. Call this first. Send a data part {\"skill\": \"model-overview\", \"arguments\": {…}}; the arguments are the `model_overview` tool's.","tags":["models","overview"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"read-values","name":"Read values","description":"Evaluated values for named nodes across the axis in a scenario, actuals overriding where present. Errors appear as their code (#REF, #DIV/0). A node whose title carries references (`{{fiscal.royalty_threshold}}`) has it worked out in that scenario under `titles`, as the reader sees it. Ask for the nodes you need, not the model. Send a data part {\"skill\": \"read-values\", \"arguments\": {…}}; the arguments are the `values_get` tool's.","tags":["values","figures","forecast"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"search-model","name":"Search a model","description":"Find nodes by a word in their name, title, description, source, unit or formula, optionally restricted to a kind (input, calculated, constant, check, ledger). Returns declarations, not values. A kind with no query lists every node of that kind. Send a data part {\"skill\": \"search-model\", \"arguments\": {…}}; the arguments are the `model_search` tool's.","tags":["models","search"],"inputModes":["application/json"],"outputModes":["application/json"]},{"id":"verify-model","name":"Verify a model","description":"Run the verification ladder on the model as it stands: validation issues, every lint finding with its rule and node, every check per scenario with its failing periods, the rung, and `connectivity` — the inputs nothing reads, the inputs with no values, the calculated rows nothing reads or shows, the ledger columns no formula reads, and the rows of reported history nothing reads — which is whether the graph runs from inputs through formulas to outputs. `severalRates` lists any IRR whose cashflows have more than one rate, with every rate and the one the row shows. A row named as the model's answer, one `risk_set` reports, one a statistic asks about and one a scoped check covers are all read or shown, so none of them is listed. The authoritative answer to 'what is wrong'. Send a data part {\"skill\": \"verify-model\", \"arguments\": {…}}; the arguments are the `verify` tool's.","tags":["checks","lint","verify"],"inputModes":["application/json"],"outputModes":["application/json"]}],"skills_removed":[],"skills_changed":[],"fields_changed":[{"field":"name","before":null,"after":"GraphSheets"},{"field":"description","before":null,"after":"Reads financial models kept in GraphSheets: lists them, gives an overview, finds rows, returns evaluated values, explains how a figure is worked out and runs the model's checks. Read-only; answers are immediate."},{"field":"version","before":null,"after":"0.1.0"},{"field":"protocolVersion","before":null,"after":"1.0"},{"field":"url","before":null,"after":"https://mcp.graphsheets.ai/a2a"},{"field":"documentationUrl","before":null,"after":"https://graphsheets.ai/api/v1/docs#a2a"},{"field":"iconUrl","before":null,"after":"https://mcp.graphsheets.ai/apple-touch-icon.png"},{"field":"capabilities","before":null,"after":{"streaming":false,"pushNotifications":false,"stateTransitionHistory":false,"extensions":null}},{"field":"provider","before":null,"after":{"organization":"GraphSheets","url":"https://graphsheets.ai/"}}],"other_changed":true,"is_empty":false,"human_summary":"added 6 skills · name ∅ → GraphSheets · description ∅ → Reads financial models kept in GraphShee · version ∅ → 0.1.0 · protocolVersion ∅ → 1.0 · url ∅ → https://mcp.graphsheets.ai/a2a · documentationUrl ∅ → https://graphsheets.ai/api/v1/docs#a2a · iconUrl ∅ → https://mcp.graphsheets.ai/apple-touch-i · capabilities ∅ → extensions, pushNotifications, stateTran · provider ∅ → GraphSheets"}}]}