m2m-monster
OfficialEnables AI agents to discover and pay each other over MCP, settling payments on Solana using the x402 v2 m2m-split scheme with non-custodial, payer-signed transactions, quotes, and receipts.
m2m.monster
Non-custodial infrastructure for AI agents to pay each other: discovery over MCP, settlement over x402 v2 with the m2m-split scheme on Solana.
Mainnet: API https://api.m2m.monster · Agent docs: https://m2m.monster/llms.txt · Free Devnet sandbox: https://sandbox.m2m.monster
Agents generate and keep their own keys and sign locally. m2m.monster holds no agents' keys or funds and never signs or pays payment transactions; payers pay their own gas. Quotes and receipts are signed by a service key that holds no funds.
One atomic transaction, signed only by the payer: amount − fee to the payee in the payment token, and the fee in USDC to the treasury, with the memo
settled via m2m.monster <quote id>.Fee:
min(max(0.25% × amount, $0.001), $0.5), borne by the payee. Published at/pricing.json.Every endpoint and MCP tool that moves funds returns an unsigned transaction.
Packages
Package | |
TypeScript SDK: pay 402s, paywall, quotes, receipts | |
MCP server (stdio); hosted at | |
Fees, quotes and | |
| Python SDK, byte-identical transactions |
|
Contract: spec/openapi.json. Shared test vectors: spec/test-vectors.
Related MCP server: Tilde x402 MCP Server
Development
corepack pnpm install
corepack pnpm build && corepack pnpm test && corepack pnpm lint
cd sdk-python && uv run pytestLicense
Apache-2.0
Available Tools
10 toolsbuild_paymentARead-only
Build the m2m-split transaction for a quote: the payer's transfer to the payee and the USDC fee transfer to the treasury, in one atomic transaction where the payer pays its own gas. Checks that the receiving token accounts exist and that the payer holds USDC for the fee, and simulates it. Unsigned. Sign it locally with your own Solana key; m2m.monster never sees or uses agents' private keys.
| Name | Required | Description | Default |
|---|---|---|---|
| payer | Yes | The payer wallet; it signs and pays the network fee | |
| quote | Yes | The signed quote exactly as returned by quote_payment | |
| max_compute_unit_price | No | Lower priority fee cap in micro-lamports per compute unit |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint and openWorldHint, yet the description adds substantial behavior: it pre-checks that receiving token accounts exist and that the payer holds USDC, simulates before returning, returns an UNSIGNED transaction, and asserts the custody model (keys never seen by the service). This is exactly the extra context annotations don't carry.
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 compact sentences with the core action and output state ('Unsigned') front-loaded; the security note about private keys is a slight tail addition but earns its place for an agent handing off signing.
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?
No output schema exists, and the description covers the essential return shape ('unsigned' transaction to be signed locally) plus the pre-flight checks that can fail. It stops short of specifying the serialization/encoding of the returned transaction and how failures surface, which an agent would still need to discover.
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 payer, quote, and max_compute_unit_price are already documented. The description reinforces the payer-pays-gas semantics but adds no new syntax or format detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Build the m2m-split transaction for a quote') and enumerates the exact components produced: the payer→payee transfer and the USDC fee transfer to treasury, atomic, payer-funded gas. It is clearly distinguishable from quote_payment (which produces the quote) and submit_payment (which broadcasts).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the workflow: the quote comes from quote_payment and the result must be signed locally, but the description never explicitly states when to call this versus build_refund or submit_payment, nor that it is the intermediate step between quote and submission. Adequate but relies on inference from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
build_refundARead-only
Build a refund from the payee back to the payer, linked to the original receipt. The payee signs it and pays its gas; it has no m2m.monster fee and the original fee is not returned. Unsigned. Sign it locally with your own Solana key; m2m.monster never sees or uses agents' private keys.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Refund amount, at most the original gross amount | |
| receipt | Yes | Receipt JWS of the original payment |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations by disclosing who signs, who pays gas, the absence of an m2m.monster fee, that the original fee is not returned, and that the artifact is unsigned and must be signed locally with the caller's own key. This is exactly the behavioral context an agent needs before calling a transaction-builder.
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, front-loaded with the action and direction, then economics, then signing model. Nothing is redundant and no sentence is padding.
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 builder with no output schema, the description covers creation, linkage, cost model, signature requirement, and key handling. Only minor gaps remain, such as what exactly the returned unsigned artifact is or whether any submission step follows.
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 both parameters are already documented, and the description only restates that the refund ties to the original receipt. It adds the constraint that a refund is bounded by the original payment context, but no syntax or format detail beyond 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?
States a specific verb (build) and resource (refund) plus the direction of funds (payee back to payer) and the anchor to the original receipt, which cleanly separates it from sibling build_payment. An agent can tell what this produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the trigger condition (a refund against an existing receipt) but never explicitly states when to use this versus build_payment, quote_payment, or verify_receipt. No exclusions or prerequisites are spelled out, leaving routing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_pricingBRead-only
Agent-to-agent fee formula, referral program and the whitelisted token mints of this network.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds useful scope by naming the three data categories returned, but discloses nothing about freshness, network specificity, or whether the values are cached/static. Adds some value over annotations, but not rich behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single compact sentence with no wasted words, and the data categories are listed up front. It is slightly too terse given the absence of a verb, but nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no input parameters and no output schema, the description bears the burden of conveying what comes back, and listing fee formula, referral program, and whitelisted token mints covers the main return surface. An agent can form a reasonable expectation of the response. It stops short of full completeness by not clarifying how this differs from get_status/get_referral_status.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to clarify and the baseline is 4. No parameter syntax or format details are needed or missing.
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 enumerates the resource contents (fee formula, referral program, whitelisted token mints), which gives more specificity than the bare name. But it is a verbless noun fragment and never states that it retrieves configuration data, and 'referral program' overlaps conceptually with the sibling get_referral_status, so it does not sharply differentiate itself. Purpose is inferable but vague.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to call this versus siblings such as get_status or get_referral_status, nor any prerequisite or sequencing hint (e.g., call before build_payment to compute fees). Usage must be entirely inferred 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_referral_statusARead-only
Your referrer, referred agents, credits and their expiry dates. Credits are discounts on your own fees, never cash. Requires the api_key from register_agent.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, and the description adds genuinely useful context beyond them: credits are discounts on your own fees and never cash, and an api_key obtained from register_agent is required. It stops short of covering auth failure modes or how expiry dates are formatted/returned.
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, front-loaded sentences with no filler; the return contents come first and the clarifying constraint on credits follows. It could open with an explicit verb+resource statement rather than a bare noun list.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and no input parameters, the description carries the load and does describe the returned fields (referrer, referred agents, credits, expiry) plus the auth prerequisite. It leaves open how the api_key is actually supplied and what an empty or errored response looks like.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is no parameter semantics to document and the baseline is 4. The description still usefully explains that an api_key is needed, implying it is supplied out-of-band rather than as a parameter.
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 enumerates exactly what the tool returns - referrer, referred agents, credits and expiry dates - which pins down the resource even though the verb is only implicit in the name. It is clearly separable from payment siblings like quote_payment or verify_receipt, but never states its purpose in a single framing sentence.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no named alternative among the nine siblings. The only usage-adjacent statement is the prerequisite that an api_key from register_agent is required, which is a precondition rather than selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusBRead-only
Service status and API version.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds only what the response contains (service status and API version) and discloses nothing about auth requirements, rate limits, or response shape, which is a modest contribution given no parameters exist.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded fragment with zero filler; nothing redundant and nothing padded.
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 no-parameter, no-output-schema read tool, the description is minimally adequate but leaves the meaning of 'status' (enum values, degraded/healthy semantics, version format) undefined, which an agent must guess at.
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 per the rubric the baseline is 4. There is nothing for the description to disambiguate beyond what an empty schema already conveys.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States the resource ('service status') and what it returns ('API version') with an implied read verb, which is specific enough to distinguish it from the payment/referral siblings. It does not explicitly name a verb or note that no sibling overlaps, so it stops short of a 5.
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?
No indication of when to call this versus anything else, no prerequisites, no exclusions. Usage is only weakly implied by the name and the fact that it is a status check.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
quote_paymentB
Price a payment to a payee: gross amount, net amount to the payee, fee_gross, discount, fee_net, treasury, mint and a 30-second expiry. Returns a signed quote.
| Name | Required | Description | Default |
|---|---|---|---|
| mint | Yes | Payment token mint (exact whitelisted address) | |
| payee | Yes | Wallet that receives the payment | |
| amount | Yes | Integer amount in base units of the mint | |
| network | Yes | CAIP-2 network id, e.g. solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 | |
| idempotency_key | No | Reuse the same key when retrying |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already flag readOnlyHint=false and openWorldHint=false, so safety posture is partly covered. The description adds genuinely useful context beyond annotations: the 30-second expiry on the quote and the fact that a signed quote is returned. It does not clarify whether quoting has side effects or requires auth.
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?
Single sentence, front-loaded with purpose followed by the output fields. The enumeration of return fields is justified because there is no output schema, though it is slightly list-heavy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully enumerates the returned figures and the expiry, compensating for the missing output contract. It is incomplete on the surrounding workflow, though — how quoting relates to the payment lifecycle and sibling tools is unaddressed.
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 all five parameters are documented in the schema (mint, payee, amount, network, idempotency_key). The description adds no parameter-level meaning beyond that, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Price a payment to a payee') and enumerates what the quote contains, so the agent knows exactly what this produces. It does not, however, distinguish itself from siblings like get_pricing or build_payment, leaving the boundary ambiguous.
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?
No when-to-use guidance is given. With siblings such as get_pricing and build_payment present, the description never says whether quoting precedes building or is an alternative to fetching pricing, nor states preconditions. The agent must infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_agentA
Optional registration; paying and getting paid work without it. It unlocks referral credits and receipt history. Call once without signature to get the message to sign with your Solana key, then again with the base58 signature to receive an api_key.
| Name | Required | Description | Default |
|---|---|---|---|
| agent_id | No | ||
| signature | No | Base58 ed25519 signature of the message | |
| referred_by | No | Pubkey of the agent that referred you | |
| capabilities | No | ||
| solana_pubkey | Yes | Base58 Solana public key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, so the agent knows this mutates state. The description goes beyond that by disclosing the signature-based auth flow and that the successful call yields an api_key, which is meaningful behavioral context. It does not address idempotency or what happens on re-registration.
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 sentences, each carrying distinct information, front-loaded with the optionality caveat. Efficient and well-ordered, with only mild density in the final procedural sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly compensates by naming the return value (api_key) and the intermediate message. The auth sequence is fully covered; the only gap is the undocumented secondary parameters.
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 60%, so the schema documents some parameters but not all. The description adds real meaning for `signature` (base58 ed25519 signature of the message) and implies `solana_pubkey`, but leaves `agent_id`, `referred_by`, and `capabilities` entirely unexplained in both places.
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 performs an optional registration and names the concrete benefit (referral credits and receipt history). It is readily distinguishable from the payment-centric siblings, though it never explicitly contrasts itself against them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the key when/when-not up front ('Optional registration; paying and getting paid work without it') and then gives an explicit two-call procedure: first without `signature` to obtain the message, then with the base58 signature to get the api_key. Nothing about invocation order is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_paymentA
Broadcast a transaction the payer already signed, wait for confirmation and return the signed receipt. Only broadcasts; never signs or pays payment transactions. A retry with the same idempotency_key never pays twice.
| Name | Required | Description | Default |
|---|---|---|---|
| quote | Yes | The signed quote exactly as returned by quote_payment | |
| transaction | Yes | Base64 transaction signed by the payer | |
| idempotency_key | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only cover the safety profile (readOnlyHint=false, destructiveHint=false, openWorldHint=true); the description adds real value beyond that by disclosing that the call blocks until confirmation and that idempotency_key guarantees no double payment on retry. It stops short of describing failure/timeout behavior or how long the confirmation wait can be.
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, front-loaded with the action and followed by the two most important behavioral guarantees. No filler or repetition of the name or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description correctly states the return value ('the signed receipt') and covers idempotency and blocking behavior. It is complete enough to invoke correctly, though error/failure handling for a broadcast transaction is unaddressed.
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 67% — quote and transaction are documented inline, but idempotency_key is not. The description compensates by explaining that retrying with the same idempotency_key never pays twice, giving that parameter concrete semantics the schema lacks.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('broadcast') and resource ('a transaction the payer already signed'), plus the post-conditions: waits for confirmation and returns the signed receipt. This cleanly separates it from siblings like quote_payment and build_payment without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Only broadcasts; never signs or pays payment transactions' establishes a clear when-not boundary and implicitly routes signing to build_payment. However, it never names the alternative tool explicitly, so the agent must infer the routing rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_paymentARead-only
For the payee: check a payer-signed transaction against its quote (net amount, fee to the treasury, whitelisted mints, quote id and expiry) and simulate it before submitting.
| Name | Required | Description | Default |
|---|---|---|---|
| quote | Yes | The signed quote exactly as returned by quote_payment | |
| transaction | Yes | Base64 wire transaction |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=true and openWorldHint=false; the description is consistent and adds value by clarifying that the operation simulates rather than executes, and by disclosing the specific invariants checked against the quote. It does not cover failure reporting, auth requirements, or rate limits, so it is additive but not exhaustive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence, front-loaded with the audience ('For the payee') and the action, then the validation detail, then the trigger ('before submitting'). No filler and nothing redundant with the sibling set.
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 validation tool with no output schema, the description adequately conveys what is validated and when to call it. It leaves the caller without any hint of the result shape (pass/fail, reason codes) or the simulation's behavior on failure, which is a minor gap given there is no output schema to fall back on.
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% for the two top-level params, so the baseline would be 3. The description goes further by enumerating the fields inside the nested quote object (net amount, fee, mints, quote id, expiry) and characterizing the transaction as payer-signed, which the schema's additionalProperties:{} does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('check a payer-signed transaction against its quote ... and simulate it') and enumerates exactly what is validated (net amount, fee to the treasury, whitelisted mints, quote id and expiry). The 'For the payee' qualifier and the simulation step distinguish it cleanly from siblings like verify_receipt, quote_payment, and submit_payment without needing their schemas.
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?
'...and simulate it before submitting' clearly places this as the pre-submission gate before submit_payment, giving real when-to-use context. It stops short of naming alternatives or exclusions (e.g. how it differs from verify_receipt), so it is clear but not fully routable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_receiptBRead-only
Verify a receipt: the m2m.monster signature and that the confirmed on-chain transaction matches it.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt | Yes | Receipt JWS |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering the safety profile. The description adds useful context about the verification criteria (signature + confirmed on-chain transaction match), but omits failure behavior, authentication needs, and rate limits, so it is a modest addition over 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler. It efficiently conveys the verb, resource, and verification scope without wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with annotations and a fully documented parameter, the definition is mostly complete. However, there is no output schema and the description never states what verification returns (boolean, error, or status), leaving a meaningful gap for an agent interpreting the result.
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?
Only one parameter exists, and the schema fully describes it as 'Receipt JWS' with 100% coverage. The description adds no format, encoding, or source detail beyond the schema, 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?
States a specific verb ('Verify') and resource ('receipt'), and clarifies the two verification criteria: the m2m.monster signature and that the confirmed on-chain transaction matches it. It does not name or differentiate from the sibling verify_payment, so it falls short of the top tier.
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 explains what is verified but gives no when-to-use guidance, no prerequisites, and no mention of alternatives such as verify_payment. An agent gets no routing signal for choosing this tool over siblings.
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.
10 tool updates
v1.1.0- First observed
build_payment - First observed
build_refund - First observed
get_pricing - First observed
get_referral_status - First observed
get_status - First observed
quote_payment - First observed
register_agent - First observed
submit_payment - First observed
verify_payment - First observed
verify_receipt
TDQS
Scored across 10 tools
The tools map cleanly to distinct payment lifecycle stages: pricing, quoting, building, verifying, submitting, receipt verification, and refunds. The main possible confusion is between verify_payment and verify_receipt, but their contexts (pre-submit transaction vs confirmed receipt) are adequately differentiated.
All tool names use consistent snake_case with a clear verb_noun pattern such as get_pricing, quote_payment, build_payment, verify_payment, and submit_payment. The minor use of quote_ as a verb is still readable and consistent with the overall convention.
Ten tools are well-scoped for an agent payment server, with each tool covering a meaningful step in the quote-build-verify-submit-receipt-refund flow. Supporting tools for pricing, registration/referrals, and status are also justified without bloating the surface.
The core payment lifecycle is well covered, including fee discovery, quote creation, transaction building, verification, submission, receipt verification, and refunds. Minor gaps remain around retrieving receipt history or listing past payments, despite registration being described as unlocking receipt history.
Maintenance
Related MCP Connectors
Non-custodial x402 payments between AI agents on Solana. Returns unsigned transactions.
Trust and settlement for AI agents: portable attestations, escrow, x402/USDC payments on Solana.
Pay-per-call tools for AI agents: Solana, DEX, perps, prediction markets, DeFi, web. USDC via x402.
162 AI agents for Solana crypto intelligence, wallets, and x402 micropayments.
Related MCP Servers
- AlicenseBqualityBmaintenanceProvides permissionless wallet infrastructure for AI agents to manage wallets, sign transactions, and handle tokens across Solana and all EVM-compatible chains. It includes 29 specialized tools for on-chain operations, featuring built-in security guards and automated x402 payment processing without KYC requirements.40288 npm3MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI agents to discover and pay for x402-enabled services using natural language, with multi-chain support for Solana and EVM payments.21 npm1MIT
- AlicenseAqualityAmaintenanceA budget-bound x402 payment wallet for AI agents: it autonomously pays HTTP 402 payment-gated URLs across every major chain (EVM, Solana, and many non-EVM families). Self-custodial and backendless, your key, your RPC, with spend caps enforced before any on-chain send.89MIT
- AlicenseNot gradedqualityFmaintenanceEnables AI agents to make micropayments using USDC on Solana via the x402 protocol, supporting payment requests, on-chain verification, and revenue tracking.MIT