Skip to main content
Glama
okwithit9-debug

permitverdict-mcp

permitverdict-mcp

MCP server for Permit Verdict. Eleven tools, six of them free. The paid ones cost between one cent and two dollars per call and pay themselves, in USDC on Base, using the x402 protocol.

There is no API key, no account, and no signup. If you have a funded wallet, you have access.

What it sells

Settlement Oracle — did a crypto price event actually happen? Every verdict is resolved independently across Hyperliquid, Coinbase and Kraken. (Binance is configured but returns 451 to the host's region, so it is reported unavailable rather than silently counted — three venues we can reach beats four we cannot.) When the venues agree you get YES or NO at high confidence. When they disagree you get DISPUTED at low confidence, because a wick that prints on one exchange and not another is the single most common reason a market settles the wrong way, and a confident answer in that situation is worse than no answer.

Permit Intelligence — building-permit history, activity signals, and a decision-ready verdict for an address, drawn from official city open-data portals across seven US cities.

Related MCP server: rugmunch-solana

Install

{
  "mcpServers": {
    "permitverdict": {
      "command": "npx",
      "args": ["-y", "permitverdict-mcp"]
    }
  }
}

That works immediately, with no wallet. You get the six free tools.

To enable the paid tools, add a wallet:

{
  "mcpServers": {
    "permitverdict": {
      "command": "npx",
      "args": ["-y", "permitverdict-mcp"],
      "env": { "WALLET_PRIVATE_KEY": "0xYOUR_PRIVATE_KEY" }
    }
  }
}

Fund it with a few dollars of USDC on Base. You do not need any ETH — gas is sponsored by the x402 facilitator, so only USDC is ever spent.

Tools

Tool

Price

What it does

wallet_status

free

Whether a wallet is configured, and its address

list_settlement_assets

free

Assets, venues, operators and modes the oracle supports

check_venue_health

free

Which venues are answering right now

decode_decision_id

free

Is this attestation genuine, and what does it claim?

list_jurisdictions

free

Cities covered by permit intelligence

check_permit_activity

free

Whether an address has recent permit activity

get_crypto_spot

$0.01

Cross-venue spot price, agreement and spread

verify_decision

$0.02

Does an attested settlement still hold today?

resolve_price_event

$0.05

Settlement verdict with per-venue evidence

attest_price_event

$0.25

The verdict plus a signed decision_id and every candle behind it

get_permit_verdict

$2.00

Full permit history and verdict for an address

Free tools first is deliberate. check_venue_health tells you how many independent venues are live before you spend anything, so you know whether the verdict you are about to buy will be corroborated by three sources or one.

Attestations, and why verifying one is cheap

attest_price_event returns a decision_id that is worth keeping. It is not a database key — everything needed to re-derive the answer is encoded inside it, and it is signed by the same wallet that received your payment. That has two consequences.

Anyone you show it to can check its origin for free with decode_decision_id. Forgery and after-the-fact editing are both detectable, and it costs nobody anything, because checking a signature is local arithmetic. You can also do it yourself with any EVM tooling: the signature covers the literal string formed by the id's first two dot-separated parts, and it should recover to 0xE11d7Ff8c7573b15F9F6F6d4961Afb4109d3ddA5.

What that free check does not tell you is whether the verdict is still correct. Exchanges revise candle history, and a venue that was unreachable when the record was issued may answer differently now. verify_decision re-resolves the same event against the venues today and returns CONFIRMED, CHANGED, or INDETERMINATE. It costs $0.02 rather than the $0.05 of a fresh resolution because you are not buying an answer, you are buying a check on someone else's — and if you are about to act on a settlement handed to you by a counterparty, that check is worth two cents.

CHANGED is the outcome that earns the fee.

touch vs close

resolve_price_event takes a mode, and getting it wrong is how settlements go bad.

touch counts any intrabar print, wicks included. close counts only candle closes. On the same window and the same threshold these routinely disagree. Most carefully written markets settle on closes; most casual bets mean touches. Pick the one your contract actually says.

Payment receipts

Every paid response carries a _payment block with the on-chain transaction that paid for it:

{
  "verdict": "YES",
  "confidence": "high",
  "_payment": {
    "paid": "$0.05",
    "payer": "0xFE5d…D108",
    "transaction": "0x88d3…7b1e",
    "explorer": "https://basescan.org/tx/0x88d3…7b1e",
    "network": "eip155:8453"
  }
}

If an agent spends money on a verdict it may later have to defend, it should be able to cite the transaction that bought it.

Security

Your private key stays on your machine. It is read once from the environment, used to derive a local signing account, and never logged or transmitted — the only thing that leaves is a signature over the specific payment the API asked for. This package makes no outbound requests other than to permitverdict.com and the x402 facilitator.

Use a dedicated wallet holding only what you intend to spend. Do not point this at a wallet that holds anything you would mind losing.

Development

npm install
npm test

The test suite starts the real binary and speaks MCP to it over stdio. That is on purpose: the failure mode worth catching is the one where every unit test passes and the process still cannot start.

License

MIT

Available Tools

11 tools
attest_price_eventA
Read-onlyIdempotent
Inspect

PAID — $0.25 USDC. Everything resolve_price_event returns, plus a signed decision_id, an integrity hash over the evidence, and every candle that determined the outcome. This is the citable artifact: use it when the answer may later have to be defended to a counterparty, not when you just need to know. KEEP THE decision_id. It is self-contained — anyone you show it to can authenticate it for free with decode_decision_id, and confirm the verdict still holds for $0.02 with verify_decision, without you having to supply anything else. Pays automatically from the configured wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO-8601 window end. Defaults to now.
fromNoISO-8601 window start. Defaults to 24h before `to`.
modeNotouch (default) or close
assetYesAsset symbol, e.g. BTC, ETH, SOL
operatorYesComparison against the threshold
thresholdYesPrice threshold in USD

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnlyHint, idempotentHint, non-destructive), the description discloses a critical behavioral trait: it is PAID ($0.25 USDC) and 'pays automatically from the configured wallet.' It also instructs the user to keep the decision_id and explains the self-contained nature of the artifact. This is valuable contextual information not present in annotations.

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?

