PHANTOM ID — agent payments (USDC on Base)
Server Details
PHANTOM ID MCP payment server: agent-to-agent USDC payments on Base.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- Arbromagency-Sato/idphantom-mcp-server
- GitHub Stars
- 0
- Server Listing
- IDPHANTOM MCP Server
- ChatGPT
- –
- Claude
- –
TDQS
Score is being calculated.
Available Tools
7 toolsauthorize_paymentAuthorize a paymentAIdempotentInspect
Attach the payer's EIP-712 PaymentAuthorization signature to a quoted payment intent. The signature is produced locally by the payer's wallet; it authorizes up to maximumTotalAuthorized, expiring at expiresAt. No funds move until submit_payment.
| Name | Required | Description | Default |
|---|---|---|---|
| payer_signature | Yes | EIP-712 signature (0x, 65 bytes) of the PaymentAuthorization typed data, signed by payer_wallet. | |
| payment_intent_id | Yes | Payment intent ID returned by quote_payment. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| isError | No | True when the API call failed; text carries { error: { code, message } }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this is a non-readonly, idempotent, non-destructive, open-world operation. The description adds valuable flow context, especially that no funds move until submit_payment, but doesn't explain signing requirements, how authorize relates to submit, or what happens on retries. With annotations already carrying safety signals, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences that front-load the action and then clarify the flow. Every clause earns its place by adding either purpose or usage context.
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 two required parameters, a full schema, an output schema, and annotations, the description is nearly complete for safe invocation and correct sequencing. It could be improved with explicit failure/retry guidance or more detail about the authorization semantics, but nothing critical is missing.
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 both parameters' formats and meanings are documented in the schema. The description adds the concept of maximumTotalAuthorized and expiresAt, which are not parameter names in the schema, so it doesn't fully clarify the provided inputs. Baseline 3 is correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: attach the payer's EIP-712 signature to a quoted payment intent. It clearly positions the tool between quote_payment and submit_payment, so an agent can place it in the payment flow without inspecting siblings.
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 the prerequisite (a quoted payment intent from quote_payment) and the follow-up ('No funds move until submit_payment'), giving clear when-to-use context. It doesn't give explicit when-not or failure/retry decision rules, but the sequence guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
phantom_authorize_budgetAuthorize a spending budget for an accountInspect
Funder-signed EIP-712 AgentWalletAuthorization: lets an account spend up to max_units of USDC (6-decimal units, e.g. '1000000' = $1) with an optional daily cap, without giving away the wallet. Requires PHANTOM_FUNDER_PRIVATE_KEY in the environment; the signature is produced locally. Policy templates: 'micro' ($1/tx, $5/day, 30d) and 'subscriptions' ($2/tx, $5/day, 30d) — pilot caps kept deliberately low; explicit max_units/daily_cap_units/expires_in_days override any template. The account's own api_key is sent as authentication (first binding requires it).
| Name | Required | Description | Default |
|---|---|---|---|
| nonce | No | Unique nonce per funder (default: current timestamp in ms); replays return 409. | |
| api_key | No | Account api_key to authenticate the call; defaults to the server's PHANTOM_API_KEY. | |
| max_units | No | Explicit per-tx cap in 6-decimal units; overrides the template. | |
| account_id | Yes | IDPHANTOM account that will spend the budget (e.g. acc_...). | |
| daily_cap_units | No | Optional explicit daily cap in 6-decimal units; overrides the template. | |
| expires_in_days | No | Validity window in days (default from template; max 365). | |
| policy_template | No | Named pilot policy (default 'micro'); use 'custom' with explicit caps. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| isError | No | True when the API call failed; text carries { error: { code, message } }. |
phantom_bind_identityBind a portable agent identity (AGP-123)IdempotentInspect
Registers an agent_id as a portable identity for this account via POST /v1/identity/bind. The proof-of-possession is an EIP-712 IdentityBinding signature produced LOCALLY with PHANTOM_IDENTITY_PRIVATE_KEY (environment variable only, never a command-line flag — AGP-057); the private key never leaves this process, only the signature is sent. Idempotent: replaying the same bind returns the existing binding. attestation_address comes from GET /.well-known/phantom-identity.json of the PHANTOM deployment (field attestation_address) — pass it here together with the chain_id so the local signature domain matches the server's. Key rotation is NOT exposed here (it needs the old AND new keys); call POST /v1/identity/rotate directly instead.
| Name | Required | Description | Default |
|---|---|---|---|
| epoch | No | Identity epoch for this binding (default 1; increment only via rotation). | |
| agent_id | Yes | Portable agent identifier to bind to this account (1..128 chars), e.g. an A2A agent card ID. | |
| chain_id | Yes | EVM chain ID of the PHANTOM deployment (e.g. 84532 = Base Sepolia). | |
| issued_at | No | Unix seconds issuance timestamp (default: now). | |
| attestation_address | Yes | Attestation service address from GET /.well-known/phantom-identity.json (field attestation_address). |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| isError | No | True when the API call failed; text carries { error: { code, message } }. |
phantom_registerRegister an IDPHANTOM account (self-serve)Inspect
One-line onboarding: creates an IDPHANTOM account for the configured payer wallet, pays the $2 USDC registration with a locally-signed EIP-712 authorization and returns the api_key. Requires PHANTOM_PAYER_PRIVATE_KEY and PHANTOM_ROUTER_ADDRESS in the environment. The api_key is shown exactly ONCE in this response — store it as PHANTOM_API_KEY immediately. Without a payer key configured, pass payer_wallet to get manual instructions instead.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | Optional display name for the account (default 'phantom-agent'). | |
| timeout_ms | No | Auto mode: max wait for on-chain confirmation (default 180000). | |
| payer_wallet | No | Manual mode (no PHANTOM_PAYER_PRIVATE_KEY): your EVM address; the tool returns the registration challenge plus step-by-step signing instructions. | |
| poll_interval_ms | No | Auto mode: poll interval for the registration status (default 3000). |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| isError | No | True when the API call failed; text carries { error: { code, message } }. |
quote_paymentQuote a paymentAIdempotentInspect
Create an IDPHANTOM payment quote with transparent platform fee (0.5%, min $0.01 USDC). Returns a payment intent ready for the payer's EIP-712 signature. Free: quoting never moves funds.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | Token amount in smallest units (6 decimals for USDC), e.g. '2500000' = $2.50. | |
| chain_id | Yes | EVM chain ID: 8453 = Base mainnet. | |
| metadata | No | Optional free-form key/value object attached to the quote (surfaced in receipts). | |
| payer_wallet | Yes | EVM address of the payer wallet (0x..., checksummed). | |
| asset_contract | Yes | ERC-20 token contract to pay with, e.g. USDC on Base: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913. | |
| payer_agent_id | No | Optional A2A agent card ID of the payer, for discovery and audit. | |
| idempotency_key | Yes | Unique client-generated key; safe retries return the same quote instead of duplicating it. | |
| recipient_wallet | Yes | EVM address of the recipient wallet (0x...). | |
| recipient_agent_id | No | Optional A2A agent card ID of the recipient. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| isError | No | True when the API call failed; text carries { error: { code, message } }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnlyHint=false, destructiveHint=false, idempotentHint=true), and the description adds substantive context beyond them: the platform fee (0.5%, min $0.01 USDC), the fact that no funds move, and the returned artifact (payment intent for EIP-712 signature). Minor omissions like expiry/TTL of the quote.
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 what it creates, followed by the return artifact and the safety/cost reassurance. Every sentence earns its place with no 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?
With a 9-parameter schema at full description coverage, annotations covering safety, and an output schema for return values, the description supplies the essential missing pieces (fee, no-fund-movement, signature-readiness). Only quote validity/expiry and idempotency semantics are left implicit.
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% across all 9 parameters, so the schema fully documents each field; baseline 3 applies. The description adds fee context but no additional per-parameter meaning beyond what the schema provides.
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 ('Create an ... payment quote') and what it produces ('a payment intent ready for the payer's EIP-712 signature'). It does not explicitly distinguish itself from siblings authorize_payment/submit_payment/verify_payment, though the quote-vs-execute distinction is fairly self-evident.
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?
'Free: quoting never moves funds' implies this is the safe pre-step before signing/submitting, which lets an agent infer when to call it. However, there is no explicit when-not guidance or named alternative (e.g. use authorize_payment once the quote is signed).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
submit_paymentSubmit a paymentADestructiveIdempotentInspect
Broadcast an authorized payment intent through IDPHANTOM. The platform relays the on-chain transaction; exactly one broadcast per intent is enforced server-side (retries return the already-submitted transaction hash). This is the step that settles funds.
| Name | Required | Description | Default |
|---|---|---|---|
| payment_intent_id | Yes | Authorized payment intent ID to broadcast and settle. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| isError | No | True when the API call failed; text carries { error: { code, message } }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (destructive, idempotent, openWorld), the description discloses the concrete idempotency behavior: exactly one broadcast per intent and retries returning the already-submitted transaction hash. That is genuinely useful operational detail an agent could not derive from idempotentHint=true alone. It could still say more about failure/error behavior, but it adds real value.
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 tight sentences with no redundancy, and the core action plus settlement outcome are front-loaded. Every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present and annotations covering the safety profile (readOnly=false, destructive, idempotent), the description only needs to frame the action and its consequence, which it does. Nothing essential for correct invocation is missing.
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, already 100% covered by the schema ('Authorized payment intent ID to broadcast and settle'). The description's phrasing mirrors the schema and adds no new semantics such as ID format or where the ID comes from, so 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 (broadcast) and resource (authorized payment intent) plus the concrete outcome ('this is the step that settles funds'). It clearly occupies a distinct position in the quote → authorize → submit → verify chain rather than overlapping the siblings.
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 scopes usage to an 'authorized payment intent,' which implicitly means it follows authorize_payment, and adds the settlement context. It does not, however, explicitly name when-not to use it or contrast it directly with verify_payment, so the routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
verify_paymentVerify a payment receiptARead-onlyIdempotentInspect
Verify an IDPHANTOM payment receipt: cryptographic checks (EIP-712 signature, payer recovery), expiry, and the on-chain state of the authorization (free/used/cancelled). Free for receipts of payments the caller participated in; paid via the receipt-verifier for third-party receipts.
| Name | Required | Description | Default |
|---|---|---|---|
| receipt_id | No | Optional specific receipt ID when several receipts exist for the intent. | |
| payment_intent_id | Yes | Payment intent ID to verify. |
Output Schema
| Name | Required | Description |
|---|---|---|
| content | Yes | |
| isError | No | True when the API call failed; text carries { error: { code, message } }. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely new behavioral context: the specific cryptographic/on-chain checks performed, the enumerated authorization states, and the free-vs-paid tiering for self vs third-party receipts.
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 core operation and the enumerated checks, followed by the cost model. Dense but nothing is redundant; arguably the state list could have been trimmed, keeping it just shy of ideal.
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 an output schema present, return-value explanation is unnecessary, and the rich annotations cover the safety profile. The description completes the picture with checks performed and cost implications; only explicit lifecycle positioning relative to quote/authorize/submit is missing.
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 (payment_intent_id, receipt_id) are already documented in the schema, and the schema correctly labels receipt_id as optional. The description adds no syntax, format, or selection guidance beyond what the schema provides, 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?
The description pairs a specific verb ('Verify') with a precise resource ('IDPHANTOM payment receipt') and then enumerates exactly what verification covers: EIP-712 signature checks, payer recovery, expiry, and on-chain authorization state (free/used/cancelled). That level of detail lets an agent distinguish it from the lifecycle siblings (quote/authorize/submit) even without an explicit comparison.
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 gives cost-based context ('Free for receipts of payments the caller participated in; paid via the receipt-verifier for third-party receipts'), which helps an agent anticipate charges but is not the same as saying when to call this tool. It never names the sibling tools as alternatives or states preconditions such as 'call after submit_payment'.
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.
7 tool updates
- First observed
authorize_payment - First observed
phantom_authorize_budget - First observed
phantom_bind_identity - First observed
phantom_register - First observed
quote_payment - First observed
submit_payment - First observed
verify_payment
Related MCP Connectors
Agent-commerce MCP server for x402/USDC payments and affiliate splits on Base.
15 paid AI agent primitives via x402 (USDC on Base). Pay-per-call MCP server.
x402-paid MCP tools & data APIs for agents — USDC on Base + Solana
Agent Commerce Protocol MCP — bridges Stripe ACP + Google AP2 + Coinbase x402 for agent payments
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server for USDC payments on Base, enabling AI agents to check balances, send payments, generate payment requests, and view transaction history.42MIT
- AlicenseAqualityBmaintenancePayment infrastructure MCP server enabling AI agents to make gasless USDC payments on Base and JIT single-use virtual card checkouts, with zero-trust card handling, merchant checkout hints, and signed receipts.13111 npm1MIT
- FlicenseAqualityCmaintenanceMCP server for a live x402 payment gateway on Base (USDC). Lets AI agents discover, preview for free, then pay per call — with prepaid gasless payments, signed receipts, and delta delivery.7-
- AlicenseAqualityBmaintenanceEnables AI agents to make non-custodial USDC payments on Base through an MCP endpoint, with server-enforced per-payment and daily caps, human approval bands, and recipient allowlists.746 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.