spirit-cards-mcp
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@spirit-cards-mcpshow me the current Spirit Cards collection stats"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
spirit-cards-mcp
A read-only Model Context Protocol (MCP) server for
Spirit Cards (Proof of Card) — a proof-of-work minted collectible card game on
Robinhood Chain — mainnet chainId 4663, live since 2026-10-05.
It runs over stdio, so Claude Desktop and Cursor can launch it
with npx. It fetches live game data from the hosted web API and computes the proof-of-work
locally with viem — so an agent can inspect the collection, verify a
nonce, or even grind a valid nonce, without a wallet, a private key, or a single transaction.
Read-only. No keys, no secrets, no signing, no sending. Every network call is a plain GET.
Quick start
Run with npx (after publishing)
npx spirit-cards-mcpRun from source
npm install
node src/index.mjs # starts the stdio server (logs to stderr)The server speaks MCP over stdin/stdout and logs only to stderr — it is normally launched by an MCP client, not by hand.
Related MCP server: loxcorp
Use in Claude Desktop
Add this to claude_desktop_config.json
(~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows):
{
"mcpServers": {
"spirit-cards": {
"command": "npx",
"args": ["-y", "spirit-cards-mcp"],
"env": { "SPIRIT_CARDS_API": "https://spiritcards.fun" }
}
}
}Use in Cursor
Add this to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):
{
"mcpServers": {
"spirit-cards": {
"command": "npx",
"args": ["-y", "spirit-cards-mcp"],
"env": { "SPIRIT_CARDS_API": "https://spiritcards.fun" }
}
}
}Configuration
Env var | Default | Meaning |
|
| Base URL of the hosted site/API |
All data endpoints are read-only GETs:
/.well-known/ai.json— project descriptor (chain id, core contract, mechanics, links)/stats/current.json— live supply, price, required difficulty (baseBits), cooldown/api/meta/{tokenId}— card metadata/api/points— points leaderboard/api/pool— staking pool / emissions snapshot (accrued pool, split shares, vault weight)/api/recent— recent on-chain activity
Tools
Tool | Args | Description |
| — |
|
| — | Live stats: supply, price, |
|
| Card metadata ( |
|
| Points leaderboard, trimmed to |
| — | Staking pool: accrued pool, split shares, vault weight (undistributed) |
|
| Recent events, trimmed to |
|
| Verify a nonce's work locally (no tx): |
|
| Grind nonce 0.. until valid (~20 s wall cap) |
| — | Step-by-step mint guide with live price/difficulty/cooldown |
Proof-of-work
A nonce is valid when:
work = keccak256(abi.encodePacked(uint256 chainId, address core, address miner, uint256 nonce))
leadingZeroBits(work) >= baseBitsBoth verify_nonce and find_nonce compute this locally with viem's keccak256 over
concatHex([chainId, core, miner, nonce]) — byte-for-byte identical to Solidity's
abi.encodePacked.
Prompts
Prompt | Args | Description |
| — | Introduce the game to a newcomer (calls the info + stats tools) |
|
| Walk through finding a nonce and the exact mint transaction |
Hosted HTTP MCP
Prefer HTTP over stdio? The same server is also hosted at:
https://spiritcards.fun/api/mcpLicense
MIT © 2026 Spirit Cards (Proof of Card). See LICENSE.
Available Tools
9 toolsfind_nonceFind a valid PoW nonceAInspect
Grind nonce = 0,1,2,... locally until leadingZeroBits(work) >= the live required difficulty. Bounded by maxAttempts (default 1,000,000, hard cap 5,000,000) and a ~20s wall-clock cap. Read-only; returns the nonce to submit to mine(); it does not send a transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| miner | Yes | miner address used in the preimage | |
| maxAttempts | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden and does so well: it declares local CPU grinding, a maxAttempts bound (default 1,000,000, hard cap 5,000,000), a ~20s wall-clock cap, and that it is read-only and never sends a transaction. Resource cost, side-effect profile, and termination conditions are all disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three dense sentences, front-loaded with the core algorithm and followed by bounds, then side-effect profile. Nothing is padding; each clause adds a fact an agent needs (attempt limit, time limit, read-only, no transaction).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema and no annotations, so the description must carry return-value detail, and it only partially does: it says it 'returns the nonce' but not the response shape. It also omits the failure mode when the attempt or 20s cap is exhausted, leaving the agent without guidance on handling an unsuccessful grind.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (miner is documented, maxAttempts is not). The description explains the operational meaning of maxAttempts as the bound on grinding attempts and adds the extra semantic that a ~20s wall-clock cap can terminate the search earlier, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource with unusual precision: it grinds nonce = 0,1,2,... locally until leadingZeroBits(work) >= the live difficulty. It also draws a clean line against the write path ('does not send a transaction'), but it never names the closest sibling verify_nonce, which is the tool an agent would most likely confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: 'returns the nonce to submit to mine()' tells the agent where the output goes, which situates it in the mining workflow. However there is no explicit when-to-use/when-not guidance and no routing to verify_nonce for checking a candidate nonce, so the agent must infer its place in the sequence.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_cardGet card metadataCInspect
Fetch on-chain card metadata for a tokenId (/api/meta/{tokenId}).
| Name | Required | Description | Default |
|---|---|---|---|
| tokenId | Yes | ERC-721 token id |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that data is fetched on-chain (authoritative source) and reveals the underlying endpoint, but says nothing about failure behavior for nonexistent tokenIds, rate limits, auth requirements, or caching.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no padding; the core action and scope come first. The trailing endpoint path is of marginal value to an agent but costs little.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter read with no output schema, the description adequately conveys what is returned (card metadata). It omits any hint of the response shape or error semantics, which for a one-liner read tool is a minor but real gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% ('ERC-721 token id'), so the parameter is already fully documented. The description only restates that the tokenId identifies the card, adding no syntax, range, or format detail beyond the schema — the baseline 3 for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (on-chain card metadata) scoped to a tokenId, which cleanly separates it from aggregate siblings like get_collection_stats or get_leaderboard. It does not, however, explicitly name or contrast itself against any sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no alternative is named. The only implicit signal is the required tokenId, which suggests 'call when you have a token id,' but the agent must infer this.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_collection_statsGet collection statsAInspect
Live collection stats (/stats/current.json): supply, price, required PoW bits, cooldown, paused flag.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It usefully discloses that the data is 'Live' and cites the backing endpoint (/stats/current.json), implying freshness rather than caching, and it lists the exposed fields. It says nothing about auth requirements, rate limits, or error behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence, front-loaded with the resource and endpoint, followed by the payload contents. No filler or redundant restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by enumerating the returned fields, which is the key thing an agent needs to know before calling. For a zero-param read tool this is nearly complete; only auth/freshness caveats are absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. The field enumeration adds meaning about the response, not about parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('collection stats') and enumerates exactly what is returned: supply, price, PoW bits, cooldown, paused flag. This distinguishes it from siblings like get_card or get_pool, though it never explicitly contrasts with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus alternatives such as get_project_info or get_leaderboard. Usage is only implied by the name and the field list; no conditions, prerequisites, or exclusions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_leaderboardGet points leaderboardBInspect
Fetch the points leaderboard (/api/points), trimmed to limit wallets.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It discloses one useful trait (results are trimmed to `limit` wallets), but says nothing about ordering (points descending?), scope (global vs. per-project), freshness, auth requirements, or whether results are paginated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the action and resource, then adds the one qualifier that matters. Nothing is wasted and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-param read tool this is nearly sufficient, but with no output schema the description should at least sketch what a leaderboard entry contains (wallet address plus points/rank). That omission is the main gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the single param is documented only as an integer with a default and max. The phrase 'trimmed to `limit` wallets' adds real meaning by clarifying the unit of the limit (wallets, not entries or pages), which the schema does not say.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and resource (points leaderboard) and even names the backing endpoint (/api/points). No sibling tool overlaps this resource, so differentiation is implicitly satisfied, though the description never explicitly contrasts itself with any sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use guidance, no prerequisite or auth notes, and no mention of alternatives. The only implied usage is 'call this to get the leaderboard', which the name already conveys.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_mining_guideGet the mining guideAInspect
Step-by-step guide to mint a Spirit Card: the PoW rule, live difficulty/price/cooldown, the exact contract call, and where to get the miner.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose that the returned guide includes live data (difficulty, price, cooldown) alongside static instructions, which is useful behavioral context for a zero-parameter tool. It does not, however, state that the call is side-effect free or how fresh the 'live' values are.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a colon-delimited inventory of contents. Every clause adds distinct information and there is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Zero parameters, no output schema, and low complexity, so prose is the only channel needed to convey return content — and the description does enumerate what the guide contains. It is essentially complete for this tool, with only the freshness/side-effect details left unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate. Baseline 4 applies; the description correctly avoids inventing or implying any input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (a step-by-step guide to mint a Spirit Card) and enumerates its contents: PoW rule, live difficulty/price/cooldown, contract call, and miner source. That is far more informative than the bare name, though it does not explicitly differentiate itself from action-oriented siblings like find_nonce or verify_nonce.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent can infer you call this to learn the minting process before mining. There is no explicit when-to-use, no statement of prerequisites, and no routing to or away from the sibling tools (find_nonce/verify_nonce) that a mining agent would also need.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_poolGet staking poolAInspect
Fetch the live staking-pool / emissions snapshot (/api/pool): accrued pool and house revenue, the fee split shares, and the vault's total weight and undistributed rewards.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. 'Fetch' plus 'live snapshot' implies a read-only, current-state retrieval and lists the data returned, which is useful context, but it says nothing about permissions, caching/refresh semantics, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with the endpoint and the returned fields, no filler or restatement of the title. Every clause adds information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter read tool with no output schema, the description compensates by naming the returned data (accrued pool/house revenue, fee split shares, vault weight, undistributed rewards). It omits any response-shape or freshness detail, but that gap is minor at this complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing to document and the baseline of 4 applies. The description adds no parameter detail beyond the schema, but none is needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb (Fetch) plus a clearly bounded resource (the live staking-pool / emissions snapshot at /api/pool), with the returned facets enumerated. It is easily distinguished from siblings like get_project_info or get_collection_stats, and the endpoint path pins it to one distinct data source.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this tool, when not to, or what alternatives exist for pool/emissions data. The live-only nature is hinted at by 'live snapshot', but the agent must infer all usage conditions from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_project_infoGet project infoAInspect
Fetch the Spirit Cards machine-readable project descriptor (/.well-known/ai.json) plus a human summary of the game.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It reveals that two distinct payloads are returned (a well-known JSON descriptor and a human summary), which is more than the name conveys, but it says nothing about caching, authentication requirements, or whether the file can fail to exist. For a zero-param read tool this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence that front-loads the primary output (the descriptor) and appends the secondary output. Every word earns its place with no redundant restatement of the title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no annotations, no output schema, and zero parameters, the description fully characterizes what the tool returns and where the machine-readable content lives. It lacks only details such as failure behavior or the distinction between the two payload formats, which keeps it short of perfect.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so by the rubric the baseline is 4. The description adds no parameter information, but none is needed, and the schema is fully empty and covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Fetch) and two concrete resources: the Spirit Cards machine-readable project descriptor at a named well-known path, plus a human summary of the game. This distinguishes it from sibling tools like get_card or get_pool, which return different resource categories.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the entry-point/overview tool by describing both machine-readable and human-facing outputs, but it does not explicitly state when to choose it over siblings such as get_mining_guide. No exclusions are named, so the agent must infer the usage boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_recent_activityGet recent activityCInspect
Fetch recent on-chain events (/api/recent), trimmed to limit events.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it delivers little. 'Fetch' implies a read, but there is no disclosure of ordering, time window, pagination, rate limits, or what an 'event' contains beyond the endpoint path.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with a parenthetical endpoint and no filler. It is efficient, though the extreme terseness leaves useful context unstated rather than trimming waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a data-fetch tool with no output schema and no annotations, the description should say what constitutes an event, what window 'recent' covers, and the return shape. None of that is present, leaving the agent with an under-specified contract.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate, and it partially does: 'trimmed to `limit` events' explains that limit caps the number of returned events. However, it adds no boundary info (the schema's max 1000, exclusiveMinimum 0) or default behavior, so the compensation is only partial.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Fetch recent on-chain events') and even names the backing endpoint (/api/recent), so the agent knows exactly what data comes back. It is distinguishable from siblings like get_collection_stats or get_leaderboard, though it never explicitly contrasts itself with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool, when not to, or which sibling to prefer for adjacent data (e.g. get_collection_stats vs recent activity). Usage must be inferred entirely from the word 'recent'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_nonceVerify a PoW nonceAInspect
Locally compute keccak256(chainId || core || miner || nonce) and check whether its leadingZeroBits reaches the live required difficulty. Read-only; no transaction is sent.
| Name | Required | Description | Default |
|---|---|---|---|
| miner | Yes | miner address used in the preimage | |
| nonce | Yes | candidate nonce (integer or decimal string) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does disclose meaningful traits: the computation is local, the result is compared against a 'live' required difficulty (implying chain-state dependence), and no transaction is broadcast. It omits what happens on failure or whether it returns a boolean vs a bit count, but the safety/behavior profile is substantially covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler, with the operation and its acceptance test front-loaded before the read-only caveat. Every clause carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description should describe the return value; it implies a pass/fail check against difficulty but never states the actual return shape (boolean, bits, difficulty value). The missing inputs chainId and core are also unexplained, though the algorithm sentence hints they come from live state.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description goes further by showing exactly where 'miner' and 'nonce' sit in the preimage (chainId || core || miner || nonce), giving the parameters positional meaning the schema's terse descriptions do not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation: locally computing keccak256(chainId || core || miner || nonce) and checking leadingZeroBits against live difficulty. The verb 'verify' plus the exact preimage and acceptance criterion clearly distinguishes it from the sibling find_nonce (search) without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage context ('verify a PoW nonce') and adds 'Read-only; no transaction is sent,' but never says when to pick this over find_nonce or when verification is needed (e.g., before submitting). Usage is implied rather than stated with exclusions or an alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
find_nonce - First observed
get_card - First observed
get_collection_stats - First observed
get_leaderboard - First observed
get_mining_guide - First observed
get_pool - First observed
get_project_info - First observed
get_recent_activity - First observed
verify_nonce
TDQS
Scored across 9 tools
Each tool targets a distinct endpoint or action: info, stats, card metadata, leaderboard, activity, pool, and PoW helpers. verify_nonce and find_nonce are closely related but clearly differentiated (check a given nonce vs. grind for one), and the read-only guide is distinct from all data fetches. Minor potential overlap between get_collection_stats and get_pool, but descriptions keep them separable.
Eight of nine tools follow a predictable verb_noun snake_case pattern (get_*, verify_*, find_*), using get_ for data retrieval and action verbs for computations. Fully consistent and readable throughout.
Nine tools is well-scoped for a read/query plus PoW-helper server. Each tool maps to a discrete endpoint or computation, with no redundant fillers.
Covers the read surface thoroughly (project, stats, card, leaderboard, activity, pool) plus the full PoW workflow (verify, find, guide). The notable gap is a submit/mint operation to actually send the mined nonce to mine(), though the read-only design is stated deliberately and the guide explains the external call.
Maintenance
Related MCP Connectors
Read-only Robinhood Chain token research via GMGN, built for Agentcity agents and any MCP client.
Look up AI agents on Robinhood Chain: ERC-8004 identity, feedback and USDG-backed trust scores.
Read Robinhood Chain live: scan a token, trace its deployer, list new launches.
Read-only Animica chain data, free AI inference, verifiable quantum randomness, and mining stats.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables agents to query live Robinhood Chain data including tokens, wallets, Chainlink feeds, heat scores, and tracking error on tokenized equities, all read-only without API keys.418 npmMIT
- AlicenseNot gradedqualityCmaintenanceProvides live, read-only access to Robinhood Chain and Lox Corp data, enabling AI agents to query chain stats, token launches, agent details, and more.7 npmMIT
- FlicenseNot gradedqualityBmaintenanceEnables AI agents to inspect the public NFH protocol corpus, verify census status, and prepare bounded Ethereum wallet intents for claims and non-custodial market actions while never signing or submitting transactions.1-
- AlicenseAqualityBmaintenanceEnables LLM agents to inspect Proof of Architect NFT collection stats, token data, PoW difficulty and pricing, and verify mined nonces and craft commits on Arc testnet without sending transactions.7MIT