DEVELOPER HUB

One execution boundary for applications and AI agents.

Connect through HTTP, MCP or A2A, and keep payment credentials with your existing provider.

REMOTE MCP

Give an AI client a payment-authority tool.

Add the remote server URL to an MCP-compatible client. The client discovers check_ai_payment_authority and its interactive result view automatically.

{
  "mcpServers": {
    "mandateshield": {
      "url": "https://mandateshield.com/api/mcp"
    }
  }
}

A2A DISCOVERY

Delegate to the authority agent.

Compatible agents can resolve the public card and invoke the payment-authority skill through JSON-RPC.

/.well-known/agent-card.json →

STRICT CRYPTOGRAPHIC PROFILE

Verify the proof, then verify the policy.

POST an envelope plus compact JWS, AP2 SD-JWT or TAP HTTP message evidence to /api/v2/verify. Invalid, expired or wrongly bound signatures fail closed before the ordinary policy engine runs.

Run the live cryptographic test →

PORTABLE RECEIPTS

Verify decisions outside MandateShield.

Each strict decision includes an ES256 receipt committing to the canonical input, decision, evidence assurance and engine version.

Public receipt JWKS →

CURL

Call the pre-flight endpoint

curl https://mandateshield.com/api/v1/preflight \
  -X POST \
  -H "content-type: application/json" \
  -H "authorization: Bearer ms_live_..." \
  -d '{
    "protocol": "AP2",
    "mandate_id": "mnd_2048",
    "agent_id": "agent_travel_07",
    "merchant_id": "merchant_rail",
    "amount": { "value": 124.90, "currency": "USD" },
    "limits": {
      "max_amount": 150,
      "currencies": ["USD"],
      "merchants": ["merchant_rail"]
    },
    "expires_at": "2030-01-01T19:00:00Z",
    "idempotency_key": "order_9f22a1",
    "user_consent": true
  }'

JAVASCRIPT

Fail closed before execution

const response = await fetch(
  "https://mandateshield.com/api/v1/preflight",
  {
    method: "POST",
    headers: {
      "content-type": "application/json",
      authorization: `Bearer ${process.env.MANDATESHIELD_KEY}`
    },
    body: JSON.stringify(purchase)
  }
)

const result = await response.json()
if (result.decision !== "ALLOW") stopPayment(result.findings)

PYTHON

Use the same contract everywhere

import os, requests

result = requests.post(
    "https://mandateshield.com/api/v1/preflight",
    headers={
        "Authorization": f"Bearer {os.environ['MANDATESHIELD_KEY']}"
    },
    json=purchase,
).json()

if result["decision"] != "ALLOW":
    raise RuntimeError(result["findings"])

MACHINE-READABLE

Give tools and AI systems a stable contract.

The OpenAPI document describes authentication, the purchase envelope, decision states and response fields. The AI index links the canonical product, protocol, solution and threat resources.

SELF-SERVICE

Create a test key without a sales call.

Open dashboard →