# ai.dataecho/mcp

> Deploy files, sites, and Dockerfile apps to live URLs + private drives for agent memory.

- name: ai.dataecho/mcp
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 88/100
- quality: 79/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/ai.dataecho%2Fmcp
- tools: https://api.protogrid.dev/v1/servers/ai.dataecho%2Fmcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "dataecho": {
      "type": "http",
      "url": "https://dataecho.ai/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 97
- freshness: 65
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-93% ~updated-108d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 79/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-06-18; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: request_login_code (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); delete_site (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); app_status (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,466 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 26, about 2,466 tokens to load them all
- tool set hash: af47f4fdcb91b1b7d1f84f5de5a67233
- badge: [![protogrid quality](https://protogrid.dev/badge/ai.dataecho/mcp.svg)](https://protogrid.dev/servers/ai.dataecho/mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://dataecho.ai/mcp (streamable-http, auth none, reachable true, uptime30d 0.93333334)

## Packages

_none_

## Tools (26)

- `app_status`: Build/run status of a container app deployed via publish_site with a Dockerfile. Poll until status is `live` or `failed`.
- `claim_site`: Make a previously-anonymous site permanent under the authenticated account (requires auth + the claimToken from publish_site).
- `create_drive`: Create a new private drive.
- `delete_site`: Permanently delete an owned site. Irreversible — confirm with the user first.
- `delete_variable`: Delete an account variable.
- `drive_delete_file`: Delete one file from a drive.
- `drive_history`: Version timeline of a drive (every write is a restorable version).
- `drive_list_files`: List files in a drive (by drive name or drv_… id), optionally under a path prefix.
- `drive_move_file`: Move/rename a file inside a drive.
- `drive_read_file`: 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).
- `drive_restore`: Restore a drive to a prior version (commits a new version; nothing is lost).
- `drive_revoke_token`: Revoke a drive share token.
- `drive_share`: Mint a scoped drive access token for another agent (perms read|write, optional path prefix + TTL like `7d`). The secret is returned ONCE.
- `drive_tokens`: List active share tokens of a drive (secrets are never shown again).
- `drive_write_file`: Write/overwrite one file in a drive (ETag-safe: pass ifMatch to assert the version you read, otherwise the current version is used automatically).
- `get_site`: Full details + current file manifest of an owned site.
- `list_drives`: List the authenticated account's private cloud drives.
- `list_sites`: List all sites owned by the authenticated account.
- `list_variables`: List account variable NAMES (values are write-only — they are injected into proxy calls and container apps, never read back).
- `platform_info`: DataEcho platform overview: what it can host, auth state of this connection, docs links. Call this first if unsure.
- `publish_site`: 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 → UPDATE that site (complete snapshot: send ALL files). A Dockerfile in the files makes it a server-side app (auth required; listen on process.env.PORT; persist under /data; poll app_status). Total payload ≤ 8 MB — for bigger sites use the dataecho skill scripts.
- `request_login_code`: Start sign-in: email a one-time code to the user. Follow with verify_login_code.
- `search_sites`: Full-text search across the authenticated account's sites (names, metadata, and text content).
- `set_variable`: 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 upstream hosts may receive it.
- `update_site_metadata`: Patch site settings without redeploying: viewer title/description, SPA mode, TTL, password (string sets, null removes).
- `verify_login_code`: 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 to ~/.artifact/credentials for the CLI scripts). Never echo it into chat.