The description is concise yet information-dense. Each sentence contributes: cost, output contents, use case, decision_id handling, self-containment, and payment behavior. It is front-loaded with the most important fact (PAID) and follows a logical structure, with no fluff or repeated information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given that the tool has no output schema, the description compensates by listing exactly what is returned (resolve_price_event's output plus decision_id, hash, candles). It also covers cost, the verification pathway, and the requirement to retain the decision_id. This is complete enough for an agent to correctly decide when and how to invoke the tool.

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?

The input schema provides 100% coverage with descriptions for all six parameters, so the schema already carries the semantic load. The description does not add extra meaning to parameters like asset, operator, or threshold, nor does it explain the meaning of 'mode' or time window formats. Baseline 3 is appropriate because the description is not misleading but also adds no parameter-specific value.

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?

The description clearly states the tool's purpose: it produces an attested, citable settlement record by returning everything resolve_price_event returns plus a signed decision_id, integrity hash, and outcome-determining candles. It explicitly positions itself as the 'citable artifact' for defending to counterparties, distinguishing it from the plain resolve_price_event and other sibling tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit when-to-use guidance: 'use it when the answer may later have to be defended to a counterparty, not when you just need to know.' It also explains the verification alternatives (decode_decision_id free, verify_decision for $0.02), providing actionable context for choosing this tool versus cheaper alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_permit_activityA
Read-onlyIdempotent
Inspect

FREE. Whether a given address has recent permit activity, and how much. A yes/no screen — use get_permit_verdict when you need the full history and a decision.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesStreet address, e.g. '760 14th St'
jurisdictionYesCovered city slug, e.g. san_francisco. See list_jurisdictions.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish the read-only, non-destructive nature. The description adds the behavioral trait that the result is a yes/no screen (not a full report) and that it covers 'recent' activity, which helps set expectations. It does not detail output formatting or error handling, but for a simple read operation with strong annotations, this adds sufficient context.

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?

The description is very brief and front-loaded with 'FREE.' which is extraneous and not pertinent to tool invocation. The remaining text is efficient and directly useful, consisting of a purpose statement and an alternative reference.

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 simple 2-parameter read-only tool with no output schema, the description conveys the screening nature and directs to get_permit_verdict for more depth. This is sufficient for an agent to decide when to call it, though it leaves the exact response format underspecified.

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?

The input schema already includes descriptions for both parameters (address and jurisdiction) with 100% coverage. The description references 'given address' but adds no additional semantics beyond the schema, so it doesn't enhance parameter understanding.

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?

The description clearly states the tool checks whether an address has recent permit activity and to what extent, using a yes/no screening format. It explicitly distinguishes this from get_permit_verdict, which provides full history and a decision.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides explicit guidance on when to use this tool vs the alternative: use get_permit_verdict when full history and a decision are needed. This is an explicit when-to-use and when-not-to-use statement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

check_venue_healthA
Read-onlyIdempotent
Inspect

FREE. Which price venues are answering right now, and how many independent sources are behind a verdict. Worth calling before you spend: a verdict corroborated by three venues is worth more than one backed by a single venue, and this tool tells you which you are about to buy.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetNoAsset to probe with. Defaults to BTC.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already mark this as read-only and non-destructive, so the description adds valuable context: cost (FREE), real-time venue status, and source count. This goes beyond annotations without contradicting them.

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, zero wasted words. First sentence states the core function, second provides usage motivation. Information is front-loaded and every clause earns its place.

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 simple read-only tool with one optional parameter and no output schema, the description covers purpose, usage timing, and value. It could mention output format, but the domain context and annotations make it sufficient.

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 100% for the single optional asset parameter, which already describes its default. The description does not add extra meaning about parameters, matching the baseline of 3 for high schema coverage.

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?

The description clearly states the tool checks which price venues are answering and how many independent sources back a verdict. This specific verb+resource combination distinguishes it from siblings like get_crypto_spot or resolve_price_event.

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?

It explicitly says to call this before spending, explaining that verdicts corroborated by multiple venues are more valuable. It lacks exclusions or alternatives, but the usage context is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

decode_decision_idA
Read-onlyIdempotent
Inspect

FREE. Given a Permit Verdict decision_id — one you were shown by a counterparty, or one you issued earlier — read what it claims and check whether Permit Verdict actually issued it. The decision_id is signed by the same wallet that receives payment, so forgery and after-the-fact editing are both detectable. Costs nothing and needs no wallet. This tells you the record is genuine; it does NOT tell you the verdict is still correct — use verify_decision for that.

ParametersJSON Schema
NameRequiredDescriptionDefault
decision_idYesA decision_id of the form pv1.<payload>.<signature>

TDQS

A4.9/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, non-destructive, idempotent), the description reveals how signatures work, that forgery/editing is detectable, and that authentication does not imply current correctness. This adds significant behavioral context and does not contradict the annotations.

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?

