{
  "schemaVersion": 1,
  "kind": "local-publication-handoff-index",
  "title": "SwissDLT Thirdfy submission index",
  "note": "This index is not a Thirdfy app manifest. Each service has its own partner submission. Nothing has been submitted, and no listing, certification or wallet execution on chain 94 is asserted.",
  "partnerDashboard": "https://thirdfy.com/partner/new",
  "submission": {
    "submitted": false,
    "requires": "The user's Thirdfy account. The account that first submits an appId becomes its owner."
  },
  "observedAt": "2026-11-08T12:02:46Z",
  "verifiedLiveMeans": "Time of the HTTP check that returned the service's Thirdfy manifest as valid JSON with status 200. 'pending' means it was not live at that check.",
  "apps": [
    {
      "appId": "swissdlt_explorer",
      "title": "SwissDLT Explorer",
      "origin": "https://explorer.swissdlt.tech",
      "provider": {
        "name": "Operal AG",
        "url": "https://operal.biz"
      },
      "verifiedLive": "2026-11-08T12:02:46Z",
      "mcp": null,
      "mcpTools": 0,
      "mcpVerifiedLive": null,
      "manifest": "https://explorer.swissdlt.tech/thirdfy-app.json",
      "manifestVersion": 1,
      "readActions": 2,
      "readiness": "https://explorer.swissdlt.tech/.well-known/thirdfy-readiness.json",
      "contracts": "https://explorer.swissdlt.tech/.well-known/contracts.json",
      "health": null,
      "upstream": "REST over the Explorer's static JSON files; no MCP endpoint",
      "httpStatus": {
        "manifest": 200,
        "readiness": 200,
        "contracts": 200
      },
      "status": "Manifest live; prepared for submission, not submitted",
      "partnerDashboard": "https://thirdfy.com/partner/new"
    },
    {
      "appId": "swissdlt_swap",
      "title": "SwissDLT Swap",
      "origin": "https://swap.swissdlt.tech",
      "provider": {
        "name": "Association of SwissDLT Node Operators",
        "url": "https://swissdlt.tech/about.html#members"
      },
      "verifiedLive": "2026-11-08T12:02:46Z",
      "mcp": "https://swap.swissdlt.tech/mcp",
      "mcpTools": 11,
      "mcpVerifiedLive": "2026-11-08T12:02:46Z",
      "manifest": "https://swap.swissdlt.tech/thirdfy-app.json",
      "manifestVersion": 1,
      "readActions": 8,
      "readiness": "https://swap.swissdlt.tech/.well-known/thirdfy-readiness.json",
      "contracts": "https://swap.swissdlt.tech/.well-known/contracts.json",
      "health": "https://swap.swissdlt.tech/api/health",
      "httpStatus": {
        "manifest": 200,
        "readiness": 200,
        "contracts": 200,
        "health": 200
      },
      "status": "Manifest live; prepared for submission, not submitted",
      "partnerDashboard": "https://thirdfy.com/partner/new"
    },
    {
      "appId": "swissdlt_token_studio",
      "title": "SwissDLT Token Studio",
      "origin": "https://studio.swissdlt.tech",
      "provider": {
        "name": "Association of SwissDLT Node Operators",
        "url": "https://swissdlt.tech/about.html#members"
      },
      "verifiedLive": "2026-11-08T12:02:46Z",
      "mcp": "https://studio.swissdlt.tech/mcp",
      "mcpTools": 7,
      "mcpVerifiedLive": "2026-11-08T12:02:46Z",
      "manifest": "https://studio.swissdlt.tech/thirdfy-app.json",
      "manifestVersion": 2,
      "readActions": 4,
      "readiness": "https://studio.swissdlt.tech/.well-known/thirdfy-readiness.json",
      "contracts": "https://studio.swissdlt.tech/.well-known/contracts.json",
      "health": "https://studio.swissdlt.tech/health",
      "optionalUnsignedDataCandidate": {
        "url": "https://studio.swissdlt.tech/thirdfy-app.full-data-draft.json",
        "manifestVersion": 3,
        "actions": 7,
        "verifiedLive": "2026-11-08T12:02:46Z",
        "status": "Not the primary manifest. Includes tools that prepare unsigned transactions; needs Thirdfy classification review before any submission."
      },
      "httpStatus": {
        "manifest": 200,
        "readiness": 200,
        "contracts": 200,
        "health": 200
      },
      "status": "Manifest live; prepared for submission, not submitted",
      "partnerDashboard": "https://thirdfy.com/partner/new"
    },
    {
      "appId": "swissdlt_bridge_mvp",
      "title": "SwissDLT Bridge MVP",
      "origin": "https://bridge.swissdlt.tech",
      "provider": {
        "name": "Swisscoast AG",
        "url": "https://www.swisscoast.ch"
      },
      "verifiedLive": "2026-11-08T12:02:46Z",
      "mcp": "https://bridge.swissdlt.tech/api/mcp",
      "mcpTools": 3,
      "mcpVerifiedLive": "2026-11-08T12:02:46Z",
      "manifest": "https://bridge.swissdlt.tech/thirdfy-app.json",
      "manifestVersion": 2,
      "readActions": 3,
      "readiness": "https://bridge.swissdlt.tech/.well-known/thirdfy-readiness.json",
      "contracts": "https://bridge.swissdlt.tech/.well-known/contracts.json",
      "health": "https://bridge.swissdlt.tech/api/health",
      "bridgeDocs": "https://bridge.swissdlt.tech/integrations/thirdfy/bridge-docs.json",
      "httpStatus": {
        "manifest": 200,
        "readiness": 200,
        "contracts": 200,
        "health": 503
      },
      "status": "Manifest live; prepared for submission, not submitted",
      "partnerDashboard": "https://thirdfy.com/partner/new"
    },
    {
      "appId": "swissdlt_oracle",
      "title": "SwissOracle",
      "origin": "https://oracle.swissdlt.tech",
      "provider": {
        "name": "Operal AG",
        "url": "https://operal.biz"
      },
      "verifiedLive": "2026-11-08T12:02:46Z",
      "mcp": "https://oracle.swissdlt.tech/mcp",
      "mcpTools": 5,
      "mcpVerifiedLive": "2026-11-08T12:02:46Z",
      "manifest": "https://oracle.swissdlt.tech/thirdfy-app.json",
      "manifestVersion": 1,
      "readActions": 5,
      "readiness": "https://oracle.swissdlt.tech/.well-known/thirdfy-readiness.json",
      "contracts": "https://oracle.swissdlt.tech/.well-known/contracts.json",
      "health": "https://oracle.swissdlt.tech/health",
      "rest": "https://oracle.swissdlt.tech/api/v1",
      "httpStatus": {
        "manifest": 200,
        "readiness": 200,
        "contracts": 200,
        "health": 200
      },
      "status": "Manifest live; prepared for submission, not submitted",
      "partnerDashboard": "https://thirdfy.com/partner/new"
    },
    {
      "appId": "swissdlt_swissproof",
      "title": "SwissProof",
      "origin": "https://timestamp.swissdlt.tech",
      "provider": {
        "name": "Urstamm AG",
        "url": "https://www.urstamm.ch"
      },
      "verifiedLive": "2026-11-08T12:02:46Z",
      "mcp": "https://timestamp.swissdlt.tech/mcp",
      "mcpTools": 9,
      "mcpVerifiedLive": "2026-11-08T12:02:46Z",
      "manifest": "https://timestamp.swissdlt.tech/thirdfy-app.json",
      "manifestVersion": 2,
      "readActions": 6,
      "readiness": "https://timestamp.swissdlt.tech/.well-known/thirdfy-readiness.json",
      "contracts": "https://timestamp.swissdlt.tech/.well-known/contracts.json",
      "health": "https://timestamp.swissdlt.tech/api/v1/health",
      "openApi": "https://timestamp.swissdlt.tech/api/v1/openapi.json",
      "httpStatus": {
        "manifest": 200,
        "readiness": 200,
        "contracts": 200,
        "health": 200
      },
      "status": "Manifest live; prepared for submission, not submitted",
      "partnerDashboard": "https://thirdfy.com/partner/new"
    },
    {
      "appId": null,
      "title": "SwissDLT website (hub)",
      "origin": "https://swissdlt.tech",
      "verifiedLive": "2026-11-08T12:02:46Z",
      "mcp": null,
      "mcpTools": 0,
      "manifest": null,
      "readiness": null,
      "contracts": "https://swissdlt.tech/.well-known/contracts.json",
      "protocols": "https://swissdlt.tech/.well-known/protocols.json",
      "llms": "https://swissdlt.tech/llms.txt",
      "httpStatus": {
        ".well-known/swissdlt-members.json": 200,
        ".well-known/thirdfy-index.json": 200,
        ".well-known/contracts.json": 200,
        ".well-known/protocols.json": 200
      },
      "status": "Hub: no MCP server and no app manifest of its own; publishes this index, the contract directory and the protocol facts",
      "partnerDashboard": null
    }
  ],
  "hubFiles": {
    "SwissDLT association members": "https://swissdlt.tech/.well-known/swissdlt-members.json",
    "Thirdfy submission index": "https://swissdlt.tech/.well-known/thirdfy-index.json",
    "SwissDLT contracts": "https://swissdlt.tech/.well-known/contracts.json",
    "SwissDLT protocol facts": "https://swissdlt.tech/.well-known/protocols.json"
  },
  "execution": {
    "chainId": 94,
    "hostedSigning": false,
    "thirdfyWriteActions": [],
    "note": "MCP clients can obtain unsigned transaction proposals from some services. That does not establish Thirdfy wallet execution on chain 94."
  }
}
