Skip to main content
Glama
spiritcards

spirit-cards-mcp

Official
by spiritcards

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-mcp

Run 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

SPIRIT_CARDS_API

https://spiritcards.fun

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

get_project_info

—

/.well-known/ai.json + a composed human summary

get_collection_stats

—

Live stats: supply, price, baseBits, cooldown, paused flag

get_card

tokenId

Card metadata (/api/meta/{tokenId})

get_leaderboard

limit? (default 25)

Points leaderboard, trimmed to limit

get_pool

—

Staking pool: accrued pool, split shares, vault weight (undistributed)

get_recent_activity

limit? (default 10)

Recent events, trimmed to limit

verify_nonce

miner, nonce

Verify a nonce's work locally (no tx): {work, leadingZeroBits, valid}

find_nonce

miner, maxAttempts? (≤5M)

Grind nonce 0.. until valid (~20 s wall cap)

get_mining_guide

—

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) >= baseBits

Both 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

project_overview

—

Introduce the game to a newcomer (calls the info + stats tools)

start_mining

wallet?

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/mcp

License

MIT © 2026 Spirit Cards (Proof of Card). See LICENSE.

Available Tools

9 tools
find_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
minerYesminer address used in the preimage
maxAttemptsNo

TDQS

A4/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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}).

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenIdYesERC-721 token id

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

B3.1/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness2/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
minerYesminer address used in the preimage
nonceYescandidate nonce (integer or decimal string)

TDQS

A4.1/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 9 tool updatesv0.1.0
    • First observedfind_nonce
    • First observedget_card
    • First observedget_collection_stats
    • First observedget_leaderboard
    • First observedget_mining_guide
    • First observedget_pool
    • First observedget_project_info
    • First observedget_recent_activity
    • First observedverify_nonce

TDQS

A3.7/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables 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.
    4
    18 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides 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 npm
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables 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
    -
  • A
    license
    A
    quality
    B
    maintenance
    Enables 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.
    7
    MIT