{
  "openapi": "3.1.1",
  "info": {
    "title": "Bridge Transfer Tracker API",
    "version": "1.0.0",
    "summary": "Where is my bridged money? Finds the bridge deposit in a transaction and checks if it arrived.",
    "description": "Every endpoint performs the same calculation as the human page and returns inputs, result, units, assumptions, sources, warnings and computedAt. MCP endpoint: /mcp."
  },
  "servers": [
    {
      "url": "https://bridgetransfertracker.usefulweb.site"
    }
  ],
  "paths": {
    "/api/v1/calculate": {
      "post": {
        "operationId": "calculate",
        "summary": "Where is my bridged money? Finds the bridge deposit in a transaction and checks if it arrived.",
        "description": "Paste the source-chain transaction of a bridge transfer. The tracker reads its logs from the chain, recognises Circle CCTP (v1 and v2), Across, the canonical OP Stack bridges and Arbitrum inbox deposits, decodes token, amount, sender, recipient and destination, and asks the protocol's own status service (Circle Iris attestation, Across deposit status) whether it was delivered.\n\nMethodology:\n- Logs come from eth_getTransactionReceipt (or your pasted JSON). Event topics are computed with Keccak-256 from the protocols' published event signatures (Circle CCTP TokenMessenger v1/v2, Across SpokePool, OP Stack L1StandardBridge/OptimismPortal, Arbitrum Inbox).\n- Amounts: USDC (CCTP) has 6 decimals; other tokens are read with decimals() on the source chain when online.\n- Status: CCTP → Circle Iris attestation API (v1/v2); Across → Across deposit-status API; canonical rollup deposits are relayed by the rollup protocol and are described, not polled.\n- Pasted logs are decoded without any network call (status \"offline\").",
        "tags": [
          "web3"
        ],
        "x-mcp-tool": "bridge_transfer_tracker",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BridgeTransferTrackerInput"
              },
              "examples": {
                "example1": {
                  "summary": "CCTP v1 burn Ethereum → Base (offline logs)",
                  "value": {
                    "chain": "ethereum",
                    "logs": "[{\"address\":\"0xbd3fa81b58ba92a82136038b25adec7066af3155\",\"topics\":[\"0x2fa9ca894982930190727e75500a97d8dc500233a5065e0f3126c48fbe0343c0\",\"0x000000000000000000000000000000000000000000000000000000000001e240\",\"0x000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\"0x0000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed\"],\"data\":\"0x000000000000000000000000000000000000000000000000000000000ee6b2800000000000000000000000005aaeb6053f3e94c9b9a09f33669435e7ef1beaed00000000000000000000000000000000000000000000000000000000000000060000000000000000000000001682ae6375c4e4a97e4b583bc394c861a46d89620000000000000000000000000000000000000000000000000000000000000000\"}]"
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Calculation result envelope.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BridgeTransferTrackerResult"
                }
              }
            }
          },
          "400": {
            "description": "Malformed JSON body.",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "422": {
            "description": "Invalid input (see errors[]).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          },
          "429": {
            "description": "Rate limit exceeded (see Retry-After).",
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/Problem"
                }
              }
            }
          }
        }
      }
    },
    "/api/v1/tool": {
      "get": {
        "operationId": "getToolDefinition",
        "summary": "Inputs, output schema and examples for this tool",
        "responses": {
          "200": {
            "description": "Tool definition.",
            "content": {
              "application/json": {
                "schema": {
                  "type": "object"
                }
              }
            }
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "Problem": {
        "type": "object",
        "description": "RFC 9457 problem details. 422 responses include per-field `errors`.",
        "required": [
          "type",
          "title",
          "status",
          "detail"
        ],
        "properties": {
          "type": {
            "type": "string"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "integer"
          },
          "detail": {
            "type": "string"
          },
          "code": {
            "type": "string"
          },
          "errors": {
            "type": "array",
            "items": {
              "type": "object",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string"
                },
                "message": {
                  "type": "string"
                }
              }
            }
          }
        }
      },
      "BridgeTransferTrackerInput": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "chain": {
            "title": "Source chain (where you sent from)",
            "type": "string",
            "enum": [
              "ethereum",
              "base",
              "arbitrum",
              "optimism",
              "polygon",
              "avalanche",
              "bsc"
            ],
            "default": "ethereum"
          },
          "txHash": {
            "title": "Source transaction hash",
            "type": "string",
            "maxLength": 66
          },
          "logs": {
            "title": "Or: receipt logs as JSON (offline)",
            "description": "The \"logs\" array from eth_getTransactionReceipt.",
            "type": "string",
            "maxLength": 500000
          }
        },
        "required": []
      },
      "BridgeTransferTrackerResult": {
        "type": "object",
        "additionalProperties": false,
        "required": [
          "schemaVersion",
          "tool",
          "computedAt",
          "inputs",
          "summary",
          "result",
          "units",
          "assumptions",
          "sources",
          "warnings",
          "presentation",
          "links"
        ],
        "properties": {
          "schemaVersion": {
            "type": "string",
            "const": "1.0"
          },
          "tool": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "id",
              "name",
              "version"
            ],
            "properties": {
              "id": {
                "type": "string"
              },
              "name": {
                "type": "string"
              },
              "version": {
                "type": "string"
              }
            }
          },
          "computedAt": {
            "type": "string",
            "format": "date-time"
          },
          "inputs": {
            "type": "object",
            "description": "Normalised inputs actually used, including applied defaults."
          },
          "summary": {
            "type": "string"
          },
          "result": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "sourceChain",
              "txHash",
              "transfers",
              "recognised"
            ],
            "properties": {
              "sourceChain": {
                "type": "string"
              },
              "txHash": {
                "type": [
                  "string",
                  "null"
                ]
              },
              "recognised": {
                "type": "boolean"
              },
              "transfers": {
                "type": "array",
                "items": {
                  "type": "object",
                  "additionalProperties": false,
                  "required": [
                    "protocol",
                    "bridgeContract",
                    "token",
                    "symbol",
                    "amountRaw",
                    "amount",
                    "sender",
                    "recipient",
                    "destination",
                    "depositId",
                    "status",
                    "detail",
                    "destinationTx",
                    "checkedVia"
                  ],
                  "properties": {
                    "protocol": {
                      "type": "string",
                      "enum": [
                        "circle-cctp-v1",
                        "circle-cctp-v2",
                        "across",
                        "op-stack-canonical",
                        "arbitrum-canonical"
                      ]
                    },
                    "bridgeContract": {
                      "type": "string"
                    },
                    "token": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "symbol": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "amountRaw": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "amount": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "sender": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "recipient": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "destination": {
                      "type": "string"
                    },
                    "depositId": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "status": {
                      "type": "string",
                      "enum": [
                        "completed",
                        "pending",
                        "awaiting-attestation",
                        "unknown",
                        "not-trackable",
                        "offline"
                      ]
                    },
                    "detail": {
                      "type": "string"
                    },
                    "destinationTx": {
                      "type": [
                        "string",
                        "null"
                      ]
                    },
                    "checkedVia": {
                      "type": [
                        "string",
                        "null"
                      ]
                    }
                  }
                }
              }
            }
          },
          "units": {
            "type": "object",
            "additionalProperties": {
              "type": "string"
            }
          },
          "assumptions": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "sources": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "required": [
                "title"
              ],
              "properties": {
                "title": {
                  "type": "string"
                },
                "url": {
                  "type": "string"
                },
                "publisher": {
                  "type": "string"
                },
                "retrievedAt": {
                  "type": "string"
                },
                "note": {
                  "type": "string"
                }
              }
            }
          },
          "warnings": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "presentation": {
            "type": "array",
            "items": {
              "type": "object"
            },
            "description": "Display blocks used by the human page (same data)."
          },
          "links": {
            "type": "object",
            "additionalProperties": false,
            "required": [
              "human",
              "api",
              "openapi",
              "methodology"
            ],
            "properties": {
              "human": {
                "type": "string",
                "format": "uri"
              },
              "api": {
                "type": "string",
                "format": "uri"
              },
              "openapi": {
                "type": "string",
                "format": "uri"
              },
              "methodology": {
                "type": "string",
                "format": "uri"
              }
            }
          }
        }
      }
    }
  }
}