# ai.dataecho/mcp (remote · dataecho.ai)

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

- Trust score: 65/100 (medium)
- Change this week: +1
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `dataecho.ai`: 65/100 (this document), [markdown](https://verifymcp.io/servers/ai-dataecho-mcp/dataecho.md), [page](https://verifymcp.io/servers/ai-dataecho-mcp/dataecho)

## Channel facts

- Endpoint: `https://dataecho.ai/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 26 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 77/100
  - AI-judged instruction clarity (excellent).
  - Tool/resource definitions use about 1691 tokens (~65/item across 26 items; 26 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Capabilities**: 60/100
  - Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http ai-dataecho-mcp https://dataecho.ai/mcp
```

### Codex

```toml
[mcp_servers.ai-dataecho-mcp]
url = "https://dataecho.ai/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "ai-dataecho-mcp": {
      "type": "remote",
      "url": "https://dataecho.ai/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add ai-dataecho-mcp --url https://dataecho.ai/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  ai-dataecho-mcp:
    url: "https://dataecho.ai/mcp"
```

### Other

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

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 64, −2)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-29 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 64, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 64)

First indexed and scored.

## MCP tools (26)

### `platform_info` (~33 tokens)

DataEcho platform overview: what it can host, auth state of this connection, docs links. Call this first if unsure.

### `request_login_code` (~39 tokens)

Start sign-in: email a one-time code to the user. Follow with verify_login_code.

Input parameters:

- `email` (string, required): The user's email address

### `verify_login_code` (~88 tokens)

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.

Input parameters:

- `code` (string, required): The one-time code from the email
- `email` (string, required): Same email as request_login_code

### `publish_site` (~252 tokens)

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.

Input parameters:

- `claimToken` (string): Claim token — required to update an anonymous site without auth
- `description` (string): Viewer page description
- `files` (array, required): Files to publish. Each file: { path, content (utf-8 text) OR contentBase64 (binary), contentType? }. The publish is a COMPLETE snapshot — omitted files are removed on update.
- `slug` (string): Existing site slug to update (omit to create a new site)
- `spa` (boolean): Enable SPA fallback routing (serve index.html for unknown paths)
- `title` (string): Viewer page title (used when there's no index.html)
- `ttlSeconds` (number): Expiry for authenticated sites, in seconds

### `claim_site` (~54 tokens)

Make a previously-anonymous site permanent under the authenticated account (requires auth + the claimToken from publish_site).

Input parameters:

- `claimToken` (string, required): Claim token returned by the anonymous publish
- `slug` (string, required): Site slug

### `list_sites` (~17 tokens)

List all sites owned by the authenticated account.

### `search_sites` (~46 tokens)

Full-text search across the authenticated account's sites (names, metadata, and text content).

Input parameters:

- `limit` (number): Max results (optional)
- `query` (string, required): Search query

### `get_site` (~28 tokens)

Full details + current file manifest of an owned site.

Input parameters:

- `slug` (string, required): Site slug

### `update_site_metadata` (~117 tokens)

Patch site settings without redeploying: viewer title/description, SPA mode, TTL, password (string sets, null removes).

Input parameters:

- `description` (string): Viewer description
- `password` (string): Password-gate the site; pass an empty string to REMOVE the password
- `slug` (string, required): Site slug
- `spaMode` (boolean): SPA fallback routing
- `title` (string): Viewer title
- `ttlSeconds` (number): Expiry in seconds (null-like 0 not allowed; omit to keep)

### `delete_site` (~34 tokens)

Permanently delete an owned site. Irreversible — confirm with the user first.

Input parameters:

- `slug` (string, required): Site slug

### `app_status` (~54 tokens)

Build/run status of a container app deployed via publish_site with a Dockerfile. Poll until status is `live` or `failed`.

Input parameters:

- `logs` (boolean): Include build logs
- `slug` (string, required): Site slug

### `list_drives` (~18 tokens)

List the authenticated account's private cloud drives.

### `create_drive` (~23 tokens)

Create a new private drive.

Input parameters:

- `name` (string, required): Drive name

### `drive_list_files` (~54 tokens)

List files in a drive (by drive name or drv_… id), optionally under a path prefix.

Input parameters:

- `drive` (string, required): Drive name or drv_… id
- `prefix` (string): Path prefix filter

### `drive_read_file` (~72 tokens)

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).