The description is four sentences, each earning its place: cost, purpose, mechanism, and caveat/alternative. It is front-loaded with 'FREE' and structured logically, making it highly scannable and efficient.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity, rich annotations, and clear scope, the description is complete. It covers what it does, how it works, when to use it, what it does not do, and points to the correct sibling tool. No critical information appears missing.

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 schema provides 100% coverage for the single parameter, explaining its format. The description adds semantic meaning beyond the schema by explaining that the signature is from the payment wallet, which conveys why the decision_id is authenticatable. This enriches the parameter's meaning.

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?

The description precisely states it decodes a decision_id and checks whether Permit Verdict actually issued it, using specific verbs and the resource. It also differentiates from the sibling verify_decision by explicitly stating it does NOT assess current correctness. This is a clear, specific purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains when to use it (for decision_ids shown by a counterparty or issued earlier) and explicitly directs users to verify_decision for checking validity. It also notes it costs nothing and needs no wallet, providing clear context for usage.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_crypto_spotA
Read-onlyIdempotent
Inspect

PAID — $0.01 USDC. Live cross-venue spot price with venue agreement and spread. A wide spread means the venues disagree and any settlement priced in that range is contestable. Pays automatically from the configured wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetYesAsset symbol, e.g. BTC, ETH, SOL

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses the $0.01 cost and automatic payment from the configured wallet, which are behavioral traits not present in the annotations. It also explains the interpretation of spread (venues disagree, settlement contestable), adding significant context beyond the readOnly/openWorld hints.

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 sentences, front-loaded with cost, then function, then a caveat. Each sentence earns its place with no redundant phrasing, making it efficiently concise and well-structured.

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 one-parameter read-only tool with rich annotations, the description covers the essential aspects: cost, payment behavior, and price interpretation. It does not specify the quote currency or return structure, but given the simple schema and annotation coverage, it is sufficiently complete for selection and invocation.

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?

