# Echo
For "Onboard me to Echo", getting started, or product help, call `onboard` when
available. Follow its guide to one useful result using this account's tools.
## Account data
- `me` is the signed-in user. Pass `me` wherever a participant email is accepted;
meeting results return them as `me`, and a transcript's `speakers` entry
whose `person_id` equals `me.person_id` is them. When `me.labelled` is false
no line names them: attribute no `Speaker N` voice to them, say so, and
answer from the roster, the note and what was said.
- Use cloud-authoritative meetings and owner-only artifact definitions. Search
when IDs are unknown; page through transcripts only as needed. Reads stop at
a readable size: continue from `next_offset` or `remaining_meeting_ids`.
- Read current state before changes. Use exact IDs and returned versions or
revisions; preserve fields outside the request. Retry uncertain mutations
with identical arguments and the same `operation_id`.
- Create meetings and workflows only when requested. Creation does not record
audio, schedule meetings, or run workflows.
- List settings or experiments immediately before changes. Overrides follow
the account; clearing restores the source, not necessarily off. Device-local
preferences are outside these tools.
- Only `list_workspaces` names workspaces. List immediately before `move_meeting`;
confirm each meeting through a pending proposal or conversation.
- Meeting edit proposals are durable, human-reviewable pending edits:
propose_summary_edit and propose_session_correction never change meeting content;
only apply_edit_proposal applies a proposal.
- Read memories before personalizing. Update existing facts instead of saving
duplicates; save or forget only what the user stated or asked to drop.
## Toolbox
- Connected servers such as Slack, Linear, and Notion are not copied into
`tools/list`. Find their tools with `toolbox_search_tools`, fetch schemas with
`toolbox_describe_tool
Protocol
Pass100/10020 / 20 pts
Connection, authentication, and protocol compatibility.
Declared output schemas have a valid basic structure
1 output schema issue(s) found
How to fix: Fix the declared JSON Schema structure (for example, every required name must exist in properties). An outputSchema may describe any JSON value, including an array; returned structuredContent must match it at runtime.
{
"type": "object",
"$defs": {
"ApiKeyScope": {
"enum": [
"transcripts:read",
"meetings:read",
"meetings:import"
],
"type": "string"
},
"ApiKeyResourceScope": {
"enum": [
"workspace",
"account"
],
"type": "string"
}
},
"required": [
"id",
"workspace_id",
"owner_user_id",
"name",
"key_prefix",
"status",
"revision",
"created_at",
"api_key"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"$ref": "#/$defs/ApiKeyScope"
},
"default": [
"transcripts:read"
]
},
"status": {
"type": "string",
"description": "`active`, or `revoked` once it has been revoked."
},
"api_key": {
"type": "string",
"description": "Shown exactly once. Echo stores only a digest and cannot show it again; mint a new key if it is lost."
},
"revision": {
"type": "integer",
"description": "Pass back as expected_revision on the next mutation."
},
"created_at": {
"type": "string"
},
"key_prefix": {
"type": "string",
"description": "The first characters of the key, kept so two keys can be told apart in a list."
},
"revoked_at": {
"type": [
"string",
"null"
]
},
"last_used_at": {
"type": [
"string",
"null"
],
"description": "When the key last authenticated a request, to the nearest minute. Null until it is first used."
},
"workspace_id": {
"type": "string"
},
"owner_user_id": {
"type": "string"
},
"issuer_user_id": {
"type": [
"string",
"null"
],
"description": "The operator who issued this key, separately from its beneficiary."
},
"resource_scope": {
"$ref": "#/$defs/ApiKeyResourceScope",
"default": "workspace"
}
},
"description": "Everything an owner sees about a key. Never the digest, and never the key."
}
Original tool metadata
{
"name": "api_key_create",
"title": "Create an Echo API Key",
"description": "Create a scoped Echo Pro API key for meeting reads or workspace imports; it is shown once.",
"inputSchema": {
"type": "object",
"$defs": {
"ApiKeyScope": {
"enum": [
"transcripts:read",
"meetings:read",
"meetings:import"
],
"type": "string"
},
"ApiKeyResourceScope": {
"enum": [
"workspace",
"account"
],
"type": "string"
}
},
"required": [
"operation_id"
],
"properties": {
"name": {
"type": [
"string",
"null"
]
},
"scopes": {
"type": "array",
"items": {
"$ref": "#/$defs/ApiKeyScope"
},
"default": [
"transcripts:read"
],
"description": "meetings:read grants meeting reads; transcripts:read only known-ID transcripts; meetings:import permits imports into one workspace."
},
"operation_id": {
"type": "string",
"description": "UUID; reuse only on retry."
},
"workspace_id": {
"type": [
"string",
"null"
],
"description": "Omit for the personal workspace."
},
"resource_scope": {
"$ref": "#/$defs/ApiKeyResourceScope",
"default": "workspace",
"description": "account: all meetings the caller can read; omit workspace_id."
}
}
},
"outputSchema": {
"type": "object",
"$defs": {
"ApiKeyScope": {
"enum": [
"transcripts:read",
"meetings:read",
"meetings:import"
],
"type": "string"
},
"ApiKeyResourceScope": {
"enum": [
"workspace",
"account"
],
"type": "string"
}
},
"required": [
"id",
"workspace_id",
"owner_user_id",
"name",
"key_prefix",
"status",
"revision",
"created_at",
"api_key"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"$ref": "#/$defs/ApiKeyScope"
},
"default": [
"transcripts:read"
]
},
"status": {
"type": "string",
"description": "`active`, or `revoked` once it has been revoked."
},
"api_key": {
"type": "string",
"description": "Shown exactly once. Echo stores only a digest and cannot show it again; mint a new key if it is lost."
},
"revision": {
"type": "integer",
"description": "Pass back as expected_revision on the next mutation."
},
"created_at": {
"type": "string"
},
"key_prefix": {
"type": "string",
"description": "The first characters of the key, kept so two keys can be told apart in a list."
},
"revoked_at": {
"type": [
"string",
"null"
]
},
"last_used_at": {
"type": [
"string",
"null"
],
"description": "When the key last authenticated a request, to the nearest minute. Null until it is first used."
},
"workspace_id": {
"type": "string"
},
"owner_user_id": {
"type": "string"
},
"issuer_user_id": {
"type": [
"string",
"null"
],
"description": "The operator who issued this key, separately from its beneficiary."
},
"resource_scope": {
"$ref": "#/$defs/ApiKeyResourceScope",
"default": "workspace"
}
},
"description": "Everything an owner sees about a key. Never the digest, and never the key."
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
{
"type": "object",
"$defs": {
"ApiKeyScope": {
"enum": [
"transcripts:read",
"meetings:read",
"meetings:import"
],
"type": "string"
},
"ApiKeyResourceScope": {
"enum": [
"workspace",
"account"
],
"type": "string"
}
},
"required": [
"id",
"workspace_id",
"owner_user_id",
"name",
"key_prefix",
"status",
"revision",
"created_at"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"$ref": "#/$defs/ApiKeyScope"
},
"default": [
"transcripts:read"
]
},
"status": {
"type": "string",
"description": "`active`, or `revoked` once it has been revoked."
},
"revision": {
"type": "integer",
"description": "Pass back as expected_revision on the next mutation."
},
"created_at": {
"type": "string"
},
"key_prefix": {
"type": "string",
"description": "The first characters of the key, kept so two keys can be told apart in a list."
},
"revoked_at": {
"type": [
"string",
"null"
]
},
"last_used_at": {
"type": [
"string",
"null"
],
"description": "When the key last authenticated a request, to the nearest minute. Null until it is first used."
},
"workspace_id": {
"type": "string"
},
"owner_user_id": {
"type": "string"
},
"issuer_user_id": {
"type": [
"string",
"null"
],
"description": "The operator who issued this key, separately from its beneficiary."
},
"resource_scope": {
"$ref": "#/$defs/ApiKeyResourceScope",
"default": "workspace"
}
},
"description": "Everything an owner sees about a key. Never the digest, and never the key."
}
Original tool metadata
{
"name": "api_key_revoke",
"title": "Revoke an Echo API Key",
"description": "Permanently revoke an API key, effective next request; deploy any replacement first.",
"inputSchema": {
"type": "object",
"required": [
"api_key_id",
"expected_revision",
"operation_id"
],
"properties": {
"api_key_id": {
"type": "string"
},
"operation_id": {
"type": "string",
"description": "UUID; reuse only on retry."
},
"expected_revision": {
"type": "integer",
"description": "From api_key_list."
}
}
},
"outputSchema": {
"type": "object",
"$defs": {
"ApiKeyScope": {
"enum": [
"transcripts:read",
"meetings:read",
"meetings:import"
],
"type": "string"
},
"ApiKeyResourceScope": {
"enum": [
"workspace",
"account"
],
"type": "string"
}
},
"required": [
"id",
"workspace_id",
"owner_user_id",
"name",
"key_prefix",
"status",
"revision",
"created_at"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"scopes": {
"type": "array",
"items": {
"$ref": "#/$defs/ApiKeyScope"
},
"default": [
"transcripts:read"
]
},
"status": {
"type": "string",
"description": "`active`, or `revoked` once it has been revoked."
},
"revision": {
"type": "integer",
"description": "Pass back as expected_revision on the next mutation."
},
"created_at": {
"type": "string"
},
"key_prefix": {
"type": "string",
"description": "The first characters of the key, kept so two keys can be told apart in a list."
},
"revoked_at": {
"type": [
"string",
"null"
]
},
"last_used_at": {
"type": [
"string",
"null"
],
"description": "When the key last authenticated a request, to the nearest minute. Null until it is first used."
},
"workspace_id": {
"type": "string"
},
"owner_user_id": {
"type": "string"
},
"issuer_user_id": {
"type": [
"string",
"null"
],
"description": "The operator who issued this key, separately from its beneficiary."
},
"resource_scope": {
"$ref": "#/$defs/ApiKeyResourceScope",
"default": "workspace"
}
},
"description": "Everything an owner sees about a key. Never the digest, and never the key."
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
{
"type": "object",
"required": [
"deleted",
"memory_id"
],
"properties": {
"deleted": {
"type": "boolean",
"description": "False when the server had no such live memory, which is not an error."
},
"memory_id": {
"type": "string"
}
}
}
Original tool metadata
{
"name": "delete_memory",
"title": "Delete Memory",
"description": "Forget one saved memory, only when the user asks.",
"inputSchema": {
"type": "object",
"required": [
"operation_id",
"memory_id",
"expected_revision"
],
"properties": {
"memory_id": {
"type": "string",
"format": "uuid"
},
"operation_id": {
"type": "string",
"format": "uuid",
"description": "UUID; reuse only on retry."
},
"expected_revision": {
"type": "integer",
"description": "From list_memories."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"deleted",
"memory_id"
],
"properties": {
"deleted": {
"type": "boolean",
"description": "False when the server had no such live memory, which is not an error."
},
"memory_id": {
"type": "string"
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Import an external meeting into an authorized workspace. Supply text, or enroll audio metadata and PUT the raw file to /v1/meetings/{session_id}/audio with a meetings:import API key. Echo can transcribe and diarize uploaded audio. Reuse source identity on retries; existing text is never overwritten or resurrected. No automatic workflow runs.
Describe the returned information so the agent knows whether it will answer the request.
Inputs38/100
9 of 23 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
$defs › ImportAudio › content_type
audio/wav, audio/mpeg or audio/mp4.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › ImportAudio › duration_ms
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › ImportAudio › num_speakers
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description78/100
Connect an agent to a provider (MCP OAuth, API key, Fathom, Google, Anthropic, Slack, Pocket webhook) via a one-time connect_url anyone can complete without an Echo account; the connection belongs to the workspace. Rebinding Fathom keeps the agent running.
Input constraint: Provide parameters for exactly one variant. Do not mix fields from different variants. kind="mcp_oauth": input (required, schema #/$defs/McpOauthConnectionInput). kind="api_key": input (required, schema #/$defs/ApiKeyConnectionInput). kind="fathom": input (required, schema #/$defs/FathomConnectionInput). kind="google": input (required, schema #/$defs/GoogleConnectionInput). kind="anthropic": input (required, schema #/$defs/AnthropicConnectionInput). kind="slack": input (required, schema #/$defs/SlackConnectionInput). kind="slack_custom_bot": input (required, schema #/$defs/SlackCustomBotConnectionInput). kind="pocket_webhook": input (required, schema #/$defs/PocketWebhookConnectionInput).
Describe the returned information so the agent knows whether it will answer the request.
Inputs58/100
25 of 40 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
$defs › McpOauthConnectionInput › agent
Agent alias or ID.
Clear enough to supply this argument.
$defs › McpOauthConnectionInput › connection_id
Omit to connect a new account.
Clear enough to supply this argument.
$defs › McpOauthConnectionInput › connector
mcp_oauth (default), slack_api (Slack reads via Echo) or slack_mcp (official Slack MCP).
Clear enough to supply this argument.
$defs › McpOauthConnectionInput › mcp_server_name
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › McpOauthConnectionInput › request_id
Caller UUID; reuse only for an identical retry.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › ApiKeyConnectionInput › allowed_hosts
1-16 exact lowercase hostnames; no scheme, path, port, IP, localhost or wildcard.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › ApiKeyConnectionInput › request_id
Caller UUID; reuse only for an identical retry.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › CredentialHeader › name
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CredentialHeader › prefix
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › ApiKeyConnectionInput › secret_name
Uppercase env-var name, e.g. GITHUB_TOKEN; NANGO_SECRET_KEY is reserved.
Clear enough to supply this argument.
$defs › FathomConnectionInput › agent
Agent alias or ID; it needs a fathom trigger.
Clear enough to supply this argument.
$defs › FathomConnectionInput › request_id
Caller UUID; reuse only for an identical retry.
Clear enough to supply this argument.
$defs › FathomConnectionInput › trigger_scopes
Any of my_recordings, shared_external_recordings, my_shared_with_team_recordings, shared_team_recordings (team ones need a Fathom Team Plan); omit for all.
Clear enough to supply this argument.
$defs › GoogleConnectionInput › agent
Agent alias or ID; without broker it needs a google_calendar_event trigger.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description67/100
List reusable MCP OAuth, Google and API-key connections, optionally for one agent; attach via managed_agent_update. Fathom, Anthropic and Slack state: managed_agent_get include=details.
Describe the returned information so the agent knows whether it will answer the request.
Inputs66/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
agent
Agent alias or ID.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description92/100
Revoke an mcp_oauth, api_key, google, slack_custom_bot or pocket_webhook connection; every agent using it keeps running, flagged as needing attention, and runs that need it fail until it is reconnected. To detach from one agent only, set connection_id null via managed_agent_update.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
connection_id
Not provided
Missing description. Explain what this value means and how to supply it.
kind
mcp_oauth, api_key, google, slack_custom_bot or pocket_webhook.
Resolve the mismatch between this description and its schema constraints.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Create a managed agent from its instructions, model, environment and triggers. It starts paused unless active=true and setup is complete; finish setup_actions from managed_agent_get include=details, then set active=true.
The description explains the capability, when to use it, and what to expect.
Inputs22/100
10 of 34 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
active
Not provided
Missing description. Explain what this value means and how to supply it.
description
Not provided
Missing description. Explain what this value means and how to supply it.
echo_workspace_id
Library UUID for echo_transcript_ready; omit for the owner's personal library.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
emoji
Emoji or Slack :shortcode:, optional :skin-tone-N: (2-6).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
environment
From managed_agent_environment_list; required unless sandbox_provider is sailbox.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › CustomerMcpServer › enabled_tools
Up to 100 tools, default all; enabled tools run without approval.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › CustomerMcpServer › url
Not provided
Missing description. Explain what this value means and how to supply it.
metadata
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaEffort › type
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaModelConfigParam › id
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaModelConfigParam › inference_geo
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaModelConfigParam › speed
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaRosterObjectParam › oneOf › 0 › id
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaRosterObjectParam › oneOf › 0 › type
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaRosterObjectParam › oneOf › 0 › version
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaRosterObjectParam › oneOf › 1 › type
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaRosterObjectParam › oneOf › 2 › model
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaRosterObjectParam › oneOf › 2 › type
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaMultiagentParam › type
Not provided
Missing description. Explain what this value means and how to supply it.
name
Not provided
Missing description. Explain what this value means and how to supply it.
platform_integrations
Not provided
Missing description. Explain what this value means and how to supply it.
request_id
Caller UUID; reuse only for an identical retry.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › SailboxNetwork › oneOf › 0 › type
Not provided
Missing description. Explain what this value means and how to supply it.
Missing description. Explain what this value means and how to supply it.
$defs › SailboxNetwork › oneOf › 1 › type
Not provided
Missing description. Explain what this value means and how to supply it.
sandbox_provider
`cloud` (default) runs in the agent's environment. `sailbox` runs on Echo's platform: omit environment, no Console key is involved, and API keys need sailbox_header.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
skills
Items: type (anthropic or custom), skill_id, exact version (latest is refused).
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
system
Not provided
Missing description. Explain what this value means and how to supply it.
title_filter
Case-insensitive title substring for fathom and echo_transcript_ready.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
tools
agent_toolset_20260401 and custom tools only (mcp_toolset comes from mcp_servers). Keep read, and bash with platform_integrations; avoid always_ask/auto.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › CmaActivationTriggerSpec › enabled
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaActivationTriggerSpec › kind
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaActivationTriggerSpec › params
By kind. agent_activity: source_activation_ids (1-50 exact activation UUIDs), events (invoked, message_sent, action_completed, completed), optional include_automated (default false; message_sent always includes automatic sends). Observed runs are private and do not generate activity. fathom, echo_transcript_ready: optional title_substring. google_calendar_event: optional description_substring, color_id ("1"-"11"). scheduled: cron (5 fields; `;` joins several) and IANA timezone. run_at: at (future RFC 3339 with offset) and timezone. slack_message: binding_id, channel_id, optional sender_bot_ids, contains_word, senders (humans or anyone). slack_channel_observer: binding_id, channel_id. slack_direct_message: binding_id. slack_reaction: binding_id, emoji. slack_command: binding_id, commands. slack: events from app_mention, message.im, message.mpim, reaction_added, commands, plus reactions and commands lists. prompt, slack_mention: none.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
workspace_id
Not provided
Missing description. Explain what this value means and how to supply it.
Align the title with the capability actually described by this tool.
Description64/100
Create, update, archive or delete an environment you own. config.networking takes no allow_mcp_servers. config.type=self_hosted is not usable by Echo-hosted activations.
Input constraint: Provide parameters for exactly one variant. Do not mix fields from different variants. operation="create": input (required, schema #/$defs/CmaEnvironmentCreateInput). operation="update": input (required, schema #/$defs/CmaEnvironmentUpdateInput). operation="archive": input (required, schema #/$defs/CmaEnvironmentArchiveInput). operation="delete": input (required, schema #/$defs/CmaEnvironmentDeleteInput).
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs52/100
12 of 21 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
$defs › CmaEnvironmentCreateInput › config
type cloud or self_hosted; cloud may set networking (unrestricted, or limited with allowed_hosts) and packages.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › CmaEnvironmentCreateInput › description
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaEnvironmentCreateInput › metadata
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaEnvironmentCreateInput › name
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description79/100
Read an agent's purpose, trigger, status, version (expected_version) and open proposal; include=details adds setup, include=specification the native version.
Describe the returned information so the agent knows whether it will answer the request.
Inputs58/100
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
agent
Agent alias or ID.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
include
implementation: prompt, skill names (files via managed_agent_skill_get include=files); review: judge, feedback, proposals; versions: history.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
Only with include=versions.
Explain the meaning of this value, not just its name.
page
Only with include=versions.
Explain the meaning of this value, not just its name.
proposal_id
Only with include=review.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
version
Only with include=specification.
Explain the meaning of this value, not just its name.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description81/100
List accessible agents and Slack routers as a paged index: name, aliases, status, purpose, trigger, last run and open proposal. Read setup with managed_agent_get.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
3 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
cursor
From next_cursor.
Explain the meaning of this value, not just its name.
include_archived
Not provided
Missing description. Explain what this value means and how to supply it.
limit
Hosted agents per page, 1–100; defaults to 50.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
source
external: agents in customer-owned Anthropic accounts.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description88/100
Draft instruction, skill or routing changes for review, based on managed_agent_get include=implementation; nothing changes until a person approves via managed_agent_publish.
The description explains the capability, when to use it, and what to expect.
Inputs40/100
10 of 25 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agent
Agent alias or ID.
Clear enough to supply this argument.
$defs › AgentProposalDocument › after
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › AgentProposalDocument › base_version
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › AgentProposalDocument › before
Exact current text; for skill_set, JSON arrays of pinned skill references.
Clear enough to supply this argument.
$defs › AgentProposalDocument › deleted
Delete this judge case; after must be empty.
Clear enough to supply this argument.
$defs › AgentProposalDocument › id
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › AgentProposalDocument › kind
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › AgentProposalDocument › path
Not provided
Missing description. Explain what this value means and how to supply it.
Describe the returned fields so an agent can interpret the result.
View output schema
{
"type": "object",
"required": [
"user_summary",
"run_id",
"activation_id",
"status",
"requested",
"replayed",
"next_action"
],
"properties": {
"run_id": {
"type": "string"
},
"status": {
"type": "string",
"description": "Run status when the close was recorded; still awaiting_reply until Echo's worker archives the Anthropic session."
},
"replayed": {
"type": "boolean",
"description": "True when nothing new was recorded because the close already existed."
},
"requested": {
"type": "boolean",
"description": "True when this call recorded the close; false when the run was already closed or already marked for closing."
},
"next_action": {
"type": "string"
},
"user_summary": {
"type": "string"
},
"activation_id": {
"type": "string"
}
}
}
Original tool metadata
{
"name": "managed_agent_run_close",
"title": "Close Run",
"description": "Close an idle run and archive its Anthropic session.",
"inputSchema": {
"type": "object",
"required": [
"agent",
"run_id"
],
"properties": {
"agent": {
"type": "string"
},
"run_id": {
"type": "string",
"description": "From managed_agent_runs."
},
"stop_running": {
"type": "boolean",
"default": false
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"user_summary",
"run_id",
"activation_id",
"status",
"requested",
"replayed",
"next_action"
],
"properties": {
"run_id": {
"type": "string"
},
"status": {
"type": "string",
"description": "Run status when the close was recorded; still awaiting_reply until Echo's worker archives the Anthropic session."
},
"replayed": {
"type": "boolean",
"description": "True when nothing new was recorded because the close already existed."
},
"requested": {
"type": "boolean",
"description": "True when this call recorded the close; false when the run was already closed or already marked for closing."
},
"next_action": {
"type": "string"
},
"user_summary": {
"type": "string"
},
"activation_id": {
"type": "string"
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description73/100
Read the Slack posts a run confirmed sending (editors only). limit 1–5; page with before=next_cursor. Excludes host answers, ephemeral and scheduled sends.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
3 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
before
Not provided
Missing description. Explain what this value means and how to supply it.
history_page
Previous next_history_page; keep before unchanged.
Explain the meaning of this value, not just its name.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
recover_history
Recover missing content from one native history page.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description74/100
Start a direct conversation with source=chat and text, run an agent on a pasted transcript, or run a customer-owned agent on its latest Fathom call. Reuse request_id only to retry; read managed_agent_run_result with the admitted run.id and turn_index=0 for its result. Echo Desktop delivers the reply automatically.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs65/100
9 of 10 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
action_items
Transcript metadata only; leave null for other sources.
Explain the meaning of this value, not just its name.
agent
Native Agent ID, activation UUID, exact display name or Slack alias.
Clear enough to supply this argument.
crm_matches
Transcript metadata only; leave null for other sources.
Explain the meaning of this value, not just its name.
invitees
Transcript metadata only; leave null for other sources.
Explain the meaning of this value, not just its name.
request_id
UUID; reuse only to retry the same request.
Clear enough to supply this argument.
source
Not provided
Missing description. Explain what this value means and how to supply it.
summary
Transcript metadata only; leave null for other sources.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
text
Required for source=chat; leave null for other sources.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
title
Transcript metadata only; leave null for other sources.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
transcript
Required for source=transcript; leave null for other sources.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Read the public answer of one exact run turn without replaying it. Use turn_index=0 for an initial run; for a follow-up use the turn_index and request_id from managed_agent_run_send_message. pending is working; completed includes idle awaiting_reply turns. Private episode metadata and credentials are excluded.
The description explains the capability, when to use it, and what to expect.
Inputs25/100
1 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
request_id
Required for a follow-up; from the exact send-message request.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
run_id
Not provided
Missing description. Explain what this value means and how to supply it.
turn_index
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Queue a follow-up on a hosted run, including while it is working. Messages run in order and replies stay in Echo. Reuse request_id only to retry; after poll_after_ms read managed_agent_run_result with the returned run_id, turn_index and request_id. Echo Desktop delivers the reply automatically.
The description explains the capability, when to use it, and what to expect.
Inputs31/100
2 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agent
Not provided
Missing description. Explain what this value means and how to supply it.
request_id
UUID; reuse only on retry.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
run_id
From managed_agent_runs.
Explain the meaning of this value, not just its name.
text
Not provided
Missing description. Explain what this value means and how to supply it.
{
"type": "object",
"required": [
"request_id",
"user_summary",
"run_id",
"activation_id",
"status",
"replayed",
"poll_after_ms",
"next_action"
],
"properties": {
"run_id": {
"type": "string"
},
"status": {
"type": "string",
"description": "Run status after the message was reserved; running while Echo's worker sends it and the Agent works on the new turn."
},
"replayed": {
"type": "boolean",
"description": "True when this request_id was already reserved and nothing new was queued."
},
"request_id": {
"type": "string"
},
"turn_index": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Exact reserved turn; absent on historical reservations without turn attribution."
},
"next_action": {
"type": "string"
},
"user_summary": {
"type": "string"
},
"activation_id": {
"type": "string"
},
"poll_after_ms": {
"type": "integer",
"minimum": 0,
"description": "Wait this many milliseconds before reading managed_agent_run_result for this exact turn."
},
"native_session_id": {
"type": [
"string",
"null"
],
"description": "Anthropic session receiving the message; null while it is still being created."
}
}
}
Original tool metadata
{
"name": "managed_agent_run_send_message",
"title": "Send Run Message",
"description": "Queue a follow-up on a hosted run, including while it is working. Messages run in order and replies stay in Echo. Reuse request_id only to retry; after poll_after_ms read managed_agent_run_result with the returned run_id, turn_index and request_id. Echo Desktop delivers the reply automatically.",
"inputSchema": {
"type": "object",
"required": [
"agent",
"run_id",
"request_id",
"text"
],
"properties": {
"text": {
"type": "string"
},
"agent": {
"type": "string"
},
"run_id": {
"type": "string",
"description": "From managed_agent_runs."
},
"request_id": {
"type": "string",
"description": "UUID; reuse only on retry."
}
},
"additionalProperties": false
},
"outputSchema": {
"type": "object",
"required": [
"request_id",
"user_summary",
"run_id",
"activation_id",
"status",
"replayed",
"poll_after_ms",
"next_action"
],
"properties": {
"run_id": {
"type": "string"
},
"status": {
"type": "string",
"description": "Run status after the message was reserved; running while Echo's worker sends it and the Agent works on the new turn."
},
"replayed": {
"type": "boolean",
"description": "True when this request_id was already reserved and nothing new was queued."
},
"request_id": {
"type": "string"
},
"turn_index": {
"type": [
"integer",
"null"
],
"minimum": 0,
"description": "Exact reserved turn; absent on historical reservations without turn attribution."
},
"next_action": {
"type": "string"
},
"user_summary": {
"type": "string"
},
"activation_id": {
"type": "string"
},
"poll_after_ms": {
"type": "integer",
"minimum": 0,
"description": "Wait this many milliseconds before reading managed_agent_run_result for this exact turn."
},
"native_session_id": {
"type": [
"string",
"null"
],
"description": "Anthropic session receiving the message; null while it is still being created."
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": true
}
}
The title clearly communicates the tool’s action and subject. Keep it concise.
Description76/100
Create a skill from its files (SKILL.md plus resources); attach via managed_agent_update or managed_agent_propose. New versions: managed_agent_skill_update.
The description explains the capability, when to use it, and what to expect.
Inputs43/100
4 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
display_name
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › CmaSkillTextFileInput › content_text
UTF-8 text, e.g. SKILL.md.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › CmaSkillTextFileInput › path
Relative path, e.g. SKILL.md.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › CmaSkillBase64FileInput › content_base64
Standard RFC 4648 base64 of the file bytes.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › CmaSkillBase64FileInput › path
Not provided
Missing description. Explain what this value means and how to supply it.
request_id
Caller UUID; reuse only for an identical retry.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
workspace_id
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Read a skill's metadata, versions (include=versions) or a version's files as text (include=files): every path and size, with whole files inlined while they fit; pass path (and offset, limit) to read one file by lines.
Describe the returned information so the agent knows whether it will answer the request.
Inputs79/100
6 of 7 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
include
Not provided
Missing description. Explain what this value means and how to supply it.
limit
include=versions: page size; include=files with path: most lines.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
offset
include=files with path: first line, 1-based.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
page
Only with include=versions.
Clear enough to supply this argument.
path
include=files: one file's exact path; omit to list every file.
Clear enough to supply this argument.
skill_id
From managed_agent_skill_list.
Clear enough to supply this argument.
version
Exact version ID; include=files defaults to latest.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Publish a new skill version: send changed files with base_version (and delete_paths), or the complete file set without it, using exact paths from managed_agent_skill_get include=files. Agents stay on pinned versions until repointed via managed_agent_update.
The description explains the capability, when to use it, and what to expect.
Inputs72/100
7 of 8 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
base_version
Exact version to start from (or `latest`): files keep their content
unless replaced in files or removed by delete_paths.
Explain what happens when this optional value is omitted.
delete_paths
Exact paths to drop from base_version.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › CmaSkillTextFileInput › content_text
UTF-8 text, e.g. SKILL.md.
Clear enough to supply this argument.
$defs › CmaSkillTextFileInput › path
Relative path, e.g. SKILL.md.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
$defs › CmaSkillBase64FileInput › content_base64
Standard RFC 4648 base64 of the file bytes.
Clear enough to supply this argument.
$defs › CmaSkillBase64FileInput › path
Not provided
Missing description. Explain what this value means and how to supply it.
request_id
Caller UUID; reuse only for an identical retry.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
Align the title with the capability actually described by this tool.
Description77/100
List the Slack channels an agent's bot is a member of, optionally for one binding. Use it for bot channel membership, not output settings; reads no message history.
Describe the returned information so the agent knows whether it will answer the request.
Inputs25/100
2 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
activation_id
Activation ID or agent reference.
Explain the meaning of this value, not just its name.
binding_id
Not provided
Missing description. Explain what this value means and how to supply it.
cursor
Not provided
Missing description. Explain what this value means and how to supply it.
posting_identity_id
Not a Slack channel ID.
Explain the meaning of this value, not just its name.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description87/100
List one installation's reserved channels, the bindings each is reserved for, and the revision to pass back. An unlisted channel is open to every agent.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
installation_id
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Reserve a channel for bindings on one installation, excluding its other current and future bindings. Null reserved_for reopens it. Gates invocation and posting, including open runs. Slack Connect keeps each binding's own installation policy.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs55/100
3 of 5 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
channel_id
Not provided
Missing description. Explain what this value means and how to supply it.
expected_revision
From channel_reservation_list.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
installation_id
Not provided
Missing description. Explain what this value means and how to supply it.
operation_id
Reuse only to retry.
Clear enough to supply this argument.
reserved_for
The only bindings admitted, now and later; [] admits none. Null lifts
the reservation and reopens the channel to every agent.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description63/100
Set a Slack-native binding's people, channels, scopes and rules; omitted keys are kept, rules replaces the set; except needs mode all, or listed with chat:write.public.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs45/100
11 of 19 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
agent_id
Slack alias or activation UUID.
Clarify units, where to obtain this value, or conventions not already expressed in the schema.
binding_id
Not provided
Missing description. Explain what this value means and how to supply it.
channels › channel_ids
For listed.
Explain the meaning of this value, not just its name.
channels › except
Not provided
Missing description. Explain what this value means and how to supply it.
channels › mode
Not provided
Missing description. Explain what this value means and how to supply it.
expected_revision
Not provided
Missing description. Explain what this value means and how to supply it.
operation_id
Reuse only to retry.
Explain the meaning of this value, not just its name.
people › mode
Not provided
Missing description. Explain what this value means and how to supply it.
people › users
For allowlist.
Clear enough to supply this argument.
rules › items › channel_id
Not provided
Missing description. Explain what this value means and how to supply it.
rules › items › contains_word
Whole word; omit to match every post, files included.
Clear enough to supply this argument.
rules › items › id
Omit to create.
Clear enough to supply this argument.
rules › items › kind
Older alias for mode and senders; must agree with them.
Explain the meaning of this value, not just its name.
rules › items › mode
invoke answers the post; observe takes it as evidence for the standing task.
Explain the meaning of this value, not just its name.
rules › items › output › channel_id
For channel.
Clear enough to supply this argument.
rules › items › output › mode
Not provided
Missing description. Explain what this value means and how to supply it.
rules › items › sender_bot_ids
Bots or anyone: limit bot posts to these; omit for any bot.
Clear enough to supply this argument.
rules › items › senders
Not provided
Missing description. Explain what this value means and how to supply it.
Align the title with the capability actually described by this tool.
Description71/100
Read your Toolbox connectors, grants, account_mode, mcp_servers_patch and review_url for an accessible workspace agent. Setup: fill enabled_tools from connectors[].tools[].name, apply the patch via managed_agent_update with MCP networking, advance the activation, then each connection owner approves at review_url. Shared agents use the verified requester's own approved accounts.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
native_agent_id
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description77/100
Change an agent's settings, triggers or active state; omitted fields stay. expected_version comes from managed_agent_get; a connection change sends only agent, expected_version, request_id and connection. Google: connection.kind=google with broker_policy; detach with connection_id null and no policy. Reuse a cloud API key in the same workspace: connection.kind=api_key, connection_id from managed_agent_connection_list, expected_revision, no server name or policy. The attachment has its own revocable connection; rotation affects every holder of the shared key. Prompt or skill drafts: managed_agent_propose. Builders may also set environment and external_target, and provision with expected_version=0.
The description explains the capability, when to use it, and what to expect.
Inputs33/100
24 of 65 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
active
false pauses; true runs once setup is ready.
Explain what happens when this optional value is omitted.
agent
Alias, agent ID or activation UUID.
Clear enough to supply this argument.
alias
New Slack alias.
Explain the meaning of this value, not just its name.
$defs › GoogleBrokerIntegration › service
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › GoogleBrokerIntegration › tools
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › GoogleBrokerPartition › key
Not provided
Missing description. Explain what this value means and how to supply it.
$defs › GoogleBrokerPartition › proxy_enabled
Not provided
Missing description. Explain what this value means and how to supply it.
From managed_agent_connection_list. Required for api_key; otherwise null detaches, which is refused while the agent's published tools still declare that MCP server.
Missing description. Explain what this value means and how to supply it.
$defs › SailboxNetwork › oneOf › 1 › type
Not provided
Missing description. Explain what this value means and how to supply it.
sandbox_provider
`cloud` (default) runs in the agent's environment. `sailbox` runs on Echo's platform: omit environment, no Console key is involved, and API keys need sailbox_header.
Align the title with the capability actually described by this tool.
Description77/100
Move one meeting to another workspace; the old workspace loses access, named shares and links stay. Pass share_effect from list_workspaces; confirm each meeting with the user or use propose_only.
Explain mutations, irreversible effects, or prerequisites that matter before calling this tool.
Inputs70/100
Explain the meaning of this value, not just its name.
expected_share_effect
From list_workspaces.
Explain the meaning of this value, not just its name.
meeting_id
Meeting ID.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operation_id
UUID; reuse only on retry.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
propose_only
Leave a pending proposal instead of moving.
Clear enough to supply this argument.
target_workspace_id
From list_workspaces.
Explain the meaning of this value, not just its name.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description84/100
Propose exact-text summary or transcript fixes and dictionary terms for one meeting: a durable, human-reviewable pending edit proposal that never changes meeting content; only apply_edit_proposal does.
The description explains the capability, when to use it, and what to expect.
Inputs78/100
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
dictionary_terms
Terms for the user's transcription dictionary.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
operation_id
UUID; reuse only on retry.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
session_id
Meeting ID.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › SummaryCorrectionItem › document_id
From read_meetings; omit when the meeting has one live summary.
Clear enough to supply this argument.
$defs › SummaryCorrectionItem › new_text
Must differ from old_text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › SummaryCorrectionItem › old_text
Exact summary text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › TranscriptCorrectionItem › new_text
Must differ from old_text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
$defs › TranscriptCorrectionItem › old_text
Exact transcript text.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Propose a full replacement Markdown summary for one meeting: a durable, human-reviewable pending edit proposal that never changes meeting content; only apply_edit_proposal does.
The description explains the capability, when to use it, and what to expect.
Inputs63/100
3 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
content
Not provided
Missing description. Explain what this value means and how to supply it.
document_id
From read_meetings; omit when the meeting has one live summary.
Clear enough to supply this argument.
operation_id
UUID; reuse only on retry.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
session_id
Meeting ID.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description86/100
Read what was said in meetings by ID: a timestamped, speaker-attributed script per recording. Use it for quotes and exact wording; follow next_offset for more.
The description explains the capability, when to use it, and what to expect.
Inputs0/100
0 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
limit
Not provided
Missing description. Explain what this value means and how to supply it.
meeting_ids
Not provided
Missing description. Explain what this value means and how to supply it.
offset
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Connect a remote MCP server to the user's Echo Toolbox by URL, only when the user asks. The user usually approves a returned authorization link, then grants clients access on the Toolbox page.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
2 of 3 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
display_name
Not provided
Missing description. Explain what this value means and how to supply it.
server_url
HTTPS MCP server URL.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
slug
Lowercase letters, digits, single underscores.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description75/100
Run a Toolbox tool by exact `slug__tool` name from toolbox_search_tools. It may write to the user's connected accounts; confirm with the user before calling any tool not hinted read-only.
The description explains the capability, when to use it, and what to expect.
Inputs38/100
1 of 2 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
arguments
Not provided
Missing description. Explain what this value means and how to supply it.
name
Exact `slug__tool` name.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Disconnect an MCP server from the user's Echo Toolbox, only when the user asks, deleting its tokens and all client grants. External clients get a `request.review_url` to approve on the Toolbox page.
Describe the returned information so the agent knows whether it will answer the request.
Inputs0/100
0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
connector_id
Not provided
Missing description. Explain what this value means and how to supply it.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description85/100
Disconnect an MCP client from the user's Echo account, only when the user asks, revoking its grants, consent and sessions. For another client, the user approves a returned `request.review_url`.
Describe the returned information so the agent knows whether it will answer the request.
Inputs94/100
Input documentation gives an agent enough context to populate the arguments.
client_key
From toolbox_list_clients; revoking your own ends this session.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description82/100
Find tools on the user's Echo Toolbox servers (Slack, Linear, Notion, others), which are not in tools/list. Returns exact `slug__tool` names and behavior hints. Empty `connectors` means this client lacks access; the user grants it on their Toolbox page.
The description explains the capability, when to use it, and what to expect.
Inputs50/100
3 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
connectors
Not provided
Missing description. Explain what this value means and how to supply it.
detail
`full` adds schemas.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
limit
`full` detail is capped at 20.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
query
Capability keywords.
Explain the meaning of this value, not just its name.
The title clearly communicates the tool’s action and subject. Keep it concise.
Description83/100
Change one client's access to a connector or to Echo's own tools, only when the user asks. A client may narrow its own access; other changes return a `request.review_url` the user approves.
The description explains the capability, when to use it, and what to expect.
Inputs19/100
1 of 4 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values.
access_level
Not provided
Missing description. Explain what this value means and how to supply it.
client_key
Not provided
Missing description. Explain what this value means and how to supply it.
connector_id
Required when target is `connector`.
Remove validation rules already expressed in this field’s schema; describe its meaning and usage instead.
target
Not provided
Missing description. Explain what this value means and how to supply it.
Describe the returned fields so an agent can interpret the result.
View output schema
{
"type": "object",
"required": [
"delivery_id",
"event_id",
"status",
"attempt_count"
],
"properties": {
"status": {
"type": "string"
},
"event_id": {
"type": "string",
"description": "The same webhook-id as the original send, so a receiver that de-duplicates on it treats the replay as the message it already has."
},
"delivery_id": {
"type": "string"
},
"attempt_count": {
"type": "integer"
}
}
}
Original tool metadata
{
"name": "webhook_delivery_replay",
"title": "Replay a Webhook Delivery",
"description": "Resend a delivery with its original webhook-id; de-duplicating receivers ignore it.",
"inputSchema": {
"type": "object",
"required": [
"delivery_id",
"operation_id"
],
"properties": {
"delivery_id": {
"type": "string"
},
"operation_id": {
"type": "string",
"description": "UUID; reuse only on retry."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"delivery_id",
"event_id",
"status",
"attempt_count"
],
"properties": {
"status": {
"type": "string"
},
"event_id": {
"type": "string",
"description": "The same webhook-id as the original send, so a receiver that de-duplicates on it treats the replay as the message it already has."
},
"delivery_id": {
"type": "string"
},
"attempt_count": {
"type": "integer"
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
Describe the returned fields so an agent can interpret the result.
View output schema
{
"type": "object",
"required": [
"delivery_id",
"event_id",
"endpoint_id"
],
"properties": {
"event_id": {
"type": "string",
"description": "The webhook-id the receiver will see, so it can be matched in a log."
},
"delivery_id": {
"type": "string"
},
"endpoint_id": {
"type": "string"
}
}
}
Original tool metadata
{
"name": "webhook_endpoint_test",
"title": "Send a Test Webhook",
"description": "Send a fake meeting.transcript_ready event to an active endpoint.",
"inputSchema": {
"type": "object",
"required": [
"endpoint_id",
"operation_id"
],
"properties": {
"endpoint_id": {
"type": "string"
},
"operation_id": {
"type": "string",
"description": "UUID; reuse only on retry."
}
}
},
"outputSchema": {
"type": "object",
"required": [
"delivery_id",
"event_id",
"endpoint_id"
],
"properties": {
"event_id": {
"type": "string",
"description": "The webhook-id the receiver will see, so it can be matched in a log."
},
"delivery_id": {
"type": "string"
},
"endpoint_id": {
"type": "string"
}
}
},
"annotations": {
"readOnlyHint": false,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}
}
echo-mcp setup, tools, quality score, publishing readiness, and alternatives.
How do I add echo-mcp to Claude, ChatGPT, or Cursor?
Add echo-mcp to Claude, ChatGPT, or Cursor by connecting its remote MCP URL in each client's MCP settings. In Claude, add a custom connector. In ChatGPT, add an MCP app. In Cursor, add an MCP server under Settings. The MCP URL is https://mcp.echoecho.ai/mcp.
Is echo-mcp MCP ready for ChatGPT and Claude?
As of October 20, 2026, echo-mcp scores 90/100 on Manufact's MCP publishing checklist. The scan does not yet meet ChatGPT publishing checks and does not yet meet Claude publishing checks. Passing these checks does not guarantee marketplace approval.
How clear is echo-mcp's MCP tool documentation?
As of October 20, 2026, echo-mcp scores 72/100 in Manufact's review of tool titles, descriptions, input and output schemas, and behavior annotations. The review covers 95 of 95 discovered tools. The quality score measures documentation clarity; runtime behavior and marketplace readiness require separate checks.
What are the best alternatives to echo-mcp?
As of October 21, 2026, alternatives to echo-mcp in communication on the Manufact MCP leaderboard include Primitive Email, AgentLine: Phone Numbers for AI Agents, JooVoice, OpenMail, and Granola.
How can echo-mcp improve its MCP documentation?
managed_agent_sharing_get is the lowest-scoring reviewed tool at 52/100. 0 of 1 inputs have descriptions. Add descriptions to the missing inputs, including where to obtain IDs and how to supply values. Open its review for feedback and a copyable fix prompt, then rerun the documentation review after updating your tool metadata.
Not your MCP?
Review any public or OAuth MCP server for protocol compatibility, tool documentation, and ChatGPT and Claude publishing readiness. No account required.