{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_rjm9egwtkb6v","handle":"ai-dataecho-mcp","url":"https://wellknown.network/agents/ai-dataecho-mcp","links":{"self":"https://wellknown.network/agents/ai-dataecho-mcp/record.json","html":"https://wellknown.network/agents/ai-dataecho-mcp","markdown":"https://wellknown.network/agents/ai-dataecho-mcp/record.md","api":"https://wellknown.network/api/v1/agents/ai-dataecho-mcp","status":"https://wellknown.network/api/v1/agents/ai-dataecho-mcp/status","claim":"https://wellknown.network/agents/ai-dataecho-mcp/claim","claimApi":"https://wellknown.network/api/v1/claims","badge":"https://wellknown.network/agents/ai-dataecho-mcp/badge.svg","openapi":"https://wellknown.network/openapi.json"},"ard":{"identifier":"urn:air:dataecho.ai:server:ai-dataecho-mcp","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"mcp","summary":"Deploy files, sites, and Dockerfile apps to live URLs + private drives for agent memory.","description":"Deploy files, sites, and Dockerfile apps to live URLs + private drives for agent memory.","publisher":{"name":"ai.dataecho","url":null},"homepage":"https://dataecho.ai","repository":"https://github.com/mohocp/dataecho","version":"1.0.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://dataecho.ai/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-07-04T19:46:27.691356Z","publishedAt":"2026-07-04T19:46:27.691356Z","registryName":"ai.dataecho/mcp"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"dev.filesystem","name":"Filesystem","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.885,"provenance":"derived"},{"slug":"security.secrets","name":"Secrets Management","confidence":0.51,"provenance":"derived"}],"categories":["dev","security"]},"observed":{"status":"live","statusReason":"Responded 21s ago.","lastOkAt":"2026-09-05T14:25:27.264Z","lastProbedAt":"2026-09-05T14:25:27.264Z","statusComputedAt":"2026-09-05T14:25:47.794Z","reliability30d":{"probes":1,"successRate":1,"p50Ms":66},"latestObservations":[{"at":"2026-09-05T14:25:27.264Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":66,"error":null,"detail":{"tools":[{"name":"platform_info","description":"DataEcho platform overview: what it can host, auth state of this connection, docs links. Call this first if unsure."},{"name":"request_login_code","description":"Start sign-in: email a one-time code to the user. Follow with verify_login_code."},{"name":"verify_login_code","description":"Complete sign-in with the emailed code. Returns the apiKey ONCE — configure it as the `Authorization: Bearer <key>` header of this MCP connection (and/or save t"},{"name":"publish_site","description":"Deploy files to a live URL. No slug → create a NEW site (works without auth; anonymous sites expire in 24h — always show the user the claimUrl). With slug → UPD"},{"name":"claim_site","description":"Make a previously-anonymous site permanent under the authenticated account (requires auth + the claimToken from publish_site)."},{"name":"list_sites","description":"List all sites owned by the authenticated account."},{"name":"search_sites","description":"Full-text search across the authenticated account's sites (names, metadata, and text content)."},{"name":"get_site","description":"Full details + current file manifest of an owned site."},{"name":"update_site_metadata","description":"Patch site settings without redeploying: viewer title/description, SPA mode, TTL, password (string sets, null removes)."},{"name":"delete_site","description":"Permanently delete an owned site. Irreversible — confirm with the user first."},{"name":"app_status","description":"Build/run status of a container app deployed via publish_site with a Dockerfile. Poll until status is `live` or `failed`."},{"name":"list_drives","description":"List the authenticated account's private cloud drives."},{"name":"create_drive","description":"Create a new private drive."},{"name":"drive_list_files","description":"List files in a drive (by drive name or drv_… id), optionally under a path prefix."},{"name":"drive_read_file","description":"Read a file from a drive. Text comes back as utf-8 `content`; binary as `contentBase64`. Files over 1 MB are refused (use the skill scripts)."},{"name":"drive_write_file","description":"Write/overwrite one file in a drive (ETag-safe: pass ifMatch to assert the version you read, otherwise the current version is used automatically)."},{"name":"drive_delete_file","description":"Delete one file from a drive."},{"name":"drive_move_file","description":"Move/rename a file inside a drive."},{"name":"drive_share","description":"Mint a scoped drive access token for another agent (perms read|write, optional path prefix + TTL like `7d`). The secret is returned ONCE."},{"name":"drive_tokens","description":"List active share tokens of a drive (secrets are never shown again)."},{"name":"drive_revoke_token","description":"Revoke a drive share token."},{"name":"drive_history","description":"Version timeline of a drive (every write is a restorable version)."},{"name":"drive_restore","description":"Restore a drive to a prior version (commits a new version; nothing is lost)."},{"name":"list_variables","description":"List account variable NAMES (values are write-only — they are injected into proxy calls and container apps, never read back)."},{"name":"set_variable","description":"Create/update a write-only account secret (uppercase name). Injected as env vars into container apps and as ${VAR} into proxy calls. Optionally pin which upstre"},{"name":"delete_variable","description":"Delete an account variable."}],"toolCount":26,"serverName":"dataecho","capabilities":["tools"],"serverVersion":"1.0.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"platform_info","description":"DataEcho platform overview: what it can host, auth state of this connection, docs links. Call this first if unsure."},{"name":"request_login_code","description":"Start sign-in: email a one-time code to the user. Follow with verify_login_code."},{"name":"verify_login_code","description":"Complete sign-in with the emailed code. Returns the apiKey ONCE — configure it as the `Authorization: Bearer <key>` header of this MCP connection (and/or save t"},{"name":"publish_site","description":"Deploy files to a live URL. No slug → create a NEW site (works without auth; anonymous sites expire in 24h — always show the user the claimUrl). With slug → UPD"},{"name":"claim_site","description":"Make a previously-anonymous site permanent under the authenticated account (requires auth + the claimToken from publish_site)."},{"name":"list_sites","description":"List all sites owned by the authenticated account."},{"name":"search_sites","description":"Full-text search across the authenticated account's sites (names, metadata, and text content)."},{"name":"get_site","description":"Full details + current file manifest of an owned site."},{"name":"update_site_metadata","description":"Patch site settings without redeploying: viewer title/description, SPA mode, TTL, password (string sets, null removes)."},{"name":"delete_site","description":"Permanently delete an owned site. Irreversible — confirm with the user first."},{"name":"app_status","description":"Build/run status of a container app deployed via publish_site with a Dockerfile. Poll until status is `live` or `failed`."},{"name":"list_drives","description":"List the authenticated account's private cloud drives."},{"name":"create_drive","description":"Create a new private drive."},{"name":"drive_list_files","description":"List files in a drive (by drive name or drv_… id), optionally under a path prefix."},{"name":"drive_read_file","description":"Read a file from a drive. Text comes back as utf-8 `content`; binary as `contentBase64`. Files over 1 MB are refused (use the skill scripts)."},{"name":"drive_write_file","description":"Write/overwrite one file in a drive (ETag-safe: pass ifMatch to assert the version you read, otherwise the current version is used automatically)."},{"name":"drive_delete_file","description":"Delete one file from a drive."},{"name":"drive_move_file","description":"Move/rename a file inside a drive."},{"name":"drive_share","description":"Mint a scoped drive access token for another agent (perms read|write, optional path prefix + TTL like `7d`). The secret is returned ONCE."},{"name":"drive_tokens","description":"List active share tokens of a drive (secrets are never shown again)."},{"name":"drive_revoke_token","description":"Revoke a drive share token."},{"name":"drive_history","description":"Version timeline of a drive (every write is a restorable version)."},{"name":"drive_restore","description":"Restore a drive to a prior version (commits a new version; nothing is lost)."},{"name":"list_variables","description":"List account variable NAMES (values are write-only — they are injected into proxy calls and container apps, never read back)."},{"name":"set_variable","description":"Create/update a write-only account secret (uppercase name). Injected as env vars into container apps and as ${VAR} into proxy calls. Optionally pin which upstre"},{"name":"delete_variable","description":"Delete an account variable."}],"package":null},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"ai.dataecho/mcp","url":"https://registry.modelcontextprotocol.io/v0/servers/ai.dataecho%2Fmcp","firstSeenAt":"2026-09-05T13:36:08.353Z","fetchedAt":"2026-09-05T13:36:08.353Z","normalizedAt":"2026-09-05T13:36:08.353Z"}]},"firstSeenAt":"2026-09-05T13:36:08.353Z","updatedAt":"2026-09-05T14:25:49.755Z"}