@ordinal402/ordinal-mcp
Click on "Install 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., "@@ordinal402/ordinal-mcpList the services available for under $5."
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.
@ordinal402/ordinal-mcp
Pay for Ordinal marketplace calls from your own wallet, in Claude Code or Codex.
x402's exact scheme needs an EIP-712 signature from the payer for every
payment, so whatever pays has to hold the key. This bridge runs on your machine
for exactly that reason: browsing is forwarded to Ordinal untouched, and only
the signing happens here. Ordinal receives a signature and recovers your address
from it — never the key.
Install
Nothing to install. Both clients run it on demand.
Claude Code
claude mcp add ordinal -e ORDINAL_PRIVATE_KEY=0xYOUR_KEY -- npx -y @ordinal402/ordinal-mcp@latestCodex — add to ~/.codex/config.toml:
[mcp_servers.ordinal]
command = "npx"
args = ["-y", "@ordinal402/ordinal-mcp@latest"]
[mcp_servers.ordinal.env]
ORDINAL_PRIVATE_KEY = "0xYOUR_KEY"Leave the key out and everything still works except paid calls — browsing and free trials need no wallet at all.
Related MCP server: NWC MCP Server
Before your first paid call
The payer wallet needs, on Robinhood Chain (chain id 4663):
USDG for the service price
a little ETH — only for the one-time approval below
a one-time Permit2 approval of USDG:
cast send 0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168 \
"approve(address,uint256)" \
0x000000000022D473030F116dDEE9F6B43aC78BA3 \
0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff \
--private-key 0xYOUR_KEY --rpc-url <robinhood-rpc>After that every payment is gasless for you — Ordinal's relayer broadcasts and pays the gas. You only ever sign.
Use a plain EOA. Permit2 treats an address that holds code as a smart wallet and
calls isValidSignature on it; if that contract does not implement ERC-1271 the
settlement reverts.
Tools
Tool | Cost | What it does |
| free | Browse the catalogue. Filter by |
| free | Input/output schema, price, x402 terms. Read before calling. |
| free | Runs the provider for real. Settles nothing, records nothing. |
| paid | Signs locally, settles on chain, returns the response and the transaction. |
| free | Look up a settlement transaction. |
| free | Which wallet will pay, and whether a key is configured. |
Configuration
Variable | Default | Meaning |
| — | Payer key, |
|
| Marketplace origin. |
| — | Only if the marketplace endpoint is gated. |
Why this is safe to give a key
Asking for a private key is the largest thing software can ask of you, so this package is small enough to read in full and published in a way you can verify.
The source is here.
src/index.tsis around 200 lines. The key appears in exactly one place: constructing a viem account that signs typed data locally.It is never transmitted. Search the source for the key variable. It is never placed in a request body, a header, a URL, a file, or a log line.
The published package is provenance-signed. npm ties the tarball to the commit in this repository and the GitHub Actions run that built it, so the code you read here is the code you install. Check it on the package page.
It only ever signs. The bridge cannot move funds on its own. Every payment is a signature over a challenge that names the exact amount and recipient, and the marketplace settles that one payment and nothing else.
Nothing is required. Leave the key unset and browsing and free trials still work.
Use a wallet funded with only what you intend to spend. That is good practice with any agent, not a caveat specific to this one.
What is sent where
list_services / get_service_details / try_service
→ forwarded to the marketplace. No key involved.
call_service
→ fetch the 402 challenge from the marketplace
→ sign it HERE, with your key, on this machine
→ send only the signature
→ the marketplace settles it and records the call against your addressYour private key is read from this process's environment and used to sign. It is never written anywhere, never logged, and never sent over the network.
Available Tools
6 toolscall_serviceCall a service with paymentA
Execute a real paid call, settled on Robinhood Chain from this machine's wallet (no key configured yet). The payment is signed locally; the private key never leaves this machine. Returns the provider response plus the settlement transaction.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Request payload matching the service's inputSchema. | |
| service | Yes | Service id or slug. | |
| maxPrice | No | Refuse the call if the service costs more than this many USDG. Recommended as a spend guard. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It clearly reveals the payment side-effect, local signing, the fact that the private key never leaves the machine, and the return payload. The ambiguous aside 'no key configured yet' keeps it from being fully transparent.
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 short sentences with no filler. The critical paid-call nature is front-loaded, and each sentence contributes distinct information: operation, security model, and return value.
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?
Given there is no output schema and no annotations, the description usefully explains the return value, financial consequences, and security behavior. It could more clearly explain what 'no key configured yet' means operationally, but overall it equips an agent to call the tool correctly.
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%, and the input schema already documents service, input, and maxPrice meaningfully. The description adds no parameter-level semantics beyond what the schema provides, so the baseline of 3 is appropriate.
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 states a specific verb ('Execute'), resource ('a real paid call'), and settlement context ('Robinhood Chain from this machine's wallet'). The qualifier 'real paid call' distinguishes it from try_service even without naming it, and the return value is specified.
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 guidance is implied rather than explicit. The phrase 'real paid call' suggests this is for actual paid execution rather than a trial, but the description never names alternatives like try_service or check_payment_status, nor does it state when not 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.
check_payment_statusCheck a settlement transactionA
Look up a Robinhood Chain transaction by hash and report whether it succeeded, how many confirmations it has, and its explorer URL.
| Name | Required | Description | Default |
|---|---|---|---|
| txHash | Yes | 0x-prefixed 32-byte transaction hash. | |
| network | No | Defaults to robinhood (mainnet). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosure, and it does well by stating that this is a lookup operation (no mutation implied) and by listing exactly what the agent will get back. It could go further by explicitly saying it is read-only and has no side effects, but 'Look up' and the lack of any write verb make the behavior clear.
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?
The description is a single, tightly worded sentence of about 18 words. It front-loads the action ('Look up') and the required input ('by hash'), then lists the three report values without any filler or redundant phrasing.
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?
This is a simple two-parameter lookup tool with a fully documented schema and no output schema. The description tells the agent what the return will contain (success, confirmations, explorer URL), which is all that is needed to interpret the result. No complex state, side effects, or multi-step behavior needs explanation.
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%, so the schema already documents the 32-byte hash format and the default network. The description adds no extra meaning beyond calling it a 'Robinhood Chain transaction,' which is already reflected in the title and network enum. Baseline 3 is appropriate since the heavy lifting is done by the schema.
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 uses a specific verb ('Look up'), names the exact resource ('Robinhood Chain transaction'), and identifies the key identifier ('by hash'). It also states the concrete outputs (success status, confirmations, explorer URL), which leaves no ambiguity about what the tool does. The title 'Check a settlement transaction' reinforces the purpose, and none of the sibling tools overlap with this behavior.
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 clearly implies when to use this tool: when you have a transaction hash and need settlement status, confirmation count, or an explorer link. It does not explicitly name exclusions or alternatives, but the sibling tools are distinct enough that no disambiguation is required. A full 'when-not-to-use' statement is absent, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_service_detailsGet service detailsA
Full detail for one service: input/output JSON Schema, price, example request and response, documentation, and the x402 settlement terms. Call this before try_service or call_service so the input matches the schema.
| Name | Required | Description | Default |
|---|---|---|---|
| service | Yes | Service id or slug, from list_services. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden, and it discloses the response contents and the read-only nature implied by 'get' and 'full detail'. It does not explicitly mention authentication or wallet requirements, which are relevant with x402 terms, but the core behavioral contract is clear.
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 with no filler: the first enumerates return content, the second gives the targeted when-to-use directive. Every sentence earns its place and the key term is include-detail.
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 one-parameter lookup tool with a fully described schema, the description is sufficient: it names the parameter source, return content, and the exact invocation point relative to siblings. It leaves only auth/wallet requirements to be discovered, but the x402 settlement-terms hint provides some lead.
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 single param is already fully documented. The description does not repeat it or enrich it, only referring to 'the input matches the schema'. The baseline is 3 because the schema carries the parameter semantics.
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 states a specific verb and resource: it retrieves full detail for one service. It enumerates what is returned (input/output JSON Schema, price, example request/response, documentation, x402 settlement terms) and distinguishes itself as the single-service lookup ahead of try_service or call_service.
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?
It gives an explicit when-to-use directive: 'Call this before try_service or call_service so the input matches the schema.' This names the relevant sibling alternatives and tells the agent the condition that selects this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesList marketplace servicesA
Browse published Ordinal services. Optionally filter by free-text query, category, or a maximum price per call. Returns id, slug, name, description, price, and reliability metrics.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum results (default 20, max 100). | |
| query | No | Free-text search across name, description, category, slug, and tags. | |
| category | No | Exact category filter, e.g. Security, Portfolio, Market Data. | |
| maxPrice | No | Only return services priced at or below this many USDG per call. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It communicates a read-only browsing action and lists return fields, but it does not mention potential pagination, response limits, ordering, or error conditions. Still, no destructive or surprising behavior is hinted at.
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?
The description is two sentences, front-loads the primary action, and packs optional filters plus return fields compactly. It avoids verbose or redundant language while staying informative.
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?
The description names the return contents, clarifies scope ('published'), and lists the available filters, which is sufficient for basic invocation. It does not mention pagination or ordering, but the tool's simple read-only nature makes this a minor 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?
The input schema already covers all four parameters, and the description adds minimal semantic value beyond restating the filters. It does clarify that query, category, and price are optional, which is useful, but it does not deeply enhance parameter understanding.
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 clearly states the verb ('Browse') and the resource ('published Ordinal services'). It also distinguishes itself from related tools by emphasizing listing/browsing with optional filters, while sibling tools like call/try service would handle execution.
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 usage for discovering or filtering published services, but it does not explicitly state when to prefer this tool over siblings such as a service details tool or a test/call tool. It provides clear context ('published services') but no direct alternative guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
try_serviceTry a service for freeA
Run a service without paying. Validates the input against the service schema and returns the provider's real response, but settles no payment and records no usage. Use this for demos and for checking output shape before committing to a paid call.
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes | Request payload matching the service's inputSchema. | |
| service | Yes | Service id or slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden not only for safety but also for side effects. It clearly discloses that no payment is settled and no usage is recorded, while noting that the provider's real response is returned. This gives agents essential information for safe and correct invocation.
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?
The description is compact, starts with the primary behavior, then quickly moves to validation and consequences, and closes with the intended use cases. No filler or redundancy.
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 two-parameter tool with no output schema, this description covers the tool’s purpose, side effects, validation behavior, and appropriate contexts. Nothing critical is missing for an agent to decide whether and how to call it.
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 input schema already documents both parameters (service and input) with 100% coverage enabled. The description adds the semantic nuance that the input is validated against the service's schema reliable, which is useful but not extensive, keeping this at baseline.
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 clearly states the tool runs a service without payment, distinct from the paid calling flow. It names the resource (a service), the verb (run), and specifies the free/demo nature, making it easily distinguishable from call_service.
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 explicitly states when to use this tool: for demos and checking output shape before committing to a paid call. It implies when not to use it (any final/paid operation), though it does not directly name call_service as the alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wallet_addressShow the paying walletA
Reports which wallet this bridge will pay from, and whether a key is configured at all. Useful before a paid call.
| 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. 'Reports' signals a read-only operationaine and 'whether a key is configured at all' discloses that it inspects key state. It does not mention potential errors or whether it makes network calls, but the core behavior is transparent.
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, front-loaded with the purpose, then a practical usage hint. No fluff 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?
For a parameterless read-only check, the description covers the key facts an agent needs: what it reports and when to use it. It doesn't specify the return format, but with no output schema and a trivial query, this is sufficient.
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 schema is complete (100% coverage). The description adds no parameter detail because none is needed; baseline for no parameters is 4.
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 uses a specific verb ('Reports') and a clear resource (the wallet/key for this bridge), which distinguishes it from siblings like try_service, get_service_details, and check_payment_status. There is no ambiguity about what the tool does.
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 sentence 'Useful before a paid call' explicitly indicates when to invoke this tool. It does not explicitly name alternatives or exclusions, but the context is clear enough that an agent can decide to call it prior to any chargeable sibling operation.
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.
6 tool updates
v0.1.0- First observed
call_service - First observed
check_payment_status - First observed
get_service_details - First observed
list_services - First observed
try_service - First observed
wallet_address
TDQS
Scored across 6 tools
Each tool targets a distinct action: browsing, inspecting, trying, calling, checking payment status, and checking wallet identity. The try_service versus call_service distinction is clearly drawn by payment and settlement semantics.
Five of six tools follow a clear verb_noun snake_case pattern. The sole exception is wallet_address, which is a noun phrase rather than a get_* verb, but it remains readable and predictable.
At six tools, the set is tightly scoped to the service marketplace workflow: discover, inspect, try, pay, verify, and wallet identity. There is no bloat or redundancy.
The core lifecycle from discovery through paid execution to settlement verification is covered. Minor gaps exist: there is no transaction history tool and no way to configure the wallet within the MCP surface, but agents can work around both.
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
Wallet-signed Solana RPC for AI agents. No API keys, LLM-safe amounts, pay-per-call in SOL.
Bitcoin and YouTube video intelligence for AI agents. Pay-per-call via x402 USDC on Base.
Pay-per-call tools for autonomous agents, settled in USDC on Base via x402.
Payment rails for AI agents. Pay merchants in USDC on Base. Dual-protocol: x402 + OKX APP.
Related MCP Servers
AlicenseNot gradedqualityFmaintenanceProvides onchain tools for Claude AI to interact with the Base blockchain and Coinbase API, enabling wallet management, fund transfers, and smart contract deployment.6350MIT- AlicenseBqualityFmaintenanceConnects a Bitcoin Lightning wallet to your LLM using Nostr Wallet Connect, enabling payment functionalities within language models like Claude.61815MIT
- AlicenseBqualityDmaintenanceEnable AI assistants to interact directly with Bitcoin Ordinals inscriptions. Seamlessly integrates with Goose and Claude Desktop to retrieve and display inscription content from transactions.14MIT
- AlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables gasless blockchain transactions directly from Claude conversations, allowing users to execute transfers, swaps, and other operations without holding native tokens.292MIT