- Brand
- Eqho
- Category
- AI
- Primary Subcategory
- AI Voice Agents & Contact Center
Integration details
Description
Connect your EQHO account to review call outcomes, summarize call transcripts, analyze campaign performance, and manage voice agents and calling workflows. Ask for campaign reports, review an agent configuration, or preview a campaign change before saving it. EQHO uses OAuth sign-in. Available data and actions depend on your organization, account permissions, and enabled services. An EQHO account is required.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Primary Subcategory
- AI Voice Agents & Contact Center
- Secondary Subcategories
- None listed
- Brand
- Eqho
- Access
- Account required
- First tracked
- 2026-09-29
- Tool count
- 86
- Market
- US
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for eqho
Get updates when eqho’s Discoverability Score or category rank changes.
Competing in ChatGPT AI Voice Agents & Contact Center
View Category86 tools agents can invoke
Add a text source (up to 100000 characters). Requires upstream Admin plus MCP config write. Inspect ingestion and search before claiming retrieval works. org_id overrides this call only and requires access; session organization is unchanged.
add_knowledge_base_text
Fetch 1–20 external HTTP(S) URLs and add them as knowledge sources. Requires upstream Admin plus MCP config write. Inspect ingestion status and test retrieval afterward. org_id overrides this call only and requires access; session organization is unchanged.
add_knowledge_base_urls
Analyze an IVR draft locally for structural issues. No live runtime verification or writes. org_id overrides this call only and requires access; session organization is unchanged.
analyze_ivr_flow
Read an agent, org voices and attached actions; return advisory readiness. Common Workflows: after creating/editing an agent, inspect observations and blockers before an explicitly authorized paid test. Examples: audit_realtime_agent(agent_id="agent-id", org_id="org-id"). Available Actions: read agent, attached actions and org voices. Every read retains grouped authorization and org scope. Failed action reads remain unavailable. Configuration readiness never proves provider acceptance, live audio or call-time memory. No writes or calls occur. startup_history is optional analysis input and is never persisted.
audit_realtime_agent
Compatibility entry point for existing IVR clients. Every supported action is also exposed as a separately named, typed tool: list_ivr_flows, get_ivr_flow, create_ivr_flow, update_ivr_flow, publish_ivr_flow, list_ivr_templates, preview_ivr_template, create_ivr_flow_from_template, list_ivr_seats, list_ivr_numbers, get_ivr_number_routing, validate_ivr_flow, analyze_ivr_flow, simulate_ivr_flow, clone_ivr_flow, delete_ivr_flow, set_ivr_number_routing, place_ivr_test_call, place_ivr_test_dial. Prefer those tools for new calls. This alias preserves existing clients; it does not provide additional operations or bypass their safety gates. **Session Required:** Call ``connect()`` first. Flows are scoped to the active organization. Pass ``org_id`` to scope one call to another org you can access (superadmins: any org); the session's active org is not changed. **Draft vs live:** ``list`` / ``get`` / ``create`` / ``update`` only touch drafts. The call runtime always resolves the latest *published* snapshot, so draft edits never change what a caller currently hears. **Publish rule (mandatory):** ``action="publish"`` changes live behavior. Agents MUST ask the user for explicit approval first, then retry with ``confirm=True``. Session ``always_approve`` does **not** bypass this gate. Calling publish without confirm returns ``ConfirmationRequired`` (no API call is made). With confirm=True, the server also requires human approval elicitation before writing once. Clients without approval support are refused. On the Claude connector (stateless HTTP) this action is declined with instructions to use the EQHO app; approval prompts work in MCP clients that support elicitation over a streaming transport. Common Workflows ---------------- - See what phone menus an org already has:: ivr_flows(action="list") - Author a draft, ask the user, then publish:: ivr_flows(action="create", data={...}) # ask user: "Publish flow X on org Y?" ivr_flows(action="publish", flow_id="...", confirm=True) Available Actions ----------------- - list: All IVR flows for the active org. Endpoint: GET /v1/ivr-flows - get: One flow, including its full node tree. Endpoint: GET /v1/ivr-flows/{flow_id} - create: New draft flow. Requires ``data``. Endpoint: POST /v1/ivr-flows - update: Edit an existing draft. Requires ``flow_id`` + ``data``. Endpoint: PUT /v1/ivr-flows/{flow_id} - publish: Snapshot the draft for live callers. Requires ``flow_id`` + ``confirm=True``. Endpoint: POST /v1/ivr-flows/{flow_id}/publish Catalog and routing inspection ------------------------------ - templates: Catalog plus account defaults and missing requirements. - template_params: Read-only preview. Requires template_id; optional template_params (seat_ids, campaign_id, voicemail_email, timezone, windows, ai_fallback, business_hours, name, language, voice_audio_id). - create_from_template: Save the same parameters as a draft; never publishes or attaches a number. Requires IVR write scope. - list_seats: Registered routing destinations; requires IVR read scope. This inventory does not establish online presence. - list_numbers: Claimed-number page (offset >= 0, limit 1-100). Requires phone-number read scope; pagination metadata is preserved. - whats_answering: Requires phone_number_id and phone-number read scope. Reports configured inbound routing only, not live answering behavior. Public flow reads expose drafts rather than published snapshots. Approved live operations ------------------------ - delete: flow_id; soft-deletes the draft. Published snapshots remain. - set_number_routing: phone_number_id; data contains inbound routing mode and its ivr_flow_id, ring_group or seat_id. Also requires phone-number write scope. - test_dial (alias test_call): flow_id; data contains phone_number, optional from_number and source (draft/published). Places a paid call. These operations require human approval elicitation and fail closed when the client cannot show approval. They do not bypass publish's separate mandatory confirm=True rule. Local draft authoring --------------------- - validate / analyze: inspect data or a draft fetched by flow_id. When both are supplied, data overrides top-level draft fields locally. - simulate: same draft selection; dtmf is a list of single digits or null timeouts. at is an ISO timestamp with UTC offset for schedules. max_steps defaults to 100 (maximum 1000). Routes stop at a handoff; this never calls, rings seats, records, plays audio, or executes queues. - clone: flow_id plus clone_name creates a validated independent draft; data overrides are not accepted. Requires IVR write scope. Structural checks do not establish resource ownership, availability, or published snapshot behavior. No steps compiler or batched edits compatibility is claimed. Raw create/update are validated before writes; update validation reads the draft but still sends only supplied fields. Flow Shape ---------- ``data`` is a node tree. Node types must be one of: menu, play, gather, schedule, route, voicemail, submenu, hangup. {"name": "Main Line", "entry_node_id": "greeting", "nodes": {"greeting": {"id": "greeting", "type": "play", "prompt_text": "Thanks for calling.", "next_node_id": "menu"}, "menu": {"id": "menu", "type": "menu", "prompt_text": "Press 1 for sales.", "digit_map": {"1": "sales"}}, "sales": {"id": "sales", "type": "route", "route": {"kind": "ai_agent", "campaign_id": "..."}}}} Examples -------- - ivr_flows(action="list") - ivr_flows(action="get", flow_id="507f1f77bcf86cd799439011") - ivr_flows(action="create", data={"name": "Main Line", "entry_node_id": "greeting", "nodes": {...}}) - ivr_flows(action="update", flow_id="...", data={"name": "Renamed"}) - ivr_flows(action="publish", flow_id="...", confirm=True) # only after the user said yes
ivr_flows
Lists a campaign's configuration facts and the checks run on them. Read-only. Each check names the API field it read, the value it looked at, the test applied and ``ok``. A check whose source could not be read has ``value: "unavailable"`` and ``ok: null``; a check that does not apply to the campaign's initial_contact_medium also has ``ok: null``. No score or overall verdict is computed. Every assigned agent is read (up to 25) and its voice, AI, feature-flag and greeting settings are returned as stored. Tasks are grouped by their ``type``. Credential fields inside task settings (auth token/password, secrets, Authorization-style headers) are returned as "<redacted>". ``include_runtime=True`` adds the GET /v2/reports/metrics results for the campaign over ``range``, exactly as the API returned them. Args: campaign_id: Campaign to read. include_runtime: Also read /v2/reports/metrics for the window. range: Window for the runtime metrics: today, yesterday, last_7_days (default), last_30_days, last_90_days, this_month, last_month or this_year. runtime_metrics: Metric ids to request (default: conversation count, contact/conversion/transfer/containment rates, duration and latency). Ids missing from /v2/reports/metrics/available are listed under ``runtime.not_available`` and not requested. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
campaign_checklist
PAID. Purchases a phone number into the org (monthly carrier charge) and optionally assigns it to a campaign. If the org is at its number limit the platform refuses and charges nothing. On the Claude connector (stateless HTTP) this action is declined with instructions to use the EQHO app; approval prompts work in MCP clients that support elicitation over a streaming transport. Args: phone_number: E.164 number from search_phone_numbers. campaign_id: Campaign to assign the number to. carrier: twilio (default) or telnyx; match the search carrier. type: local (default) or toll-free; match what you searched. inbound_call_enabled: Accept inbound calls on this number. outbound_call_enabled: Allow outbound calls from this number. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed. extra_body: Escape hatch: extra body fields (region, country_code).
claim_phone_number
Create a new unpublished copy of a stored IVR draft. Does not overwrite the original. org_id overrides this call only and requires access; session organization is unchanged.
clone_ivr_flow
Create an unpublished IVR draft from a node tree. Does not route or call anyone. org_id overrides this call only and requires access; session organization is unchanged.
create_ivr_flow
Create an unpublished IVR draft from a catalog template. Does not publish, route or dial. org_id overrides this call only and requires access; session organization is unchanged.
create_ivr_flow_from_template
Create a knowledge base. data accepts name (required), description and retrieval_config; description is not searchable content. Requires upstream Admin plus MCP config write. org_id overrides this call only and requires access; session organization is unchanged.
create_knowledge_base
Creates 1 campaign record. Dials nothing until status is ACTIVE and a phone number, agent and lead list are attached. Required in data: name. status defaults to CREATED when omitted (CREATED | ACTIVE | PAUSED | INACTIVE | PROCESSED). For outbound telephony this server requires rules.call_window (a campaign without one is never selected by the dialer). For inbound campaigns set inbound_lead_list or inbound calls fail. Read help(topic="campaign_schema") for task and condition shapes. Creating an ACTIVE campaign needs human approval. On the Claude connector (stateless HTTP) this action is declined with instructions to use the EQHO app; approval prompts work in MCP clients that support elicitation over a streaming transport. Args: data: Campaign configuration (name, status, agents, dispositions, lead_lists, phone_numbers, call_window/rules, tasks, custom_fields). org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
create_campaign
Creates 1 lead list (empty). Attach it to a campaign with campaign_id so uploaded leads become dialable by that campaign. Args: name: List name. campaign_id: Campaign to attach the list to. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
create_lead_list
Creates 1 role record (agent behaviour instructions). Nothing goes live until an agent references the role. Use {{lead.first_name}}, {{agent.name}} style variables. Complex multi-step agents (qualification, booking, triage) work best with a structured workflow prompt; see help(topic="role_prompt"). Args: data: {name, description (the instructions)}. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
create_role
Creates 1 agent record. No calls are placed. Required in data: name, voice_audio_id (list_voices), role_ids (list_roles), avatar ("MAN" or "WOMAN"; an agent without one 500s on a test call and cannot run voice engine v3), personality {adherence, empathy, humor} (0-1), and ai_settings.ai_model (the API rejects an agent without one: "AI model must be specified"). Optional: language (lowercase), other ai_settings fields, structured_greetings, action_ids, script_ids, knowledge_base_ids. For custom system_prompt.inbound/outbound, each supplied object needs sections and medium (e.g. "telephony" for phone calls, "sms" for texts). Omit system_prompt to use the default prompt. Explicit Realtime instructions must be nonblank; omission deliberately uses runtime defaults. Use realtime_blueprint for a persona draft. Legacy data_store_ids is normalized to knowledge_base_ids; conflicting aliases and invalid attachment IDs are refused. No voice/model/engine or prompt is silently replaced. Inspect metadata.agent_diagnostics. Args: data: Agent configuration. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
create_agent
Delete an IVR flow (irreversible). Requires server human approval; clients without approval support fail closed. org_id overrides this call only and requires access; session organization is unchanged.
delete_ivr_flow
Delete a knowledge base and its content (irreversible). Requires upstream Manager+ plus MCP config write. Obtain user authorization first. org_id overrides this call only and requires access; session organization is unchanged.
delete_knowledge_base
Delete a knowledge source and its indexed content (irreversible). Requires upstream Admin plus MCP config write. org_id overrides this call only and requires access; session organization is unchanged.
delete_knowledge_base_source
Disconnect and end your current session. This will: - End your current session - Clean up session resources - Clear your connection context After disconnecting, you'll need to call connect() again to use other tools. Returns: Confirmation of disconnection Examples: # End your session disconnect()
disconnect
Discover what this EQHO MCP server can do. This is the recommended first call when connecting to the EQHO platform. It returns capabilities, **how to navigate EQHO** (connect → context → switch organization → data tools), and connection instructions. The discovery tool will: - Show you what features are available - Include a **navigation** section: org switching, get_context, switch_organization - Explain how to connect and get started - Provide quick start workflows for common tasks Args: query: Optional natural language query to filter capabilities. Examples: "How do I make calls?", "campaign management", "reporting and analytics" Returns: System capabilities, connection instructions, and getting started guide Examples: # Discover everything await discover_capabilities() # Specific capability await discover_capabilities(query="How do I access call recordings?")
discover_capabilities
Prepare a local Realtime two-prompt draft; creates nothing and never dials. Common Workflows: guide -> draft -> review -> create_role/create_agent. Examples: realtime_blueprint(data={name: ..., company: ..., role: ..., goal: ..., persona: ..., emotional_switch: ..., backend_model: ..., business_rules: ...}). Available Actions: local draft only. Required brief: name, company, role, goal, persona, emotional_switch, backend_model and business_rules. Optional voice_audio_id is an actual org voice row ID, not a guessed voice name. Review unresolved questions and suggested defaults. startup_history is analyzed only, never saved. Estimates do not prove provider acceptance or runtime readiness.
realtime_blueprint
List industry briefs or draft a Realtime build; creates nothing and never dials. Common Workflows: list -> brief -> gather approved facts/persona -> draft -> review -> separately authorized create handlers -> saved configuration audit. Examples: agent_builder(operation='brief', industry='towing'). For draft, data uses realtime_blueprint's required name/company/role/goal/persona/ emotional_switch/backend_model/business_rules fields and optional fields. No hardcoded voice, disposition or resource IDs; no automatic price/ETA, campaign activation, partial-stack retry or live-readiness claim. Industry suggestions are not silently inserted into the supplied business rules.
agent_builder
Get one agent's full config: voice, personality, greetings, roles, actions, scripts, feature flags. Realtime budget/persona guidance is in metadata.agent_diagnostics, including compact tiers. Estimates are advisory; rendered prompts, greeting mapping and live-call execution remain unverified. Args: detail: summary (identity and status), core (working configuration), full (default; complete existing response including history). agent_id: Agent ID (from list_agents). org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
get_agent
Get one call. summary: status, duration, disposition, numbers. core: the full call record. full: adds the transcript turns and the recording URL (long calls = large response; page the transcript with transcript_offset/transcript_limit). Args: call_id: Call ID (from list_calls). detail: summary | core | full. transcript_offset: First transcript turn to include (full only). transcript_limit: Max transcript turns to include (full only). org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
get_call
Get the QA scorecard for a call: every grader's pass/fail, score and reasoning, plus the overall pass rate (empty when nothing graded yet). Args: call_id: Call to grade-check. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
get_call_scorecard
Get one campaign: agents, phone numbers, dispositions, call window, tasks. Args: campaign_id: Campaign ID (from list_campaigns). detail: summary (id, name, status, agents, phone numbers), core (adds dispositions, call_window, rules, lead lists), full (everything incl. tasks and SIP config; large). mention_keys: Exact saved campaign.custom_fields keys to select; mention definitions are separate from these campaign values. Common Workflows: read the intended campaign and agent template, then select the actual saved mention keys before editing. Available Actions: read only; use update_campaign for mention edits. Examples: get_campaign(campaign_id="<ID>", mention_keys=["agent_greeting"]). fields: Explicit top-level fields to return instead of a tier (id/name always kept), e.g. ["tasks", "pre_call_tasks"]. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
get_campaign
Get help and guidance based on your current context. This tool provides intelligent assistance by understanding where you are in your workflow and what you're trying to accomplish. It adapts its responses based on: - Whether you're connected - Which organization you're in - What tools you've recently used - Common next steps for your current state Args: topic: Specific topic or question (optional) Examples: "campaign management", "call recordings", "how do I switch organizations?" context_aware: Provide context-specific help (default: True) Returns: Relevant guidance, examples, and next steps Examples: # General help based on current state help() # Specific topic help(topic="How do I analyze campaign performance?") # Get all available topics help(context_aware=False)
help
Read one editable IVR draft and its node tree. org_id overrides this call only and requires access; session organization is unchanged.
get_ivr_flow
Read inbound routing configuration for a claimed number. This does not prove live answering. org_id overrides this call only and requires access; session organization is unchanged.
get_ivr_number_routing
Read a knowledge base, its sources and ingestion status. Use source IDs, not rag_file_id. org_id overrides this call only and requires access; session organization is unchanged.
get_knowledge_base
Read indexed chunks of a knowledge source, optionally filtered by query. org_id overrides this call only and requires access; session organization is unchanged.
get_knowledge_base_chunks
Read a knowledge-base revision without restoring or changing it. org_id overrides this call only and requires access; session organization is unchanged.
get_knowledge_base_revision
Get one lead in full by ID: names, timezone, custom_fields (CRM ids), extracted_data. Phone/email lookup returns the grouped search summary; use its returned ID with get_lead(lead_id=...) for the full record. Calls carry lead_id; a call ID is a different identifier. With include_timeline=True (lead_id only) the lead's timeline is added as data.timeline = {items, next_cursor}: creation, edits, call-now requests, conversations and blocklisting, newest first, up to 50 entries (GET /v1/leads/{lead_id}/timeline). If the timeline cannot be read, data.timeline is null and a warning says so; it is never an empty list. phone/email lookup uses GET /v1/leads/lookup through the grouped search adapter. ID lookup uses the call's lead_id, not its call ID. A 404 remains a failed read; check the ID and organization rather than assuming why the lead is missing or searching other organizations automatically. Args: lead_id: Lead ID (takes precedence). phone: Look up by phone number (E.164). email: Look up by email. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed. include_timeline: Also fetch the lead's timeline (first 50 entries). Requires lead_id; refused with phone/email lookup.
get_lead
Org-wide or per-campaign performance: dashboard widgets, KPIs, disposition breakdown, duration distribution, call volume. KPIs and per-campaign dashboards default to total_conversations and contact_rate. Override with filters.metrics; query_metrics() lists the available metric IDs. Per-campaign dashboards group by campaign and require an explicit filters.time_granularity (hour/day/week/month/year). Date bounds are inclusive start, exclusive end. duration and call_count send start_date / end_date as start_time / end_time and campaign_id as campaign_ids. disposition (GET /v1/reports/dispositions) has no campaign filter: with a campaign_id it returns UnsupportedFilter; use list_dispositions(campaign_id=...). The org dashboard (GET /v1/reports/dashboard) takes only user_id, so date filters are not applied to it (a warning says so). Args: campaign_id: Scope to one campaign (per-campaign performance). start_date: ISO datetime lower bound. Bounds are sent as given (this server does not convert time zones), while the web app counts days in the organization's reporting time zone, so daily totals can differ. To match a local day, pass an offset, e.g. 2026-10-01T00:00:00-06:00. end_date: ISO datetime upper bound (exclusive); same offset rule. view: dashboard (default) | kpis | disposition | duration | call_count. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed. filters: Extra query params. The v1 report views send only the params their endpoint documents and warn about the rest.
get_dashboard
Get one role's full instructions (can be 10K+ words). Args: detail: summary (identity and status), core (working configuration), full (default; complete existing response including history). role_id: Role ID (from list_roles or get_agent). org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
get_role
SMS registration (A2P/10DLC) fields for the organization, as the API stores them. Read-only. Returns the Twilio (a2p_status, a2p_registration, eqho_brand_share_pending) and Telnyx (sms_compliance_status, ten_dlc_brand_id, ten_dlc_campaign_id, messaging_profile_id) fields of the organization record, and the responses of GET /v1/organizations/a2p/has-verified-a2p-campaign, /v1/organizations/a2p/brand-info and /v1/organizations/telnyx/10dlc/status verbatim. A read that fails is reported as "unavailable" with a warning. ``enum_reference`` lists the values the API defines for twilio.a2p_status. Args: org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
a2p_status
Get your current session context and connection state. Use this to understand: - Which organization you're currently working with - Your permissions and capabilities - Connection health and status - Session expiration time - Available organizations you can switch to This is helpful when you're unsure about your current context or need to verify which organization's data you're accessing. Args: include_health: Include connection health metrics (default: True) Returns: Current session state, active organization, and connection info Examples: # Check current context get_context() # Quick check without health metrics get_context(include_health=False)
get_context
List the AI agents in the active org (name, voice, status), paginated. Args: limit: Max agents to return (upstream default ~16, up to 500). skip: Agents to skip (pagination). name: Case-insensitive substring filter on the agent name. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
list_agents
List calls with server-side filters (summarized rows). Use hours=24 for "what happened today"; use q for free-text search across transcripts. Args: detail: Omit for the existing summarized response. summary returns compact rows, core adds working fields, full keeps complete rows. Explicit tiers preserve upstream pagination metadata. campaign_id: Filter to one campaign. agent_id: Filter to one agent. lead_id: All calls for one lead. call_type: inbound or outbound. start_date: ISO datetime lower bound on call start. end_date: ISO datetime upper bound on call start. hours: Convenience: calls that started in the last N hours (sets start_date when start_date is omitted). q: Free-text search across transcript, greeting and summary. limit: Rows per page (max 500). page: Page number, 1-based (sent as API offset). disposition_level_3: Exact stored disposition names or, with campaign_id, configured IDs or unique normalized names. Resolved values are the configured names stored on calls. Resolution also requires campaigns read scope. Raw filters preserve historical stored strings without reconciliation. sort_by: API sort field (default start). failed_only: Busy, failed, no-answer, or canceled calls. Conflicting status filters are rejected; compatible narrower filters are kept. order_by: asc or desc on start time (default desc). org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed. filters: Escape hatch: extra query params forwarded as-is. custom_fields: Optional {key: value} filter on conversation custom fields, the same keys webhook events publish as conversation_custom_fields. Exact, case-sensitive string match (strings only; a number stored as 12345 is not matched by '12345'); all pairs must match; dotted keys reach nested fields ({"order.id": "A17"}); at most 10 pairs, keys up to 128 characters, values up to 256.
list_calls
Tasks configured on a campaign (task_type: webhook, http_request, email, text/SMS, call_forward, try_again, llm_call, update_lead), with their ids, grouped by their stored ``type`` (pre_call, post_call, and unset for tasks without one; unset runs as post_call). try_again is post_call only: its retry counter has no meaning before the first attempt. Read-only; call this before update_campaign_tasks. Credential fields inside task settings (auth token/password, secrets, Authorization-style headers) are returned as "<redacted>". Sending the echo back to update_campaign_tasks keeps the stored credentials: "<redacted>" values are restored from the current task with the same id. Args: campaign_id: Campaign whose tasks to list. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
list_campaign_tasks
List the campaigns in the active org (summarized rows). Args: status: Filter by status: ACTIVE, PAUSED, CREATED, INACTIVE, PROCESSED. Use status="ACTIVE" for "what is running right now". limit: Rows to return. skip: Rows to skip (pagination). org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed. filters: Escape hatch: extra query params forwarded as-is.
list_campaigns
Disposition values as the API reports them. Read-only. - stored: rows of GET /v2/reports/dispositions ([{disposition_level_3, count}]) in API order, verbatim, including rows whose label is null or empty. Without campaign_id, a failed v2 read falls back to GET /v1/reports/dispositions (stored_source says which endpoint answered; the v1 report has no campaign filter, so with campaign_id there is no fallback and stored is "unavailable"). - configured: the dispositions configured on the campaign (name, parent_disposition, contacted, conversion, enabled); only with campaign_id. - calls_without_disposition: meta.total of GET /v1/calls?dispositioned=false for the same window. Call this before filtering by disposition: the filter is an exact string match and a guessed value returns zero rows, not an error. Args: campaign_id: Restrict to one campaign (sent as campaign_ids). start_date: ISO datetime lower bound, sent as created_gte (default: 90 days ago). end_date: ISO datetime upper bound, sent as created_lt. org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
list_dispositions
List editable IVR drafts in the active organization. org_id overrides this call only and requires access; session organization is unchanged.
list_ivr_flows
Read claimed phone numbers for IVR routing, with offset pagination. org_id overrides this call only and requires access; session organization is unchanged.
list_ivr_numbers
Read registered softphone seat inventory for IVR routing. org_id overrides this call only and requires access; session organization is unchanged.
list_ivr_seats
List available IVR draft templates. org_id overrides this call only and requires access; session organization is unchanged.
list_ivr_templates
Read knowledge-base revision history. offset is 1-based and limit is 1–100. org_id overrides this call only and requires access; session organization is unchanged.
list_knowledge_base_revisions
List knowledge bases in the active organization. org_id overrides this call only and requires access; session organization is unchanged.
list_knowledge_bases
Lead lists in the org, or one list in full when list_id is given. Read-only. Args: list_id: Return this one list. campaign_id: Lists attached to this campaign. q: Name search. unassigned: Only lists not attached to any campaign. limit: Rows per page. page: Page number, 1-based (sent as the API's offset). org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed.
list_lead_lists
List or search leads (GET /v1/leads). With list_id: the leads on that lead list. Without: search the org by q / campaign_id / time. For a phone or email lookup use get_lead. Names are genuinely null for leads created by inbound calls; use get_lead for the full record (custom_fields, CRM ids). Args: detail: Omit for the existing summarized response. summary returns compact rows, core adds working fields, full keeps complete rows. Explicit tiers preserve upstream pagination metadata. list_id: Lead list to page through. campaign_id: Leads on one campaign. q: Free-text search. start_time: ISO-8601 lower bound on creation time. end_time: ISO-8601 upper bound on creation time. limit: Rows per page. page: Page number, 1-based (sent as the API's ``offset``). org_id: Optional organization override for THIS call only. Superadmins may target any org; other users only orgs they can access (anything else raises a 403). The session's active org is not changed. filters: Escape hatch: extra query params forwarded as-is.
list_leads
eqho ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve eqho's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
What are eqho alternatives on ChatGPT?
As of 2026-11-02, eqho competes with Aira, Aiva, Allo, Autocalls AI, Autodial, Bevado, Big Receptionist Agent, Bland and 21 more in ChatGPT AI Voice Agents & Contact Center, ranked by public Discoverability Score.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.