{
  "snapshotAt": "2026-06-04T07:42:00.276Z",
  "count": 6,
  "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
      }
    ]
  },
  "capabilities": [
    {
      "slug": "rpc-gateway",
      "name": "RPC Gateway",
      "category": "rpc",
      "summary": "Direct JSON-RPC and chain-native protocol access to 130+ networks through a single managed gateway.",
      "whyAgentsUse": "Lets agents query chain state, simulate transactions, and call contracts without operating their own nodes.",
      "mcpTools": [
        "gateway_get_supported_chains",
        "gateway_get_supported_methods",
        "gateway_execute_rpc"
      ],
      "openapi": [],
      "docs": [
        "https://docs.tatum.io"
      ],
      "risk": "low",
      "order": 10,
      "url": "https://ai.tatum.io/capabilities/rpc-gateway",
      "markdown": "https://ai.tatum.io/capabilities/rpc-gateway.md",
      "workflows": [
        {
          "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"
        }
      ],
      "primaryWorkflow": "rpc-diagnostic-agent"
    },
    {
      "slug": "wallet-portfolio",
      "name": "Wallet Portfolio",
      "category": "data",
      "summary": "Aggregated balances, tokens, and historical positions for any wallet across supported chains.",
      "whyAgentsUse": "Lets agents answer \"what does this wallet hold?\" with one call, instead of crawling chains per-asset.",
      "mcpTools": [
        "get_wallet_portfolio",
        "get_wallet_balance_by_time",
        "get_tokens"
      ],
      "openapi": [
        {
          "schema": "blockchain-data",
          "tag": "Wallet API"
        }
      ],
      "docs": [
        "https://docs.tatum.io"
      ],
      "risk": "low",
      "order": 20,
      "url": "https://ai.tatum.io/capabilities/wallet-portfolio",
      "markdown": "https://ai.tatum.io/capabilities/wallet-portfolio.md",
      "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"
        }
      ],
      "primaryWorkflow": "wallet-portfolio-assistant"
    },
    {
      "slug": "notifications",
      "name": "Notifications",
      "category": "notifications",
      "summary": "Webhook-based subscriptions for incoming transactions, contract events, and chain activity.",
      "whyAgentsUse": "Push beats polling. Agents react to chain events without burning RPC quota.",
      "mcpTools": [],
      "openapi": [
        {
          "schema": "notifications",
          "tag": "Subscriptions"
        }
      ],
      "docs": [
        "https://docs.tatum.io"
      ],
      "risk": "low",
      "order": 30,
      "url": "https://ai.tatum.io/capabilities/notifications",
      "markdown": "https://ai.tatum.io/capabilities/notifications.md",
      "workflows": [
        {
          "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"
        }
      ],
      "primaryWorkflow": "incoming-payment-monitor"
    },
    {
      "slug": "nft-ownership",
      "name": "NFT Ownership",
      "category": "data",
      "summary": "Resolve owners of a token, balances per address, and metadata for NFTs and multitokens.",
      "whyAgentsUse": "Lets agents gate access, verify drops, or audit ownership without bespoke indexers.",
      "mcpTools": [
        "get_owners",
        "check_owner",
        "get_metadata"
      ],
      "openapi": [
        {
          "schema": "blockchain-data",
          "tag": "NFT API"
        }
      ],
      "docs": [
        "https://docs.tatum.io"
      ],
      "risk": "low",
      "order": 40,
      "url": "https://ai.tatum.io/capabilities/nft-ownership",
      "markdown": "https://ai.tatum.io/capabilities/nft-ownership.md",
      "workflows": [
        {
          "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"
        }
      ],
      "primaryWorkflow": "nft-ownership-checker"
    },
    {
      "slug": "exchange-rates",
      "name": "Exchange Rates",
      "category": "data",
      "summary": "Real-time token and fiat exchange rates across supported chains.",
      "whyAgentsUse": "Convert balances and transaction values into user-facing currencies without integrating a separate price oracle.",
      "mcpTools": [
        "get_exchange_rate"
      ],
      "openapi": [
        {
          "schema": "blockchain-data",
          "tag": "Exchange Rates"
        }
      ],
      "docs": [
        "https://docs.tatum.io"
      ],
      "risk": "low",
      "order": 50,
      "url": "https://ai.tatum.io/capabilities/exchange-rates",
      "markdown": "https://ai.tatum.io/capabilities/exchange-rates.md",
      "workflows": [],
      "primaryWorkflow": null
    },
    {
      "slug": "transaction-monitoring",
      "name": "Transaction Monitoring",
      "category": "data",
      "summary": "Address transaction history with filtering, decoding hints, and pagination.",
      "whyAgentsUse": "Lets agents reconstruct what happened to an address without scanning blocks.",
      "mcpTools": [
        "get_transaction_history",
        "get_block_by_time"
      ],
      "openapi": [
        {
          "schema": "blockchain-data",
          "tag": "Transactions API"
        }
      ],
      "docs": [
        "https://docs.tatum.io"
      ],
      "risk": "low",
      "order": 60,
      "url": "https://ai.tatum.io/capabilities/transaction-monitoring",
      "markdown": "https://ai.tatum.io/capabilities/transaction-monitoring.md",
      "workflows": [
        {
          "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"
        }
      ],
      "primaryWorkflow": "incoming-payment-monitor"
    }
  ]
}