The input schema fully describes the sole 'asset' parameter with examples (BTC, ETH, SOL), achieving 100% coverage. The description adds no additional parameter details, but none are necessary given the schema's completeness.

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?

The description clearly states 'Live cross-venue spot price' with a specific verb and resource, distinguishing it from sibling tools like resolve_price_event or attest_price_event. It explicitly mentions venue agreement and spread, which uniquely identifies its function.

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?

The description implies usage when a cross-venue spot price with venue agreement is needed and warns about wide spreads being contestable. However, it does not explicitly contrast with alternatives or state when not to use it, leaving the usage guidance merely implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_permit_verdictA
Read-onlyIdempotent
Inspect

PAID — $2.00 USDC. Address-level building-permit intelligence for a covered city: normalized permit history, activity signals, and a decision-ready verdict with cited public records. Run the free check_permit_activity first — if there is no activity, this call has nothing to add. Pays automatically from the configured wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYesStreet address, e.g. '760 14th St'
jurisdictionYesCovered city slug, e.g. san_francisco. See list_jurisdictions.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint, openWorldHint, idempotentHint, and destructiveHint. The description adds critical non-annotation behavior: it discloses the $2.00 USDC cost and states that payment happens automatically from the configured wallet. It also notes the tool provides nothing if no permit activity exists. No contradiction with annotations.

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?

The description is three sentences of dense, high-value information: cost, what it does, the pre-check workflow, and automatic payment. No filler or redundancy, and it is front-loaded with the PAID warning.

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?

Given the absence of an output schema, the description adequately summarizes what the tool returns (normalized history, activity signals, verdict with cited records). It covers cost, preconditions, and workflow. The only minor gap is the lack of an explicit structure for the 'verdict' output, but that does not prevent correct usage.

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% for both parameters, with clear examples (e.g., '760 14th St' and 'san_francisco') and a reference to list_jurisdictions. The description adds little beyond schema, such as reinforcing 'covered city,' but the schema already does the heavy lifting, so baseline 3 is appropriate.

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?

The description clearly states the tool provides 'address-level building-permit intelligence' with 'normalized permit history, activity signals, and a decision-ready verdict with cited public records.' It differentiates from the sibling free tool check_permit_activity by being paid and adding a verdict, and the title reinforces the $2.00 cost.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly directs the user to 'Run the free check_permit_activity first — if there is no activity, this call has nothing to add.' This provides a clear when-to-use and when-not-to-use condition, and the use of 'covered city' and jurisdiction slug gives contextual prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_jurisdictionsB
Read-onlyIdempotent
Inspect

FREE. Cities covered by the permit intelligence API, with pricing and payment details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, establishing its safety profile. The description adds 'FREE.' which hints at cost, but no additional behavioral traits like rate limits or authentication requirements are disclosed.

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?

The description is extremely concise, consisting of two fragments. 'FREE.' and 'Cities covered...' each add distinct information, though the sentence fragment structure could be smoother. Every word earns its place.

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?

Given the tool's simplicity (no parameters, no output schema, and comprehensive annotations), the description sufficiently sets expectations. It clearly states the resource and extra details, though it could clarify what 'pricing and payment details' specifically refers to.

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 has zero parameters, so there is no parameter documentation burden. The description adds context about the output content (cities with pricing/payment details), which compensates adequately for the absent schema 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?

The description identifies the resource (cities covered by the permit intelligence API) and notes additional content (pricing and payment details). The tool name and title clarify the action (list), making the purpose clear, though the description itself lacks an explicit verb.

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?

No guidance is provided on when to use this tool versus its siblings or any exclusions. The description only states what the tool returns, not the context for using it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_settlement_assetsA
Read-onlyIdempotent
Inspect

FREE. Which crypto assets, venues, operators and modes the settlement oracle supports, plus the price of each paid endpoint. Call this before resolve_price_event to confirm an asset is covered.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations (readOnly, idempotent, etc.), the description adds valuable behavioral context: it is FREE, it returns pricing information for paid endpoints, and it serves as a prerequisite confirmation step. These details are not present in the annotations and help the agent anticipate cost and usage 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?

