{"ok":true,"schema_version":1,"data":{"contract_version":"2026-07-03.2","generated_at":"2026-09-20T12:26:49.169Z","name":"Ditto","netuid":118,"schema_version":1,"slug":"sn-118","surfaces":[{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-118-backprop-dashboard","key":"srf-b93586e4cc5b00e8","kind":"dashboard","last_verified_at":null,"name":"Ditto Backprop Finance dashboard","netuid":118,"notes":"Universal Backprop Finance dTAO subnet dashboard candidate. Third-party enrichment, not protocol authority.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"backprop-finance","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":true,"source_tier":"third-party-index","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://backprop.finance/dtao/subnets/118-ditto"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://backprop.finance/dtao/subnets/118-ditto"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-agent-account-by-id","key":"srf-762a3de49f54f5ad","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin agent-account by id","netuid":118,"notes":"Get a single agent account created by this app operation on the Ditto Admin API (GET, PATCH /agent-accounts/{account_id}), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Path-parameterized on {account_id}, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/agent-accounts/%7Baccount_id%7D"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-agent-account-link","key":"srf-7829f427f3e4c2ab","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin agent-account link","netuid":118,"notes":"Link an agent account to a user operation on the Ditto Admin API (POST /agent-accounts/{account_id}/link), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Path-parameterized on {account_id}, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/agent-accounts/%7Baccount_id%7D/link"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-agent-account-readable-threads","key":"srf-4de5b8b83f5954e2","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin agent-account readable threads","netuid":118,"notes":"List an agent account's readable threads operation on the Ditto Admin API (GET, PUT /agent-accounts/{account_id}/readable-threads), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Path-parameterized on {account_id}, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/agent-accounts/%7Baccount_id%7D/readable-threads"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-agent-account-unlink","key":"srf-d295a575a144d51f","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin agent-account unlink","netuid":118,"notes":"Unlink an agent account from its user operation on the Ditto Admin API (POST /agent-accounts/{account_id}/unlink), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Path-parameterized on {account_id}, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/agent-accounts/%7Baccount_id%7D/unlink"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-agent-accounts","key":"srf-314f28041becc022","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin agent-accounts collection","netuid":118,"notes":"List all agent accounts created by this app (paginated) operation on the Ditto Admin API (GET, POST /agent-accounts), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Live-verified 2026-07-21: GET https://api.heyditto.ai/api/admin/v1/agent-accounts without credentials -> HTTP 401 {\"message\":\"unauthorized\",\"status\":401}, confirming the gate.","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/agent-accounts"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-consent-requests","key":"srf-c47f4c7e80f71800","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin consent requests","netuid":118,"notes":"Create an OAuth consent request (returnable consent URL) operation on the Ditto Admin API (POST /consent-requests), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/consent-requests"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-graphs","key":"srf-ce66346467a1cd64","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin graphs collection","netuid":118,"notes":"List graphs provisioned by this app operation on the Ditto Admin API (GET, POST /graphs), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Live-verified 2026-07-21: GET https://api.heyditto.ai/api/admin/v1/graphs without credentials -> HTTP 401 {\"message\":\"unauthorized\",\"status\":401}, confirming the gate.","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/graphs"},{"auth_required":false,"authority":"community","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-openapi","key":"srf-4523025a56e6887a","kind":"openapi","last_verified_at":null,"name":"Ditto Admin API OpenAPI schema","netuid":118,"notes":"Public no-auth Swagger 2.0 schema (info.title \"Ditto Admin API\", 13 paths, basePath /api/admin/v1) served by the SN118 Ditto backend at api.heyditto.ai. The official Ditto developer docs (heyditto.ai/docs/building-apps-on-ditto) instruct developers to open the Swagger UI at /api/admin/v1/swagger/, which this doc.json backs. The schema document itself is public and unauthenticated (the API it describes uses an AdminKey). Fills the manifest gap: no machine-readable schema was recorded before.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"reyanthony062001-ops"},"schema_status":"machine-readable","schema_url":"https://api.heyditto.ai/api/admin/v1/swagger/doc.json","source_urls":["https://heyditto.ai/docs/building-apps-on-ditto/","https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/swagger/doc.json"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-user-agent-accounts","key":"srf-c74da853a418c598","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin user agent-accounts","netuid":118,"notes":"List a user's agent accounts (paginated) operation on the Ditto Admin API (GET /users/{user_id}/agent-accounts), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Path-parameterized on {user_id}, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/users/%7Buser_id%7D/agent-accounts"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-user-by-id","key":"srf-5dd5c6a92157810f","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin user by id","netuid":118,"notes":"Get a provisioned user's state operation on the Ditto Admin API (GET, PATCH /users/{user_id}), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Path-parameterized on {user_id}, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/users/%7Buser_id%7D"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-user-grant-requests","key":"srf-d2f733141e5b88ed","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin user grant requests","netuid":118,"notes":"Request data-sharing scopes from a user operation on the Ditto Admin API (POST /users/{user_id}/grant-requests), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Path-parameterized on {user_id}, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/users/%7Buser_id%7D/grant-requests"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-user-provider-credential-by-provider","key":"srf-a64404aeb0b75dc3","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin user provider credential by provider","netuid":118,"notes":"Set one provider key (BYOK) operation on the Ditto Admin API (PUT /users/{user_id}/keys/{provider}), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Path-parameterized on {user_id}, {provider}, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/users/%7Buser_id%7D/keys/%7Bprovider%7D"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-user-provider-credentials","key":"srf-849d90779b1f9de4","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin user provider credentials","netuid":118,"notes":"List a user's provider keys (status only) operation on the Ditto Admin API (GET, POST /users/{user_id}/keys), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Path-parameterized on {user_id}, so there is no single fixed callable URL; the template is registered per the registry's catalog-everything policy (Phase 2).","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/users/%7Buser_id%7D/keys"},{"auth":{"location":"header","name":"Authorization","scheme":"api-key","scopes_note":"Derived from the subnet's own Swagger securityDefinitions (AdminKey), which every operation in the spec requires."},"auth_required":true,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-admin-users","key":"srf-f424dc83279f9abe","kind":"subnet-api","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto admin users collection","netuid":118,"notes":"List users provisioned by this admin (paginated) operation on the Ditto Admin API (GET, POST /users), declared in the subnet's own Swagger 2.0 spec at /api/admin/v1/swagger/doc.json. Every operation in that spec requires the AdminKey security definition, so it is registered auth_required:true with the probe disabled (Phase 3). Live-verified 2026-07-21: GET https://api.heyditto.ai/api/admin/v1/users without credentials -> HTTP 401 {\"message\":\"unauthorized\",\"status\":401}, confirming the gate.","probe":{"enabled":false,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"joaovictor91123"},"source_urls":["https://api.heyditto.ai/api/admin/v1/swagger/doc.json"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.heyditto.ai/api/admin/v1/users"},{"auth_required":false,"authority":"official","curation_level":"candidate-discovered","id":"sn-118-ditto-assistant","key":"srf-8b774f25dc4cf764","kind":"dashboard","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto assistant app","netuid":118,"notes":"Public Ditto assistant app surface.","probe":{"enabled":true,"expect":"html","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"source_urls":["https://assistant.heyditto.ai/","https://heyditto.ai/"],"stale":true,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://assistant.heyditto.ai/"},{"auth_required":false,"authority":"community","curation_level":"candidate-discovered","id":"sn-118-ditto-assistant-sdk","key":"srf-3945d85dda6b14ca","kind":"sdk","last_verified_at":null,"name":"Ditto community sdk","netuid":118,"probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"confidence":"medium","state":"community-submitted","submitted_by":"kiannidev"},"source_urls":["https://heyditto.ai/docs/mcp-server"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://github.com/ditto-assistant/ditto-mcp"},{"auth_required":false,"authority":"community","curation_level":"candidate-discovered","id":"sn-118-ditto-assistant-source-repo","key":"srf-aad310ec71b72e8b","kind":"source-repo","last_verified_at":null,"name":"Ditto community source-repo","netuid":118,"probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"confidence":"medium","state":"community-submitted","submitted_by":"kiannidev"},"source_urls":["https://github.com/ditto-assistant/ditto-cli/blob/main/README.md"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://github.com/ditto-assistant/ditto-cli"},{"auth_required":false,"authority":"official","curation_level":"maintainer-reviewed","id":"sn-118-ditto-dittobench-starter-kit","key":"srf-3af2aa9fcb838d30","kind":"source-repo","last_verified_at":"2026-07-16T00:00:00.000Z","name":"DittoBench starter kit","netuid":118,"notes":"Official DittoBench miner starter kit; its GitHub description self-declares \"Official DittoBench miner starter kit for Bittensor subnet 118\".","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"source_urls":["https://github.com/ditto-assistant/dittobench-starter-kit","https://heyditto.ai/"],"stale":false,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://github.com/ditto-assistant/dittobench-starter-kit"},{"auth_required":false,"authority":"official","curation_level":"maintainer-reviewed","id":"sn-118-ditto-docs","key":"srf-4c0676f59896a8c3","kind":"docs","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto docs","netuid":118,"notes":"Official Ditto documentation.","probe":{"enabled":true,"expect":"html","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"source_urls":["https://heyditto.ai/docs/","https://heyditto.ai/"],"stale":false,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://heyditto.ai/docs/"},{"auth_required":false,"authority":"official","curation_level":"maintainer-reviewed","id":"sn-118-ditto-hermes-docs","key":"srf-c89178ada3a07443","kind":"docs","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto Hermes Agent docs","netuid":118,"notes":"Ditto documentation for Hermes Agent integration.","probe":{"enabled":true,"expect":"html","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"source_urls":["https://heyditto.ai/docs/hermes-agent/","https://heyditto.ai/docs/"],"stale":false,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://heyditto.ai/docs/hermes-agent/"},{"auth_required":false,"authority":"official","curation_level":"maintainer-reviewed","id":"sn-118-ditto-mcp-docs","key":"srf-0dce64ffa8b10501","kind":"docs","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto MCP server docs","netuid":118,"notes":"Ditto documentation for MCP server setup.","probe":{"enabled":true,"expect":"html","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"source_urls":["https://heyditto.ai/docs/mcp-server/","https://heyditto.ai/docs/"],"stale":false,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://heyditto.ai/docs/mcp-server/"},{"auth_required":false,"authority":"community","curation_level":"machine-verified","id":"sn-118-ditto-memory-cases","key":"srf-55916a243dae3808","kind":"data-artifact","last_verified_at":"2026-09-20T04:31:09.312Z","name":"DittoBench LongMemEval memory cases","netuid":118,"notes":"Public no-auth JSON benchmark of LongMemEval memory-recall questions (question_id, question_type, query, answer, answer_pair_ids) bundled in the official SN118 DittoBench starter kit at fixtures/seed-user/memory_cases.json. Loaded at runtime by seed.rs (MEMORY_CASES_JSON) for local mem-eval and evaluate flows over the bundled seed user.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"review":{"state":"community-submitted","submitted_by":"carlh7777"},"source_urls":["https://github.com/ditto-assistant/dittobench-starter-kit/blob/main/src/seed.rs","https://github.com/ditto-assistant/dittobench-starter-kit/blob/main/README.md"],"stale":false,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://raw.githubusercontent.com/ditto-assistant/dittobench-starter-kit/main/fixtures/seed-user/memory_cases.json"},{"auth_required":false,"authority":"official","curation_level":"maintainer-reviewed","id":"sn-118-ditto-openclaw-docs","key":"srf-9fd320668c88b2b5","kind":"docs","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto OpenClaw docs","netuid":118,"notes":"Ditto documentation for OpenClaw integration.","probe":{"enabled":true,"expect":"html","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"source_urls":["https://heyditto.ai/docs/openclaw/","https://heyditto.ai/docs/"],"stale":false,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://heyditto.ai/docs/openclaw/"},{"auth_required":false,"authority":"official","curation_level":"maintainer-reviewed","id":"sn-118-ditto-repo-registry","key":"srf-76679a026276040b","kind":"repo-registry","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto GitHub repositories","netuid":118,"notes":"Public Ditto GitHub organization repository listing. Tracked as a repo registry, distinct from the canonical source repository.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"source_urls":["https://github.com/orgs/ditto-assistant/repositories","https://heyditto.ai/"],"stale":false,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://github.com/orgs/ditto-assistant/repositories"},{"auth_required":false,"authority":"official","curation_level":"maintainer-reviewed","id":"sn-118-ditto-website","key":"srf-25c60d6591c863ff","kind":"website","last_verified_at":"2026-07-16T00:00:00.000Z","name":"Ditto website","netuid":118,"notes":"Official Ditto website.","probe":{"enabled":true,"expect":"html","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"source_urls":["https://heyditto.ai/"],"stale":false,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://heyditto.ai/"},{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-118-subnetradar-dashboard","key":"srf-78edf85e6a457c4e","kind":"dashboard","last_verified_at":null,"name":"Ditto SubnetRadar dashboard","netuid":118,"notes":"Universal SubnetRadar subnet dashboard candidate. Third-party risk/market analytics enrichment, not Metagraphed endpoint health authority.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"subnetradar","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":false,"source_tier":"third-party-index","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://subnetradar.com/subnet/118"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://subnetradar.com/subnet/118"},{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-118-taomarketcap-dashboard","key":"srf-2f5de7c9edb0e639","kind":"dashboard","last_verified_at":null,"name":"Ditto TaoMarketCap dashboard","netuid":118,"notes":"Universal TaoMarketCap subnet dashboard candidate. Third-party enrichment, not protocol authority.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"taomarketcap","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":false,"source_tier":"third-party-index","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://api.taomarketcap.com/public/v1/subnets/118"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://taomarketcap.com/subnets/118"},{"auth_required":false,"authority":"community","curation_level":"candidate-discovered","id":"sn-118-taomarketcap-subnet-api","key":"srf-791d8c9b647cfab7","kind":"subnet-api","last_verified_at":null,"name":"Ditto TaoMarketCap subnet snapshot API","netuid":118,"notes":"Public no-auth GET /public/v1/subnets/118/ on api.taomarketcap.com returning machine-readable JSON for SN118 on-chain subnet state, SubnetIdentitiesV3 metadata, economics, and dTAO market fields. Ditto exposes source repositories, docs, and an SDK but no verified first-party public API endpoint; this indexed feed is documented in the TaoMarketCap developer API. TaoMarketCap now enforces a trailing slash (the non-slash path 301s); tracked URL updated to the canonical non-redirecting form. Rejects HEAD (405); probe uses GET.","probe":{"enabled":true,"expect":"json","method":"GET","timeout_ms":10000},"provider":"taomarketcap","public_safe":true,"review":{"state":"community-submitted","submitted_by":"cleanjunc"},"source_urls":["https://api.taomarketcap.com/developer/documentation/","https://github.com/ditto-assistant/dittobench-starter-kit"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://api.taomarketcap.com/public/v1/subnets/118/"},{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-118-taopedia-article","key":"srf-ad2ec926103b16a8","kind":"docs","last_verified_at":null,"name":"Ditto Taopedia article","netuid":118,"notes":"Discovered from the public Taopedia article repository. Not verified as an operational interface.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"taopedia-articles","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":false,"source_tier":"community-docs","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://github.com/e35ventura/taopedia-articles/blob/main/content/pages/subnet_118/index.mdx"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://github.com/e35ventura/taopedia-articles/blob/main/content/pages/subnet_118/index.mdx"},{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-118-tensorplex-docs","key":"srf-8329dac34830b74d","kind":"docs","last_verified_at":null,"name":"Ditto Tensorplex subnet docs","netuid":118,"notes":"Discovered from Tensorplex subnet-docs. Useful as documentation enrichment, not verified operational authority.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"tensorplex-subnet-docs","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":false,"source_tier":"community-docs","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://github.com/tensorplex-labs/subnet-docs/blob/main/data/118/subnet.json"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://github.com/tensorplex-labs/subnet-docs/tree/main/data/118"},{"auth_required":false,"authority":"registry-observed","curation_level":"candidate-discovered","id":"sn-118-website-link-heyditto-ai-docs-10","key":"srf-5e57fd47a738ce48","kind":"docs","last_verified_at":null,"name":"Ditto docs","netuid":118,"notes":"Discovered from a public project website link. Requires verification before promotion.","probe":{"enabled":true,"expect":"any","method":"HEAD","timeout_ms":10000},"provider":"ditto-assistant","public_safe":true,"quality_signals":{"content_type_matches_kind":true,"public_safe":true,"rate_limited":false,"redirected":true,"source_tier":"provider-claimed","transient_failure":false},"rate_limit_notes":"Candidate only; no recurring probe is configured until maintainer review.","source_urls":["https://heyditto.ai/"],"stale":null,"subnet_name":"Ditto","subnet_slug":"sn-118","url":"https://heyditto.ai/docs/hermes"}]},"meta":{"artifact_path":"/metagraph/surfaces/118.json","cache":"standard","contract_version":"2026-07-03.2","generated_at":"2026-09-20T12:26:49.169Z","published_at":"2026-09-20T12:26:49.169Z","source":"r2","pagination":{"collection":"surfaces","total":32,"returned":32,"limit":32,"cursor":0,"next_cursor":null,"sort":null,"order":"asc"}}}