Skip to content
Back to search
A2A live JSON-RPC A2A 1.0 v0.1.0

GraphSheets

mcp.graphsheets.ai · GraphSheets

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.

Sign in to save Compare Sign in to watch
Conformance
51/100
grade D · 9 criteria
Uptime
not measured
no direct probes in 30d
Observed inflow · 30d
—
no payment wallet declared
Invocations · 7d
0
no calls observed
Card drift · 7d
stable
1 snapshot tracked
Owner
unverified
claim this listing →
D
Conformance score: 51/100
D-grade: significant issues, auth-gated, partially broken, or stale.
Show breakdown Hide breakdown

Declare your skills · 10 points available for skill declaration

partial Valid AgentCard 9/10
Declares A2A 1.0 but is missing v1.0 REQUIRED field: supportedInterfaces.
How to earn +1 point
Publish a parseable A2A AgentCard
Serve a valid AgentCard JSON at /.well-known/agent-card.json. The A2A 1.0 schema is the reference; we accept the v0.x backwards-compatible variant too.
Docs
pass Live JSON-RPC 25/25
Endpoint responds to a negotiated A2A SendMessage probe.
partial Protocol version 8/10
Declares A2A 1.0 but missing supportedInterfaces[] (required in v1.0, update your card to reach 10/10).
How to earn +2 points
Declare protocolVersion
Add `"protocolVersion": "1.0"` (Major.Minor, no patch number — §3.6) to every entry in `supportedInterfaces[]`. A2A v1.0 removed the AgentCard root field.
Docs
info JWS signature 0/10
Card is unsigned (most published agents are).
info Uptime track record 0/15
Only 0 probes so far, need ≥5 for an uptime grade.
fail Skill declaration 0/10
No skills declared in card. Hard to route to.
How to earn +10 points
Declare your skills
Add at least one entry to the `skills` array on the AgentCard, each with `id`, `name`, `description`, `tags` — `description` and `tags` are REQUIRED on AgentSkill since A2A v1.0, and tags are what discovery filters match on. We canonicalise these into the global skill taxonomy on next probe.
Docs
partial Verified Identity 5/10
Provider declared: GraphSheets (https://graphsheets.ai/). Add a registry identifier (LEI, Companies House number, KvK, ABN, …) to provider.legalEntity for full verified-business credit.
How to earn +5 points
Verify your domain ownership
Claim your listing and add the DNS TXT record we generate. Alternatively, sign your card with a JWS key that resolves to a verified-business LEI / KvK / Companies House registration.
Docs
pass Freshness + modern flags 4/5
seen in upstream source within 0d
info Security declaration 0/5
Neither securitySchemes nor securityRequirements declared — how to authenticate is unstated.

Activity

last 24h · 0 invocations No personal data recorded

No activity in the last 7 days.

Card history

1 snapshot
Snapshots
Agent card snapshots
Captured Hash Snapshot
2026-11-14 01:16:14 current fe4ac1571c65… view →
Uptime
not measured
0 direct probes · 30d
Response
—
no direct probe retained
Skills
6
declared
Streaming
—
SSE-capable

Try it

Sent live, through Agenstry.

calling agent… ⌘/Ctrl + Enter

Endpoints

Agent cardhttps://mcp.graphsheets.ai/a2a
Providerhttps://graphsheets.ai/
Docshttps://graphsheets.ai/api/v1/docs#a2a
Discovered via
a2aregistry

Health · last 0 probes

Probe log
When HTTP Live JSON-RPC Latency
No direct probes in the last 30 days.

Similar agents

Stocks On Chain live
Read-only data on tokenized stocks: which companies are on chain, which issuer put them there, on which chain, at which contract address, an
Gwei, Inc. · q 100%
tokenguard
Pay-per-call data API for AI agents: ERC-20 rug/safety scanning, wallet + contract intelligence, DeFi/TVL/yields, market and macro data, new
eltociear · q 78%
Graph Advocate live
Onchain data router for AI agents. Plain-English queries return a working GraphQL query, subgraph ID, or REST call. 15,500+ subgraphs (Unisw
PaulieB14 · q 100%
modelmarket.dev live
Search a live federated market of executable AI capabilities. Results include price, trust basis, latency, seller and the input required bef
modelmarket.dev · q 100%
Agent Market live
AI agents buy and sell general work in USDC on Base: text, code, research, analysis, encrypted media files and action receipts. The buyer ch
q 100%
DeFi Intel Agent Gateway
Paid DeFi data tools via x402 (USDC on Base): 40 edge microservices — stablecoin supply, protocol health, research verify, web scraping/mark
defi-intel-agent-gateway.gg-neo15.workers.dev · q 0%
Embed a badge

Updates itself and links back here.

Agenstry grade Uptime A2A protocol version
[![Agenstry grade](https://agenstry.com/badge/mcp.graphsheets.ai.svg)](https://agenstry.com/agents/mcp.graphsheets.ai)
[![Verified Business](https://agenstry.com/badge/mcp.graphsheets.ai/identity.svg)](https://agenstry.com/agents/mcp.graphsheets.ai)
[![Uptime](https://agenstry.com/badge/mcp.graphsheets.ai/uptime.svg)](https://agenstry.com/agents/mcp.graphsheets.ai)
[![A2A version](https://agenstry.com/badge/mcp.graphsheets.ai/protocol.svg)](https://agenstry.com/agents/mcp.graphsheets.ai)

Audit evidence

JSON for vendor reviews. Signed copy verifies against our JWKS.

audit.json audit.json (JWS-signed) verification history
Raw agent card JSON
{
  "name": "GraphSheets",
  "url": "https://mcp.graphsheets.ai/a2a",
  "description": "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.",
  "version": "0.1.0",
  "documentationUrl": "https://graphsheets.ai/api/v1/docs#a2a",
  "iconUrl": "https://mcp.graphsheets.ai/apple-touch-icon.png",
  "defaultInputModes": [
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json"
  ],
  "skills": [
    {
      "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\": {\u2026}}; the arguments are the `model_list` tool's.",
      "tags": [
        "models",
        "list"
      ],
      "examples": [
        "{\"skill\":\"list-models\",\"arguments\":{}}"
      ],
      "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\": {\u2026}}; the arguments are the `model_overview` tool's.",
      "tags": [
        "models",
        "overview"
      ],
      "examples": [
        "{\"skill\":\"model-overview\",\"arguments\":{\"model\":\"model_\u2026\"}}"
      ],
      "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\": {\u2026}}; the arguments are the `model_search` tool's.",
      "tags": [
        "models",
        "search"
      ],
      "examples": [
        "{\"skill\":\"search-model\",\"arguments\":{\"model\":\"model_\u2026\",\"query\":\"revenue\"}}"
      ],
      "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\": {\u2026}}; the arguments are the `values_get` tool's.",
      "tags": [
        "values",
        "figures",
        "forecast"
      ],
      "examples": [
        "{\"skill\":\"read-values\",\"arguments\":{\"model\":\"model_\u2026\",\"nodes\":[\"income.revenue\"],\"scenario\":\"base\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "explain-figure",
      "name": "Explain a figure",
      "description": "Why a value is what it is: the evaluation trace behind one node in one period \u2014 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\": {\u2026}}; the arguments are the `explain` tool's.",
      "tags": [
        "explain",
        "audit",
        "trace"
      ],
      "examples": [
        "{\"skill\":\"explain-figure\",\"arguments\":{\"model\":\"model_\u2026\",\"node\":\"income.profit\",\"period\":\"2026-03\"}}"
      ],
      "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` \u2014 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 \u2014 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\": {\u2026}}; the arguments are the `verify` tool's.",
      "tags": [
        "checks",
        "lint",
        "verify"
      ],
      "examples": [
        "{\"skill\":\"verify-model\",\"arguments\":{\"model\":\"model_\u2026\",\"onlyFailing\":true}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false,
    "extensions": null
  },
  "protocolVersion": "1.0",
  "provider": {
    "organization": "GraphSheets",
    "url": "https://graphsheets.ai/"
  }
}