The description is two sentences, front-loaded with 'FREE,' and every word contributes. It packs the tool's purpose, output scope, and usage relationship into a compact, well-structured format without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter tool with no output schema, the description fully explains what the tool returns (assets, venues, operators, modes, and prices) and gives usage context. It is sufficiently complete for an agent to select and invoke this tool correctly without additional information.

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 has zero parameters, so the schema offers no semantic burden. The description doesn't need to explain parameters, and it doesn't, but it also doesn't add any parameter-related meaning. The baseline for zero-parameter tools is 4, which is appropriate here.

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?

The description clearly states the tool's function: listing the crypto assets, venues, operators, and modes supported by the settlement oracle, plus prices for paid endpoints. It also explicitly distinguishes its role from the sibling tool resolve_price_event, making the purpose unambiguous.

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 gives explicit usage guidance by saying 'Call this before resolve_price_event to confirm an asset is covered,' which tells the agent when to use this tool in relation to a specific alternative. However, it does not provide exclusions for when not to use it (e.g., if you already know coverage), so it falls just short of a perfect score.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_price_eventA
Read-onlyIdempotent
Inspect

PAID — $0.05 USDC. Settlement verdict for a crypto price event: did the asset trade or close above/below a threshold during a window? Returns YES / NO / DISPUTED / UNRESOLVED with per-venue evidence and stated confidence. Choose mode carefully — 'close' counts only candle closes, 'touch' counts any intrabar print including wicks. They routinely give different answers, and that difference is the single most common cause of a disputed settlement. When venues disagree the result is DISPUTED at low confidence rather than a confident guess. Pays automatically from the configured wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO-8601 window end. Defaults to now.
fromNoISO-8601 window start. Defaults to 24h before `to`.
modeNotouch = any intrabar print counts (default); close = only candle closes count
assetYesAsset symbol, e.g. BTC, ETH, SOL
operatorYesComparison against the threshold
thresholdYesPrice threshold in USD

TDQS

A3.8/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotation contradiction: annotations declare readOnlyHint=true and idempotentHint=true, but the description states 'PAID — $0.05 USDC' and 'Pays automatically from the configured wallet.' This indicates a financial side effect that modifies wallet balance, contradicting the read-only and idempotent hints. Despite otherwise useful behavioral detail, the contradiction forces a score of 1.

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?

The description is concise yet front-loaded with the most critical facts: cost, purpose, return values, and mode selection. Every sentence contributes value—cost, outcome, mode warning, disagreement behavior, and payment. No fluff or redundancy.

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?

Despite no output schema, the description covers return values, evidence, confidence, venue disagreement behavior, and payment. It lacks explicit details about wallet configuration or edge cases, but for a tool with six parameters, it is largely complete and actionable.

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 parameters are already documented. The description adds important semantic context, especially for the 'mode' parameter: 'touch counts any intrabar print including wicks' and warns that 'the difference is the single most common cause of a disputed settlement.' This goes beyond the schema's dry enum descriptions.

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?

The description clearly states the tool's function: 'Settlement verdict for a crypto price event: did the asset trade or close above/below a threshold during a window?' It specifies the resource (price event), the action (resolve/settle), and the return outcomes (YES/NO/DISPUTED/UNRESOLVED). This distinguishes it from siblings that attest or verify decisions.

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 gives explicit guidance on mode choice: 'Choose mode carefully — close counts only candle closes, touch counts any intrabar print including wicks. They routinely give different answers.' It also explains why venues disagree leads to DISPUTED. It does not explicitly name alternative tools, but it provides clear context for when to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_decisionA
Read-onlyIdempotent
Inspect

PAID — $0.02 USDC. Re-resolve an attested settlement against the price venues right now and report whether it still holds: CONFIRMED, CHANGED, or INDETERMINATE. Call this whenever someone hands you a decision_id you are about to rely on. An attestation proves what was said at the time; only a fresh resolution proves it is still true — exchanges revise candle history, and a venue that was unreachable when the record was issued may answer differently now. CHANGED is the outcome that matters: it means acting on the original verdict would be acting on stale evidence. Cheaper than resolving fresh because you are checking someone else's answer rather than buying a new one. Pays automatically from the configured wallet.

