Connect EchoRelay and your agent gets 79 tools, among them activate_line, archive_project, cancel_line_publish. It answers at https://mcp.echorelay.dev over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 10 September 2026; the last check, on 19 October 2026, succeeded.
A managed runtime for custom API integrations. Manage lines, endpoints, keys, logs and DLQ via MCP.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
activate_line | Activate and immediately publish an inactive line so it serves traffic again. Blocked at the active-line cap — deactivate another line first. Requires edit access. Inputs: lineKey, commitMode, draftRevision |
archive_project | Archive a project you own. Reversible: the project + slug persist and credits are kept, but the data plane drops the tenant (callers get 404). Idempotent. Fails with an error if the project has archive protection enabled — that is a support Inputs: slug |
cancel_line_publish | Cancel one line schedule before its two-minute lock. Inputs: lineKey, draftRevision |
cancel_subscription | Schedule the project owner's subscription for cancellation at the end of the current billing period. Returns `{kind: 'scheduled', newPlan: 'free', effectiveAt}`. Add-ons keep renewing while the plan is active; after it ends they stop renewi |
change_plan | Switch the project owner between Pro and Scale, or cancel the subscription (effectively dropping to Free at period end). Returns `{kind, newPlan, effectiveAt, applied}` — `applied=true` means Paddle was charged immediately, otherwise the ch Inputs: plan |
config_diff | Preview what Save & Publish (or the pending scheduled publish, if one exists) would change: added/removed/changed lines, and within each changed line the added/removed/changed endpoints and targets, plus any project-level setting change. Ou |
create_api_key | Mint an inbound relay (data-plane) API key for callers to send traffic to this project. Its `er_live_` or `er_test_` secret authenticates relay requests; it cannot call management MCP or REST. Returns the plaintext exactly once — store it n Inputs: name, mode, ttlDays |
create_credential | Save a new reusable credential, sealed with the project's encryption key at write time. Neither this call nor any later read ever returns the secret back — reference it from a target by id (see create_endpoint/update_endpoint's target.crede Inputs: name, destinationHost, auth |
create_endpoint | Create an endpoint under a line. Defaults to immediate publish; draft mode requires draftRevision. scheduledAt stages the line draft then schedules it. Requires edit access. |
create_line | Create a new versioned line. A new line has no endpoints, so creating one publishes nothing and serves no traffic yet — add an endpoint, which publishes the line with it. Draft mode requires draftRevision 0. Requires edit access. Inputs: name, lineKey, commitMode, draftRevision |
create_project | Create a new project on your account so an agent can bootstrap from a fresh account. The slug is derived from the name and validated server-side (format, reserved words, uniqueness). Each plan includes a fixed number of active projects (fre Inputs: name |
create_project_token | Mint a PROJECT-scoped management token (`er_mcp_`) for MCP and REST; it cannot authenticate relay traffic. Use it after create_project to configure a fresh project, or for any project you already own. Attenuated by design: the scopes must b Inputs: slug, label, scopes, expiresInDays |
deactivate_line | Take a line off the data plane immediately (callers get 404) without deleting it — endpoints/targets/config are preserved and it can be reactivated later. A deliberate action; live traffic is never auto-disabled. Requires edit access. Inputs: lineKey, commitMode, draftRevision |
default_endpoint_template | Return a canonical minimal-valid endpoint JSON for a fresh line. POST it verbatim to create_endpoint to land an immediately-working endpoint, then customise. It comes back with `mock: true`: it answers callers with its own canned body and n Inputs: lineKey |
delete_credential | Delete a saved credential. Blocked (not a permission or not-found error — a validation error) while any target still references it; repoint or remove those targets first. Inputs: credentialId |
delete_endpoint | Delete an endpoint and its targets, publishing the removal immediately. Requires edit access. Inputs: lineKey, endpointId, commitMode, draftRevision |
delete_line | Delete a line and every endpoint under it, publishing the removal immediately. Requires edit access. Inputs: lineKey, commitMode, draftRevision |
discard_dlq_entry | Permanently delete a DLQ entry without retrying. Requires edit access. Inputs: id |
discard_draft_endpoint | Discard one endpoint change from a line draft. Inputs: lineKey, endpointId, draftRevision |
discard_line_draft | Discard every unpublished change and schedule for one line. Inputs: lineKey, draftRevision |
downgrade_addon | Schedule a tier downgrade for a non-stackable add-on (RPM tier). The current tier stays active until `nextRenewalAt`; at that point the lower tier is charged and activated. No mid-cycle charge. Use list_addons to find available keys. Return Inputs: addonKey, targetAddonKey |
dry_run_endpoint | Validate an endpoint document without writing it. Returns either {ok: true, resolved: <Framework config slice>} or {ok: false, errors: {...}}. Pass endpointId to dry-run a PATCH against an existing endpoint; omit it to dry-run a create. Sup |
duplicate_line | Copy a line and all its endpoints/targets/rules into a new line key — build v2 from v1. The copy is saved inactive and remains off the data plane; edit it, then activate_line when ready. Requires edit access. Inputs: lineKey, newLineKey, name, commitMode, draftRevision |
generate_line_draft | Generate a draft endpoint under a line from a sample inbound request and a description of the target: infers the inbound body schema from the sample, reads the target's method/URL/fields from an OpenAPI document (targetDocument) or a bare s Inputs: lineKey, sample, targetDocument, targetFilename, targetSample, targetUrl |
get_billing | Get the project's credit balances (paid + testing) and which ledger it settles on. `billingModel` is `prepaid` (metered against the credit balance) or `invoiceable` (an Enterprise account, settled on the contract — its credit fields read em |
get_config | Get the project's published relay configuration — the exact JSON the EchoRelay Framework consumes. Includes pendingPublish with its frozen, redacted config when one is scheduled. |
get_dlq_entry | Get DLQ entries by entry id (`{ms}-{seq}`, as returned by list_dlq's `id`) or by `requestId`. `requestId` is the durable handle — stable across a retry, unlike `id`, which changes every time an entry is replayed and later dead-letters again Inputs: id, requestId |
get_endpoint | Get the full JSON of one endpoint, including its targets, auth keys and attributes. Inputs: lineKey, endpointId |
get_key_policy | Returns the project's key policy: defaultKeyTtlDays, maxKeyTtlDays, editorsMayCreateNonExpiringKeys. |
get_line_draft | Read one line draft, its optimistic revision, preview, and schedule. Inputs: lineKey |
get_metrics | Aggregate request metrics for this project over a time window — volume, error rate and p50/p95/p99 latency, bucketed for charting. By default the series cover inbound requests; pass `targetId` to slice over one outbound target's per-attempt Inputs: window, targetId, endpointId |
get_project | Get the EchoRelay project this token is scoped to: id, slug, name, caller-facing API base URL, whether the token has edit access, and the request-log hot-tier retention window. |
get_receipts | Get every target this request fanned out to, each with its delivery receipt or the reason it has none. A still-moving delivery (queued/retrying) answers from the live tracking copy, a terminal one (delivered/failed) from durable storage — t Inputs: requestId |
get_request | Get one inbound request envelope + every per-target delivery attempt made on the way out (success / permanent_failure / retry_scheduled / dlq). The request and each attempt carry configVersion, the published config that authorised them; 0 m Inputs: requestId |
get_subscription | Get the project owner's current subscription: plan, active flag, period start/end, cancel-at-period-end flag, external Paddle subscription id, and whether a payment method is on file at the provider. Owner-only; requires a token minted with |
invite_member | Invite a person by email to collaborate on this project. Returns the new invitation record; the invitee receives an email with an accept link. Enforces the seat cap for the plan tier. Owner only. Inputs: email, role |
list_active_addons | List the project owner`s currently-active add-ons. Returns `[{addonKey, project, monthlyEurCents, activatedAt, nextRenewalAt, consecutiveFailures}, ...]`. RPM upgrades are per-project; `project` is the slug they apply to (null for account-w |
list_addons | List the optional add-on subscriptions (RPM upgrades, extra team seats, extended log retention, extra file-delivery storage in +5 GB blocks, …). Each entry is monthly, renews every 30 days until cancelled, and carries `scope` (per_account o |
list_api_keys | List the project's inbound API keys (metadata only — the secret plaintext is never returned). |
list_audit_events | List project audit-log entries, newest first. Captures who changed what — lines, endpoints, targets, API keys. Outbound-target `auth.token` / `auth.password` are redacted in the diff per the same policy used for endpoint reads. Retention is Inputs: action, entityType, entityId, since, until, limit |
list_config_revisions, list_credentials, list_credit_packs, list_dlq, list_endpoints, list_lines, list_members, list_project_tokens, list_projects, list_requests, list_subscription_plans, preview_line_draft, preview_plan_change, protect_project, publish_line_draft, remove_member, rename_project, resend_invite, resume_addon, retry_dlq_entry, reveal_rotation_successor, revoke_api_key, revoke_project_token, rollback_config, rotate_api_key, schedule_line_publish, set_burst_opt_in, set_docs_shared, set_key_policy, set_member_role, set_outbound_allowlist, set_rpm_ceiling, start_subscription, start_topup, subscribe_addon, unarchive_project, unsubscribe_addon, update_credential, update_endpoint
Every block below points at https://mcp.echorelay.dev. Pick your client and copy.
claude mcp add --transport http echorelay https://mcp.echorelay.dev
{
"mcpServers": {
"echorelay": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.echorelay.dev"]
}
}
}{
"mcpServers": {
"echorelay": {
"url": "https://mcp.echorelay.dev"
}
}
}{
"servers": {
"echorelay": {
"type": "http",
"url": "https://mcp.echorelay.dev"
}
}
}{
"context_servers": {
"echorelay": {
"url": "https://mcp.echorelay.dev"
}
}
}{
"mcpServers": {
"echorelay": {
"serverUrl": "https://mcp.echorelay.dev"
}
}
}{
"mcpServers": {
"echorelay": {
"url": "https://mcp.echorelay.dev"
}
}
}name: EchoRelay
version: 0.0.1
schema: v1
mcpServers:
- name: EchoRelay
type: streamable-http
url: https://mcp.echorelay.dev{
"mcpServers": {
"echorelay": {
"httpUrl": "https://mcp.echorelay.dev"
}
}
}{
"mcpServers": {
"echorelay": {
"type": "http",
"url": "https://mcp.echorelay.dev"
}
}
}{
"mcpServers": {
"echorelay": {
"url": "https://mcp.echorelay.dev"
}
}
}goose://extension?url=https%3A%2F%2Fmcp.echorelay.dev&type=streamable_http&id=echorelay&name=EchoRelay
It answered our last check on 19 October 2026 in 234 ms. Over 6 checks since 10 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
Yes. It is published by echorelay.dev and served from mcp.echorelay.dev, the vendor's own domain: https://mcp.echorelay.dev.
79, as returned by the server's own tools/list on 11 September 2026: activate_line, archive_project, cancel_line_publish, cancel_subscription, change_plan, config_diff, create_api_key, create_credential, and 71 more.
It answered our last check on 19 October 2026 in 234 ms. Over 6 checks since 10 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://mcp.echorelay.dev. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: dev.echorelay. Endpoint host: mcp.echorelay.dev. ARD identifier: urn:air:dev.echorelay:mcp:management.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.