Skip to main content

Documentation Index

Fetch the complete documentation index at: https://glide-9da73dea.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Pay an x402 micropayment endpoint. Server-side RPC verification of the on-chain tx is MANDATORY — the facilitator receipt is never trusted for money-safety fields (PLAN.md F1).

Metadata

FieldValue
Namex402.pay
Categorywrite
Required scopex402:pay
Idempotency key requiredyes

Annotations

AnnotationValue
TitlePay x402 Endpoint
Read-onlyno
Destructiveyes
Idempotentyes
Open-worldyes
Requires human approvalno

Input schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "resource_url": {
      "type": "string",
      "format": "uri"
    },
    "max_amount_cents": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "chain": {
      "type": "string",
      "enum": [
        "eth",
        "base",
        "arb",
        "op",
        "polygon",
        "sol"
      ]
    },
    "token": {
      "type": "string",
      "minLength": 1
    },
    "idempotency_key": {
      "type": "string",
      "minLength": 8,
      "maxLength": 128
    }
  },
  "required": [
    "resource_url",
    "max_amount_cents",
    "chain",
    "token",
    "idempotency_key"
  ],
  "additionalProperties": false
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "payment_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"
    },
    "amount_cents_paid": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "on_chain_tx": {
      "type": "string",
      "pattern": "(?:0x[0-9a-fA-F]{64})|(?:[1-9A-HJ-NP-Za-km-z]{86,88})"
    },
    "resource_payload_sha256": {
      "type": "string",
      "minLength": 64,
      "maxLength": 64
    },
    "paid_at": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"
    }
  },
  "required": [
    "payment_id",
    "amount_cents_paid",
    "on_chain_tx",
    "resource_payload_sha256",
    "paid_at"
  ],
  "additionalProperties": false
}

Auth

Caller’s grant must include the x402:pay scope. Grants whose scope set is a superset of the required scope are accepted.

Request examples

curl -X POST https://mcp.glide.co/mcp/write \
  -H "Authorization: Bearer $GLIDE_GRANT_TOKEN" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: x402-weather-20260504-001" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "x402.pay",
    "params": {
      "resource_url": "https://api.weatherdata.io/premium/forecast?lat=37.77&lon=-122.41",
      "max_amount_cents": 10,
      "chain": "base",
      "token": "USDC",
      "idempotency_key": "x402-weather-20260504-001"
    }
  }'

Response examples

Success
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "payment_id": "9a8b7c6d-5e4f-3a2b-1c0d-9e8f7a6b5c4d",
    "amount_cents_paid": 5,
    "on_chain_tx": "0x4a3b2c1d9e8f7a6b5c4d3e2f1a0b9c8d7e6f5a4b3c2d1e0f9a8b7c6d5e4f3a2b",
    "resource_payload_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "paid_at": "2026-05-04T15:00:00Z"
  }
}
Vendor unavailable — RPC could not verify tx
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": -32006,
    "message": "RPC could not verify tx 0x4a3b... on base",
    "data": {
      "reason_id": "chain_tx_unverifiable"
    }
  }
}

Errors

Codereason_idMeaning
-32000unauthenticatedBearer token missing or expired.
-32001unauthorizedGrant does not include x402:pay.
-32002policy_deniedEnvelope denied the payment (amount, counterparty, velocity).
-32004rate_limitedRequest rate exceeded. data.retry_after_seconds present.
-32006chain_tx_unverifiableServer-side RPC returned no result for the facilitator-claimed tx. Do not retry without investigation — the funds may not have moved.
-32602invalid_tx_hash_formatRPC-verified tx hash format does not match the requested chain (EVM vs Solana mismatch).
-32602facilitator_tx_hash_mismatchFacilitator’s claimed tx hash differs from the RPC-verified value.
-32602facilitator_amount_mismatchFacilitator claimed an amount different from the on-chain verified amount.
-32602amount_over_maxVerified on-chain amount exceeds max_amount_cents.
-32603internal_errorTransient server fault. Retry with the same idempotency key.
Money-safety note: on_chain_tx in the response is always the server-fetched RPC value, never the facilitator-supplied value. The facilitator receipt is used only for the x402 handshake; all money-safety fields are independently verified (PLAN.md F1).