{
  "snapshotAt": "2026-06-04T07:42:00.276Z",
  "count": 4,
  "routing": {
    "summary": "Workflows are end-to-end procedures for user goals. Capabilities map product areas to tools and APIs. MCP and Integration Skill are how you execute.",
    "rules": [
      {
        "if": "The user gave a concrete task or goal (monitor payments, check wallet, diagnose RPC)",
        "then": "Fetch /api/workflows first, then the matching /workflows/{slug}.md",
        "priority": 1
      },
      {
        "if": "You need to know what Tatum offers or which tools apply to a domain",
        "then": "Fetch /api/capabilities or browse /workflows#capabilities. Each entry links MCP tools, OpenAPI, docs, and embedded workflows",
        "priority": 2
      },
      {
        "if": "You will call Tatum at runtime inside an MCP client",
        "then": "Install MCP, then /api/mcp-tools",
        "priority": 3
      },
      {
        "if": "You will generate integration code into a repository",
        "then": "Use the Integration Skill (/integration-skill) and /auth for the API key",
        "priority": 4
      },
      {
        "if": "You need a specific RPC URL or to confirm Tatum supports a chain or network",
        "then": "Use /api/chains. One row per chain x network x interface, includes URLs. For the full nested tree use /api/blockchain-registry. For HTTP operation shapes use /api/openapi-index",
        "priority": 5
      }
    ],
    "canonicalFor": "user goals and end-to-end agent procedures"
  },
  "workflows": [
    {
      "slug": "wallet-portfolio-assistant",
      "name": "Wallet Portfolio Assistant",
      "goal": "Answer \"what does wallet X hold on chain Y?\" in one round trip.",
      "mcpTools": [
        "get_wallet_portfolio",
        "get_tokens",
        "get_exchange_rate"
      ],
      "apiEndpoints": [
        "GET /v4/data/wallet/portfolio",
        "GET /v4/data/wallet/tokens"
      ],
      "failures": [
        "Unsupported chain for the address",
        "Address checksum invalid for the chain",
        "Token contract returns malformed metadata"
      ],
      "recovery": [
        "Validate address against chain rules before calling",
        "Surface the chain support list from /api/chains when the chain is unknown",
        "Skip malformed tokens, never fail the whole portfolio call"
      ],
      "url": "https://ai.tatum.io/workflows/wallet-portfolio-assistant",
      "markdown": "https://ai.tatum.io/workflows/wallet-portfolio-assistant.md",
      "capabilitySlugs": [
        "wallet-portfolio"
      ],
      "capabilityUrls": [
        "https://ai.tatum.io/capabilities/wallet-portfolio"
      ]
    },
    {
      "slug": "incoming-payment-monitor",
      "name": "Incoming Payment Monitor",
      "goal": "Notify when an address receives a payment, and act on it.",
      "mcpTools": [
        "get_transaction_history"
      ],
      "apiEndpoints": [
        "POST /v4/subscription",
        "GET /v4/subscription",
        "DELETE /v4/subscription/{id}"
      ],
      "failures": [
        "Webhook endpoint unreachable",
        "HMAC signature mismatch",
        "Duplicate webhook delivery"
      ],
      "recovery": [
        "Tatum retries failed deliveries; ensure 2xx within the retry budget",
        "Reject unsigned/wrong-signature payloads and alert",
        "Deduplicate by event id; treat handlers as idempotent"
      ],
      "url": "https://ai.tatum.io/workflows/incoming-payment-monitor",
      "markdown": "https://ai.tatum.io/workflows/incoming-payment-monitor.md",
      "capabilitySlugs": [
        "notifications",
        "transaction-monitoring"
      ],
      "capabilityUrls": [
        "https://ai.tatum.io/capabilities/notifications",
        "https://ai.tatum.io/capabilities/transaction-monitoring"
      ]
    },
    {
      "slug": "nft-ownership-checker",
      "name": "NFT Ownership Checker",
      "goal": "Verify whether an address holds a token in a given NFT collection.",
      "mcpTools": [
        "check_owner",
        "get_owners",
        "get_metadata"
      ],
      "apiEndpoints": [
        "GET /v4/data/nft/owners",
        "GET /v4/data/nft/metadata"
      ],
      "failures": [
        "Wrong chain for the contract",
        "Contract not an ERC-721/1155",
        "Address normalization mismatch"
      ],
      "recovery": [
        "Validate contract on the requested chain first",
        "Fall back to `get_owners` if `check_owner` returns ambiguous results",
        "Always compare addresses checksummed/normalized"
      ],
      "url": "https://ai.tatum.io/workflows/nft-ownership-checker",
      "markdown": "https://ai.tatum.io/workflows/nft-ownership-checker.md",
      "capabilitySlugs": [
        "nft-ownership"
      ],
      "capabilityUrls": [
        "https://ai.tatum.io/capabilities/nft-ownership"
      ]
    },
    {
      "slug": "rpc-diagnostic-agent",
      "name": "RPC Diagnostic Agent",
      "goal": "Diagnose RPC connectivity, method support, and response health for any chain.",
      "mcpTools": [
        "gateway_get_supported_chains",
        "gateway_get_supported_methods",
        "gateway_execute_rpc"
      ],
      "apiEndpoints": [],
      "failures": [
        "Method not supported on the chain",
        "Rate-limit / quota exhaustion",
        "Network partition / endpoint downtime"
      ],
      "recovery": [
        "Confirm the method against `gateway_get_supported_methods` before calling",
        "Backoff with jitter on 429; never spin",
        "Re-route via `gateway_execute_rpc` (managed gateway handles failover)"
      ],
      "url": "https://ai.tatum.io/workflows/rpc-diagnostic-agent",
      "markdown": "https://ai.tatum.io/workflows/rpc-diagnostic-agent.md",
      "capabilitySlugs": [
        "rpc-gateway"
      ],
      "capabilityUrls": [
        "https://ai.tatum.io/capabilities/rpc-gateway"
      ]
    }
  ]
}