{
  "schemaVersion": 1,
  "project": "SwissDLT Swap",
  "chainId": 94,
  "updatedAt": "2026-11-07T23:33:18Z",
  "publicOrigin": "https://swap.swissdlt.tech",
  "mcp": {
    "url": "https://swap.swissdlt.tech/mcp",
    "transport": "streamable-http",
    "auth": "none",
    "healthUrl": "https://swap.swissdlt.tech/api/health",
    "mode": "public-reads-and-unsigned-preparation",
    "signing": false,
    "broadcasting": false,
    "productionVerifiedAt": "2026-11-07T23:27:27.850Z",
    "toolCount": 11,
    "protocolVersion": "2025-11-25"
  },
  "thirdfy": {
    "manifestUrl": "https://swap.swissdlt.tech/thirdfy-app.json",
    "appId": "swissdlt_swap",
    "kind": "data",
    "manifestVersion": 1,
    "readActionCount": 8,
    "submitted": false,
    "listed": false,
    "certified": false,
    "writeManifestPublished": false,
    "officialSchemaValidation": "blocked-official-schema-http-404",
    "localFixtureValidation": "passed",
    "readBillingTier": "read_offchain",
    "readCredits": 0.045,
    "creditsObservedAt": "2026-11-07T16:09:06.728857+00:00",
    "creditsSource": "https://api.thirdfy.com/api/v1/agent/actions/catalog",
    "mcpResultSchema": "CallToolResult: content + structuredContent + isError, excluding outer JSON-RPC envelope",
    "thirdfyResultMappingConfirmed": false,
    "localFixtureCount": 8,
    "localFixturesObservedAt": "2026-11-07T16:15:56.982Z",
    "fixtureScope": "Local HTTP MCP handler with live SwissDLT RPC reads; not Thirdfy adapter or official app-schema certification.",
    "productionFixtureValidation": "passed",
    "productionFixtureCount": 8,
    "productionFixturesObservedAt": "2026-11-07T23:27:27.850Z",
    "productionFixtureScope": "Actual remote production MCP calls and runtime input/output schemas; not Thirdfy adapter mapping or certification.",
    "officialSchemaCheckedAt": "2026-11-07T23:33:18Z",
    "deployedContractCount": 6
  },
  "gates": [
    {
      "id": "official-schema",
      "scope": "reads-and-writes",
      "status": "pending",
      "detail": "Advertised machine schema returned HTTP 404 on 2026-11-07 at 16:06, 23:24 and 23:33 UTC, always with the same body. Published-reference checks do not equal official JSON Schema validation.",
      "source": "https://api.thirdfy.com/schemas/thirdfy-app.v1.json",
      "observedAt": "2026-11-07T23:33:18Z"
    },
    {
      "id": "mcp-adapter-mapping",
      "scope": "reads",
      "status": "pending-thirdfy-network-check",
      "detail": "Confirm whether Thirdfy validates the full CallToolResult or unwraps structuredContent. Draft matches the full result our server actually returns."
    },
    {
      "id": "thirdfy-review",
      "scope": "reads-and-writes",
      "status": "not-submitted",
      "detail": "Account submission, appId ownership, static/network checks, human review and test-agent gates have not been performed.",
      "submissionUrl": "https://thirdfy.com/partner/new"
    },
    {
      "id": "chain-94-wallet-support",
      "scope": "writes",
      "status": "not-confirmed",
      "detail": "No provider/action for chain 94 appeared in the observed public action catalog. Read-only remote MCP does not require chain-94 wallet support.",
      "source": "https://api.thirdfy.com/api/v1/agent/actions/catalog",
      "observedAt": "2026-11-07T16:09:06.728857+00:00"
    },
    {
      "id": "contract-source-discovery",
      "scope": "writes",
      "status": "pending",
      "detail": "Canonical explorer was unavailable during earlier checks; Sourcify supported chains did not include chain 94. Own runtime hashes and pinned ABIs support manual review, not automatic source verification. Since 2026-11-07 contracts.json lists all six deployed contracts with ABI URLs and links each address to https://explorer.swissdlt.tech for human review; automatic verified-source discovery is still unavailable.",
      "sources": [
        "https://explorer.swissdlt.ch",
        "https://sourcify.dev/server/chains"
      ],
      "sourceRegistryObservedAt": "2026-11-07T16:12:42.824238+00:00",
      "sourcifyChainCount": 458
    },
    {
      "id": "v3-tuple-and-exit-policy",
      "scope": "swap-writes",
      "status": "not-proven",
      "detail": "exactInputSingle uses a tuple. Thirdfy must prove tuple encoding, nested recipient pins, exact router approvals, minimum-output binding and reverse-exit behavior. No executable swap venue manifest is published."
    },
    {
      "id": "native-token-policy",
      "scope": "wrap-and-unwrap-writes",
      "status": "pending",
      "detail": "WBCTS primitive calls remain local review candidates. Chain execution support, independently verified wrapper source/receiver semantics, native value bounds, risk/valuation policy and live gates remain. No USD peg or USD cap for BCTS is invented."
    }
  ],
  "contractsUrl": "https://swap.swissdlt.tech/.well-known/contracts.json",
  "skillUrl": "https://swap.swissdlt.tech/SKILL.md",
  "docsReference": "https://docs.thirdfy.com/documentation/protocols/thirdfy-app-json",
  "packageStatus": "prepared-for-submission"
}
