Non-custodial x402 payments between AI agents on Solana. Returns unsigned transactions.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Bearer <api_key> from register_agent; unlocks referral status.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
The payer wallet; it signs and pays the network fee
The signed quote exactly as returned by quote_payment
Lower priority fee cap in micro-lamports per compute unit
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.
| Argument | Type | Description |
|---|---|---|
| payer* | string | The payer wallet; it signs and pays the network fee |
| quote* | object | The signed quote exactly as returned by quote_payment |
| max_compute_unit_price | string | Lower priority fee cap in micro-lamports per compute unit |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quote",
"payer"
],
"properties": {
"payer": {
"type": "string",
"maxLength": 44,
"minLength": 32,
"description": "The payer wallet; it signs and pays the network fee"
},
"quote": {
"type": "object",
"description": "The signed quote exactly as returned by quote_payment",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"max_compute_unit_price": {
"type": "string",
"pattern": "^\\d+$",
"description": "Lower priority fee cap in micro-lamports per compute unit"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| amount* | string | Refund amount, at most the original gross amount |
| receipt* | string | Receipt JWS of the original payment |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"receipt",
"amount"
],
"properties": {
"amount": {
"type": "string",
"pattern": "^\\d{1,20}$",
"description": "Refund amount, at most the original gross amount"
},
"receipt": {
"type": "string",
"minLength": 1,
"description": "Receipt JWS of the original payment"
}
}
}Agent-to-agent fee formula, referral program and the whitelisted token mints of this network.
No arguments.
{
"type": "object",
"properties": {}
}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.
No arguments.
{
"type": "object",
"properties": {}
}Service status and API version.
No arguments.
{
"type": "object",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| mint* | string | Payment token mint (exact whitelisted address) |
| payee* | string | Wallet that receives the payment |
| amount* | string | Integer amount in base units of the mint |
| network* | string | CAIP-2 network id, e.g. solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1 |
| idempotency_key | string | Reuse the same key when retrying |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"network",
"mint",
"amount",
"payee"
],
"properties": {
"mint": {
"type": "string",
"maxLength": 44,
"minLength": 32,
"description": "Payment token mint (exact whitelisted address)"
},
"payee": {
"type": "string",
"maxLength": 44,
"minLength": 32,
"description": "Wallet that receives the payment"
},
"amount": {
"type": "string",
"pattern": "^\\d{1,20}$",
"description": "Integer amount in base units of the mint"
},
"network": {
"type": "string",
"description": "CAIP-2 network id, e.g. solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"
},
"idempotency_key": {
"type": "string",
"maxLength": 128,
"minLength": 8,
"description": "Reuse the same key when retrying"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| agent_id | string | |
| signature | string | Base58 ed25519 signature of the message |
| referred_by | string | Pubkey of the agent that referred you |
| capabilities | array | |
| solana_pubkey* | string | Base58 Solana public key |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"solana_pubkey"
],
"properties": {
"agent_id": {
"type": "string",
"maxLength": 128,
"minLength": 1
},
"signature": {
"type": "string",
"description": "Base58 ed25519 signature of the message"
},
"referred_by": {
"type": "string",
"maxLength": 44,
"minLength": 32,
"description": "Pubkey of the agent that referred you"
},
"capabilities": {
"type": "array",
"items": {
"type": "string",
"maxLength": 64
},
"maxItems": 32
},
"solana_pubkey": {
"type": "string",
"maxLength": 44,
"minLength": 32,
"description": "Base58 Solana public key"
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| quote* | object | The signed quote exactly as returned by quote_payment |
| transaction* | string | Base64 transaction signed by the payer |
| idempotency_key* | string |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quote",
"transaction",
"idempotency_key"
],
"properties": {
"quote": {
"type": "object",
"description": "The signed quote exactly as returned by quote_payment",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"transaction": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Base64 transaction signed by the payer"
},
"idempotency_key": {
"type": "string",
"maxLength": 128,
"minLength": 8
}
}
}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.
| Argument | Type | Description |
|---|---|---|
| quote* | object | The signed quote exactly as returned by quote_payment |
| transaction* | string | Base64 wire transaction |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"quote",
"transaction"
],
"properties": {
"quote": {
"type": "object",
"description": "The signed quote exactly as returned by quote_payment",
"propertyNames": {
"type": "string"
},
"additionalProperties": {}
},
"transaction": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "Base64 wire transaction"
}
}
}Verify a receipt: the m2m.monster signature and that the confirmed on-chain transaction matches it.
| Argument | Type | Description |
|---|---|---|
| receipt* | string | Receipt JWS |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"receipt"
],
"properties": {
"receipt": {
"type": "string",
"minLength": 1,
"description": "Receipt JWS"
}
}
}