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.

Run the full policy envelope evaluation against a proposed payment. Returns the verdict + every reason without any side effects. Use this to preview a payment before calling payments.initiate.

Metadata

FieldValue
Namepayments.simulate
Categoryread
Required scopepayments:simulate
Idempotency key requiredno

Annotations

AnnotationValue
TitleSimulate Payment
Read-onlyyes
Destructiveno
Idempotentyes
Open-worldno
Requires human approvalno

Input schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "counterparty": {
      "type": "object",
      "properties": {
        "address": {
          "type": "string",
          "minLength": 1
        },
        "chain": {
          "type": "string",
          "enum": [
            "eth",
            "base",
            "arb",
            "op",
            "polygon",
            "sol"
          ]
        },
        "token": {
          "type": "string",
          "minLength": 1
        }
      },
      "required": [
        "address",
        "chain",
        "token"
      ],
      "additionalProperties": false
    },
    "amount_cents": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "currency": {
      "type": "string",
      "minLength": 1,
      "maxLength": 8
    },
    "mcc": {
      "type": "string",
      "minLength": 4,
      "maxLength": 4
    },
    "geo": {
      "type": "string",
      "minLength": 2,
      "maxLength": 2
    }
  },
  "required": [
    "counterparty",
    "amount_cents",
    "currency"
  ],
  "additionalProperties": false
}

Output schema

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "verdict": {
      "type": "string",
      "enum": [
        "allow",
        "allow_with_step_up",
        "deny"
      ]
    },
    "policy_version": {
      "type": "integer",
      "minimum": 0,
      "maximum": 9007199254740991
    },
    "reasons": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "axis": {
            "type": "string"
          },
          "reason_id": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "axis",
          "reason_id",
          "message"
        ],
        "additionalProperties": false
      }
    },
    "simulated_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": [
    "verdict",
    "policy_version",
    "reasons",
    "simulated_at"
  ],
  "additionalProperties": false
}

Auth

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

Request examples

curl -X POST https://mcp.glide.co/mcp/read \
  -H "Authorization: Bearer $GLIDE_GRANT_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "payments.simulate",
    "params": {
      "counterparty": {
        "address": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
        "chain": "base",
        "token": "USDC"
      },
      "amount_cents": 75000,
      "currency": "USD",
      "mcc": "7372"
    }
  }'

Response examples

Verdict — allowed:
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "verdict": "allow",
    "policy_version": 3,
    "reasons": [],
    "simulated_at": "2026-05-04T12:00:00Z"
  }
}
Verdict — step-up required (amount above threshold, otherwise allowed):
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "verdict": "allow_with_step_up",
    "policy_version": 3,
    "reasons": [
      {
        "axis": "amount",
        "reason_id": "step_up_threshold",
        "message": "amount 750000 exceeds step_up_amount_cents 100000"
      }
    ],
    "simulated_at": "2026-05-04T12:00:00Z"
  }
}
Verdict — denied (daily cap would be breached):
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "verdict": "deny",
    "policy_version": 3,
    "reasons": [
      {
        "axis": "velocity",
        "reason_id": "daily_cap_exceeded",
        "message": "daily spend cap of 100000 cents would be exceeded; current spend 90000"
      }
    ],
    "simulated_at": "2026-05-04T12:00:00Z"
  }
}

Errors

CodeNameCauseRemediation
-32600Invalid requestMalformed JSON-RPC envelopeCheck method, jsonrpc, and id fields
-32602Invalid paramscounterparty.chain not in enum, currency empty, or MCC not exactly 4 digitsValidate against the input schema before calling
-32001UnauthorizedMissing/expired grant tokenRefresh via agent.grant.refresh
-32002Policy deniedGrant missing payments:simulate scopeIssue a new grant with the required scope
-32603Internal errorEnvelope or velocity-context fetch failedRetry — simulate has no side effects