m2m.monster (Devnet sandbox)

Non-custodial x402 payments between AI agents on Solana. Returns unsigned transactions.

Should I use this

Quality & Safety

A
Description quality
93%
Schema completeness
78%
Naming quality
96%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Findings (1)

  • LOWTool 'get_status' description lacks action verbin get_status

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,497Tokens (tool definitions)
~971 BTypical response size
Moderate attention impact (1.17% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "m2m-monster": {
      "url": "https://sandbox.m2m.monster/mcp"
    }
  }
}

Remote endpoints

https://sandbox.m2m.monster/mcpstreamable-http

What it can do

Tool inventory

Tools (10)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢get_pricing

Agent-to-agent fee formula, referral program and the whitelisted token mints of this network.

Input Schema

{
  "type": "object",
  "properties": {}
}
⚪quote_payment(network, mint, amount, payee, idempotency_key)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "network": {
      "type": "string",
      "description": "CAIP-2 network id, e.g. solana:EtWTRABZaYq6iMfeYKouRu166VU2xqa1"
    },
    "mint": {
      "type": "string",
      "minLength": 32,
      "maxLength": 44,
      "description": "Payment token mint (exact whitelisted address)"
    },
    "amount": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Integer amount in base units of the mint"
    },
    "payee": {
      "type": "string",
      "minLength": 32,
      "maxLength": 44,
      "description": "Wallet that receives the payment"
    },
    "idempotency_key": {
      "description": "Reuse the same key when retrying",
      "type": "string",
      "minLength": 8,
      "maxLength": 128
    }
  },
  "required": [
    "network",
    "mint",
    "amount",
    "payee"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢build_payment(quote, payer, max_compute_unit_price)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "quote": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The signed quote exactly as returned by quote_payment"
    },
    "payer": {
      "type": "string",
      "minLength": 32,
      "maxLength": 44,
      "description": "The payer wallet; it signs and pays the network fee"
    },
    "max_compute_unit_price": {
      "description": "Lower priority fee cap in micro-lamports per compute unit",
      "type": "string",
      "pattern": "^\\d+$"
    }
  },
  "required": [
    "quote",
    "payer"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_payment(quote, transaction)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "quote": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The signed quote exactly as returned by quote_payment"
    },
    "transaction": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048,
      "description": "Base64 wire transaction"
    }
  },
  "required": [
    "quote",
    "transaction"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡submit_payment(quote, transaction, idempotency_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.

Input Schema

{
  "type": "object",
  "properties": {
    "quote": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {},
      "description": "The signed quote exactly as returned by quote_payment"
    },
    "transaction": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2048,
      "description": "Base64 transaction signed by the payer"
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128
    }
  },
  "required": [
    "quote",
    "transaction",
    "idempotency_key"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢verify_receipt(receipt)

Verify a receipt: the m2m.monster signature and that the confirmed on-chain transaction matches it.

Input Schema

{
  "type": "object",
  "properties": {
    "receipt": {
      "type": "string",
      "minLength": 1,
      "description": "Receipt JWS"
    }
  },
  "required": [
    "receipt"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢build_refund(receipt, amount)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "receipt": {
      "type": "string",
      "minLength": 1,
      "description": "Receipt JWS of the original payment"
    },
    "amount": {
      "type": "string",
      "pattern": "^\\d{1,20}$",
      "description": "Refund amount, at most the original gross amount"
    }
  },
  "required": [
    "receipt",
    "amount"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢register_agent(solana_pubkey, agent_id, capabilities, referred_by, signature)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "solana_pubkey": {
      "type": "string",
      "minLength": 32,
      "maxLength": 44,
      "description": "Base58 Solana public key"
    },
    "agent_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 128
    },
    "capabilities": {
      "maxItems": 32,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 64
      }
    },
    "referred_by": {
      "description": "Pubkey of the agent that referred you",
      "type": "string",
      "minLength": 32,
      "maxLength": 44
    },
    "signature": {
      "description": "Base58 ed25519 signature of the message",
      "type": "string"
    }
  },
  "required": [
    "solana_pubkey"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_referral_status

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.

Input Schema

{
  "type": "object",
  "properties": {}
}
🟢get_status

Service status and API version.

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded10 tools