ParametersJSON Schema
NameRequiredDescriptionDefault
decision_idYesA decision_id issued by attest_price_event

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the description doesn't need to restate safety. It adds valuable context beyond annotations: the $0.02 cost, automatic payment from the configured wallet, and the meaning of CHANGED as stale evidence. This exceeds minimal disclosure.

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?

Every sentence carries unique information: purpose, when to call, why it's needed, outcome semantics, cost comparison, and payment behavior. No filler or redundancy despite being a longer paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only tool, the description fully covers the use case, outcome values (CONFIRMED, CHANGED, INDETERMINATE), cost, and why freshness matters. Even without an output schema, the possible results are explicitly enumerated, making the tool self-sufficient.

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?

The input schema has 100% coverage for decision_id, describing it as issued by attest_price_event. The description only mentions that it comes from someone handing you a decision_id, which aligns with the schema without adding new syntax or format details. Baseline 3 applies since the schema does the heavy lifting.

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?

The description uses a specific verb ('verify') and resource ('attested settlement'), and clearly states the action: re-resolve against price venues and report CONFIRMED, CHANGED, or INDETERMINATE. It distinguishes itself from sibling tools like resolve_price_event by focusing on checking an existing decision rather than buying a fresh one.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs to call this whenever someone hands you a decision_id you are about to rely on. It also names the alternative (resolving fresh) and explains why this is cheaper, providing both when-to-use and when-not-to-use context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

wallet_statusA
Read-onlyIdempotent
Inspect

FREE. Whether a payment wallet is configured for this MCP server, and its address. Call this first if a paid tool reports it cannot pay.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint true, idempotentHint true, and destructiveHint false, so safety is covered. The description adds valuable context about the tool being free ("FREE.") and what it returns (wallet status and address), which goes beyond what annotations state. No contradictions found.

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?

The description is extremely concise: two short sentence fragments that immediately convey cost, purpose, and usage context. Every word adds value: "FREE.", the status/address purpose, and the "call first" guidance. It is front-loaded and wastes no space.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read-only status tool with no parameters and no output schema, the description is fully complete. It covers cost, purpose, return value, and a concrete use case. Sibling tools are clearly different, and annotations cover safety, so no additional context is necessary.

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 has zero parameters, so there is no parameter schema to enrich. The description mentions the address as part of the output, but no input parameters are needed. Baseline for 0 params is 4, and the description does not add anything needed here.

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?

The description clearly states that the tool reports whether a payment wallet is configured and its address, giving a specific purpose. "Whether a payment wallet is configured for this MCP server, and its address" distinguishes it from sibling tools like list_settlement_assets or get_crypto_spot, which focus on other financial aspects. The verb is implicit but unambiguous.

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 gives an explicit usage trigger: "Call this first if a paid tool reports it cannot pay." This provides clear when-to-use guidance and positions the tool as a diagnostic first step. It does not list exclusions or alternatives, but for a simple status check, this is sufficient context.

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. Dates show when Glama detected each change.

  1. 11 tool updatesv0.2.0
    • First observedattest_price_event
    • First observedcheck_permit_activity
    • First observedcheck_venue_health
    • First observeddecode_decision_id
    • First observedget_crypto_spot
    • First observedget_permit_verdict
    • First observedlist_jurisdictions
    • First observedlist_settlement_assets
    • First observedresolve_price_event
    • First observedverify_decision
    • First observedwallet_status

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose: wallet_status, crypto settlement support/health, price verification/attestation, decision verification, and permit intelligence are all separated. Even similar tools like resolve_price_event vs attest_price_event are clearly differentiated by the signed artifact and intended use.

Naming Consistency4/5

Most tools follow a consistent verb_noun pattern (list_, check_, get_, resolve_, decode_, verify_, attest_), but `wallet_status` deviates as a noun phrase, preventing a perfect score. The verbs are otherwise clear and uniform.

Tool Count5/5

With 11 tools, the set is well-scoped for covering two coherent domains (crypto settlement and permit intelligence) without bloat or redundancy. Each tool earns its place and the count is within the ideal range.

Completeness5/5

The crypto settlement workflow is fully covered: discover assets, check venue health, get spot prices, resolve events, attest with signed artifacts, decode decision IDs, and verify current validity. Permit intelligence includes jurisdiction listing, activity screening, and full verdicts, with wallet status ensuring payment readiness.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/okwithit9-debug/permitverdict-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server