Skip to content
Back to Spending Authority

Card snapshot

authority.webmesh.ai · 2026-09-24 17:33:46 UTC · 7576b2c21e24bbf0e8d944aed347c6dde2abd6511484eacf718d698ee9d62d2c

This is a frozen copy of the agent's agent-card.json as we observed it at the timestamp above. We capture a new snapshot every time the card's content hash changes. Useful for: forensic drift analysis, verifying downstream callers see the right version, reproducing routing decisions made historically.

{
  "capabilities": {
    "extendedAgentCard": false,
    "extensions": [
      {
        "description": "MCP server exposing request_mandate and get_policy over streamable-HTTP.",
        "params": {
          "discoveryUrl": "https://authority.webmesh.ai/.well-known/mcp.json",
          "endpoint": "https://authority.webmesh.ai/mcp",
          "protocolVersion": "2025-03-26",
          "transport": "streamable-http"
        },
        "required": false,
        "uri": "https://modelcontextprotocol.io"
      },
      {
        "description": "Identity and interoperability stack: ANS Trust Card (x5c chain + stapled SCITT receipt), DNS-AID SVCB with DNSSEC and DANE TLSA, DNSid organizational accountability, ARD / AI-Catalog discovery, and Web Bot Auth (RFC 9421 HTTP Message Signatures) outbound request signing.",
        "params": {
          "agentFacts": "https://authority.webmesh.ai/agentfacts.json",
          "ard": "https://authority.webmesh.ai/.well-known/ard.json",
          "httpMessageSignaturesDirectory": "https://authority.webmesh.ai/.well-known/http-message-signatures-directory",
          "identityAnchors": [
            "ans-x509",
            "did:web",
            "dns-aid",
            "dnssec",
            "dane-tlsa",
            "dnsid"
          ],
          "outboundSigning": "web-bot-auth",
          "trustCard": "https://authority.webmesh.ai/.well-known/ans/trust-card.json"
        },
        "required": false,
        "uri": "https://webmesh.ai/ext/ans-trust-stack/v1"
      }
    ],
    "pushNotifications": false,
    "streaming": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/plain"
  ],
  "description": "The human's spending policy as a machine-verifiable instrument. Approves once and issues narrowly scoped RFC 9421 AP2 mandates with DPoP key binding (jkt). Stubbed Auth0 consent for the demo; mandate is the wire artifact the Supplier verifies and the Auditor checks.",
  "documentationUrl": "https://agent.webmesh.ai",
  "name": "Spending Authority",
  "protocolVersion": "1.0",
  "provider": {
    "did": "did:web:authority.webmesh.ai",
    "organization": "Webmesh",
    "url": "https://webmesh.ai"
  },
  "securityRequirements": [
    {
      "noAuth": []
    }
  ],
  "securitySchemes": {
    "ansIdentityCert": {
      "description": "ANS Identity Certificate issued by the ANS Registration Authority. The agent presents this cert during the TLS handshake; clients verify against the chain advertised in the Trust Card's keys[].x5c. See https://authority.webmesh.ai/.well-known/ans/trust-card.json",
      "type": "mutualTLS"
    },
    "httpMessageSignatures": {
      "description": "RFC 9421 HTTP Message Signatures over response components, using the Ed25519 key advertised in the Trust Card. Public key directory at https://authority.webmesh.ai/.well-known/http-message-signatures-directory",
      "scheme": "signature",
      "type": "http"
    },
    "noAuth": {
      "description": "This agent is publicly accessible with no authentication required. All skills are available to any caller.",
      "type": "noAuth"
    },
    "requesterSignature": {
      "alg": "EdDSA",
      "boundArgs": [
        "subject_ans",
        "quote_id",
        "total",
        "currency",
        "merchant_ans",
        "scope_hint",
        "traveler_dpop_jwk"
      ],
      "denialCodes": [
        "REQUEST_NOT_SIGNED",
        "BAD_SIGNATURE",
        "STALE_REQUEST",
        "REPLAYED_REQUEST",
        "SUBJECT_MISMATCH",
        "ARGS_MISMATCH",
        "IDENTITY_UNVERIFIED",
        "INSUFFICIENT_FUNDS"
      ],
      "description": "Caller must include request_jws: a compact JWS (alg=EdDSA) signed with the caller's ANS identity Ed25519 key. Payload must bind: subject_ans, quote_id, total, currency, merchant_ans, scope_hint, traveler_dpop_jwk. Freshness: iat within 300 s of server time. Replay protection: jti stored per-request for 2x the freshness window; reuse is denied. JWKS discovery: authority resolves the caller's public key from {caller_host}/.well-known/jwks.json (internal loopback when GOVWARE_JWKS_INTERNAL_{SUBDOMAIN} is set). Denial codes: REQUEST_NOT_SIGNED, BAD_SIGNATURE, STALE_REQUEST, REPLAYED_REQUEST, SUBJECT_MISMATCH, ARGS_MISMATCH, IDENTITY_UNVERIFIED, INSUFFICIENT_FUNDS.",
      "format": "compact-jws",
      "freshnessSecs": 300,
      "in": "toolArgument",
      "jwksDiscovery": "caller-ans-jwks",
      "name": "request_jws",
      "replayProtection": "jti-dedup",
      "type": "requesterJws"
    }
  },
  "signatures": [
    {
      "header": {
        "kid": "_JgCdyejGF0u-RjeiykAkPxn9PS8zhnwRRZNnPEfEmE"
      },
      "protected": "eyJhbGciOiJFUzI1NiIsImprdSI6Imh0dHBzOi8vYXV0aG9yaXR5LndlYm1lc2guYWkvLndlbGwta25vd24vYW5zL3RydXN0LWNhcmQuanNvbiIsImtpZCI6Il9KZ0NkeWVqR0YwdS1SamVpeWtBa1B4bjlQUzh6aG53UlJaTm5QRWZFbUUiLCJ0eXAiOiJhZ2VudC1jYXJkK2p3cyJ9",
      "signature": "1GFhbK6dJrGIxt7rCH8a1btLaLqu711-rmw98vFDMH3tLDBZMLlV35Mjypj-UhZ8kObou9njkthagnZ16zVWLg"
    }
  ],
  "skills": [
    {
      "description": "Issue a signed AP2 mandate with DPoP key binding (jkt). Requires a compact EdDSA JWS (request_jws) signed by the caller's ANS identity key, binding subject_ans, quote_id, total, currency, merchant_ans, scope_hint, and traveler_dpop_jwk. Freshness window: 300 s. Replay protection: jti must be unique. JWKS fetched from the caller's ANS JWKS endpoint.",
      "examples": [
        "Approve $620 flight to a destination"
      ],
      "id": "request_mandate",
      "inputModes": [
        "application/json"
      ],
      "name": "Issue Mandate",
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "requesterSignature": {
            "scope": "purchase:flight:*"
          }
        }
      ],
      "tags": [
        "mandate",
        "authorization",
        "dpop",
        "requester-signature"
      ]
    },
    {
      "description": "Return the current spending policy (max_per_trip, currency, allowed_merchants, categories).",
      "examples": [
        "What is the spending policy?"
      ],
      "id": "get_policy",
      "inputModes": [
        "application/json"
      ],
      "name": "Get Policy",
      "outputModes": [
        "application/json"
      ],
      "securityRequirements": [
        {
          "noAuth": []
        }
      ],
      "tags": [
        "mandate",
        "policy"
      ]
    }
  ],
  "supportedInterfaces": [
    {
      "protocolBinding": "jsonrpc",
      "protocolVersion": "1.0",
      "url": "https://authority.webmesh.ai"
    }
  ],
  "url": "https://authority.webmesh.ai",
  "version": "1.0.4",
  "x-discovery": {
    "ans_name": "ans://v1.0.4.authority.webmesh.ai",
    "ans_registered": "prod",
    "dns_aid_svcb": "authority.webmesh.ai IN SVCB 1 . alpn=a2a,h2",
    "tl_badge": "https://transparency.ans.godaddy.com/v1/agents/db1eaddb-a1dc-42a4-a76a-f72e5719408f",
    "trust_index": {
      "auth": "sso-key",
      "score_field": "scores.trustScore",
      "score_url": "https://api.godaddy.com/v1/ans/registered-agents?query=authority.webmesh.ai"
    }
  },
  "x-identity": {
    "ans": {
      "transparencyLog": "https://transparency.ans.godaddy.com/v1/agents/db1eaddb-a1dc-42a4-a76a-f72e5719408f",
      "trustCard": "https://authority.webmesh.ai/.well-known/ans/trust-card.json",
      "uri": "ans://v1.0.4.authority.webmesh.ai"
    },
    "wimse": {
      "jwksUri": "https://authority.webmesh.ai/.well-known/jwks.json",
      "signingAlgs": [
        "EdDSA"
      ],
      "spiffeId": "spiffe://webmesh.ai/agents/authority",
      "supportedProfiles": [
        "urn:ietf:params:wimse:agent-delegation-chain"
      ]
    }
  },
  "x-security-note": "request_mandate enforces requester-identity verification: callers must include a compact EdDSA JWS (request_jws) signed with their ANS identity key, binding the mandate arguments. The authority fetches the caller's public key from their ANS JWKS endpoint and verifies argument binding, freshness (300 s window), and replay (jti dedup). get_policy is unauthenticated (noAuth). Denial codes: REQUEST_NOT_SIGNED, BAD_SIGNATURE, STALE_REQUEST, REPLAYED_REQUEST, SUBJECT_MISMATCH, ARGS_MISMATCH, IDENTITY_UNVERIFIED, INSUFFICIENT_FUNDS."
}