Input parameters:

- `drive` (string, required): Drive name or drv_… id
- `path` (string, required): File path in the drive

### `drive_write_file` (~117 tokens)

Write/overwrite one file in a drive (ETag-safe: pass ifMatch to assert the version you read, otherwise the current version is used automatically).

Input parameters:

- `content` (string): UTF-8 text content
- `contentBase64` (string): Base64 content for binary files
- `contentType` (string): Optional MIME type
- `drive` (string, required): Drive name or drv_… id
- `ifMatch` (string): Optional ETag precondition
- `path` (string, required): Destination path in the drive

### `drive_delete_file` (~39 tokens)

Delete one file from a drive.

Input parameters:

- `drive` (string, required): Drive name or drv_… id
- `path` (string, required): File path

### `drive_move_file` (~50 tokens)

Move/rename a file inside a drive.

Input parameters:

- `drive` (string, required): Drive name or drv_… id
- `from` (string, required): Current path
- `to` (string, required): New path

### `drive_share` (~120 tokens)

Mint a scoped drive access token for another agent (perms read|write, optional path prefix + TTL like `7d`). The secret is returned ONCE.

Input parameters:

- `drive` (string, required): Drive name or drv_… id
- `label` (string): Human label for the token
- `pathPrefix` (string): Restrict the token to this path prefix
- `perms` (string): read (default) or write
- `ttl` (string): Lifetime, e.g. 1h, 7d (omit for no expiry)

### `drive_tokens` (~37 tokens)

List active share tokens of a drive (secrets are never shown again).

Input parameters:

- `drive` (string, required): Drive name or drv_… id

### `drive_revoke_token` (~47 tokens)

Revoke a drive share token.

Input parameters:

- `drive` (string, required): Drive name or drv_… id
- `tokenId` (string, required): dtok_… id from drive_tokens

### `drive_history` (~36 tokens)

Version timeline of a drive (every write is a restorable version).

Input parameters:

- `drive` (string, required): Drive name or drv_… id

### `drive_restore` (~55 tokens)

Restore a drive to a prior version (commits a new version; nothing is lost).

Input parameters:

- `drive` (string, required): Drive name or drv_… id
- `versionId` (string, required): dv_… id from drive_history

### `list_variables` (~33 tokens)

List account variable NAMES (values are write-only — they are injected into proxy calls and container apps, never read back).

### `set_variable` (~89 tokens)

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.

Input parameters:

- `allowedUpstreams` (array): Optional allow-list of upstream hosts
- `name` (string, required): UPPER_SNAKE_CASE variable name
- `value` (string, required): Secret value (never readable back)

### `delete_variable` (~22 tokens)

Delete an account variable.

Input parameters:

- `name` (string, required): Variable name

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/ai-dataecho-mcp/dataecho#diagnostics

## Score history

- 2026-08-03: 65
- 2026-08-02: 65
- 2026-08-01: 64
- 2026-07-31: 64
- 2026-07-30: 66
- 2026-07-29: 66
- 2026-07-28: 65
- 2026-07-27: 64
- 2026-07-26: 64

## Links

- Remote endpoint: https://dataecho.ai/mcp
- Repository: https://github.com/mohocp/dataecho
- Website: https://dataecho.ai/
- Changelog RSS feed: https://verifymcp.io/servers/ai-dataecho-mcp/dataecho/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/ai-dataecho-mcp/dataecho/changelog.json
- HTML version of this page: https://verifymcp.io/servers/ai-dataecho-mcp/dataecho
