topo-io/topo
v1.5.1MIT
Run your Topo outbound workspace from chat: triage replies, clear tasks, start outreach, source leads, set up signals, playbooks and AI variables, and brief accounts.
hosts
- mcp.topo.io
plugin.json
- name
- topo
- version
- 1.5.1
- description
- Run your Topo outbound workspace from chat: triage replies, clear tasks, start outreach, source leads, set up signals, playbooks and AI variables, and brief accounts.
- author
- Topohttps://topo.io
- license
- MIT
- homepage
- https://topo.io
- repository
- https://github.com/topo-io/topo-plugin
- extensions
- com.openai
mcp.json
- topostreamable-httphttps://mcp.topo.io/mcp
{
"$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json",
"name": "topo",
"version": "1.5.1",
"description": "Run your Topo outbound workspace from chat: triage replies, clear tasks, start outreach, source leads, set up signals, playbooks and AI variables, and brief accounts.",
"author": {
"name": "Topo",
"url": "https://topo.io"
},
"homepage": "https://topo.io",
"repository": "https://github.com/topo-io/topo-plugin",
"license": "MIT",
"keywords": [
"sales",
"outbound",
"outreach",
"prospecting",
"sequences",
"crm",
"mcp"
],
"extensions": {
"com.openai": {
"interface": {
"displayName": "Topo",
"shortDescription": "Run Topo outreach from chat",
"longDescription": "Topo is an outbound sales workspace: sequences, inbox, tasks, accounts, and lead sourcing in one place. This plugin connects the Topo MCP server and loads the skills sales teams run every day, so you can work your pipeline without leaving the conversation.\n\nAsk what replies came in overnight and answer them in-thread. Record a booked meeting, a won deal, or a not-interested reply so the sequence stops on its own. Review the leads waiting on a sequence and approve or refuse them. Clear the day's tasks, snooze what can wait, and hold or resume sending. Import people from a list or a CSV and start outreach, create a sequence template from a brief, or source new leads with a preview before any credits are spent. Before a call, get an account brief built from its contacts, enrollments, threads, buying signals, and CRM deals.\n\nBeyond the daily run, set up signals that watch for hiring, job changes, or your own product events and feed new leads into a list every day. Build, test, and publish playbooks that automate work when a reply, a signal, or an event comes in, and see why a run failed. Add AI columns that research or score every account or lead, with a credit estimate before each run. Organize accounts and lists, log notes and open deals in your connected CRM, and keep your company profile, audiences, and knowledge base up to date.\n\nSign in with your Topo account the first time a tool runs; the plugin only sees the workspace you belong to. Actions that send, stop, block, or spend credits always ask you to confirm first.",
"developerName": "Topo",
"category": "Business & Operations",
"capabilities": [
"Triage inbound replies and answer them in-thread",
"Record meeting-booked, won, lost, and not-interested outcomes",
"Review, approve, or refuse leads waiting on a sequence",
"Clear the day's tasks and snooze what can wait",
"Import people from a list or CSV and start outreach",
"Create or clone sequence templates and edit their copy",
"Source new leads with a preview before spending credits",
"Suppress or release emails and domains",
"Brief an account from its contacts, enrollments, and threads",
"Diagnose a quiet sequence and pause or resume sending",
"Set up signals that feed new leads into a list every day",
"Build, test, and publish playbooks that automate work on a trigger",
"Run playbooks and diagnose failed runs",
"Add AI columns that research or score accounts and leads",
"Organize accounts, contact lists, and account lists",
"Read the CRM, log notes, and open deals",
"Keep the company profile, audiences, and knowledge base current"
],
"websiteURL": "https://topo.io",
"supportURL": "https://support.topo.io",
"privacyPolicyURL": "https://www.topo.io/consents/privacy-policy",
"termsOfServiceURL": "https://www.topo.io/consents/terms-of-service",
"defaultPrompt": [
"What replies came in overnight, and which ones need an answer?",
"What's on my plate in Topo today?",
"Brief me on this account before my call."
],
"composerIcon": "./assets/icon.png",
"logo": "./assets/logo.png"
},
"review": {
"test_cases": {
"positive": [
{
"description": "Workspace identity, sequence discovery and signals, preview only. Setup: reviewer has OAuth access to a dedicated demo workspace with at least one sequence template and signals enabled, including one active hiring signal that already imported a few leads into its list. Read only; distinguish template IDs from lead enrollment IDs. preview_signal samples matches without creating a watch, importing anyone or spending credits.",
"prompt": "Which Topo workspace am I connected to? Show me the first page of my outreach sequences and the signals feeding new leads, then preview what a signal for companies hiring SDRs would pick up, without creating it.",
"tools_triggered": "whoami, list_sequence_templates, list_signals, list_signal_imports, list_signal_presets, preview_signal",
"expected_behavior": "Call whoami, then list_sequence_templates without a status filter unless asked. Report only the authenticated organization and the returned template names, statuses and sequence_template_id values. Explain pagination when next_cursor is present. Call list_signals and report each returned signal's name, status, destination list and sequence template; read list_signal_imports for what a signal actually brought in instead of quoting imported_count alone. Call list_signal_presets, use the hiring preset it returns, fill its required_filter_keys from the prompt (job title SDR), call preview_signal with them and summarize the returned sample. Do not enumerate another workspace or invoke any write tool: never call create_signal, duplicate_signal, update_signal_config, pause_signal, resume_signal or archive_signal."
},
{
"description": "Personal pending task queue, including the empty-result boundary. Setup: OAuth user-bound reviewer account; seed at least one pending task assigned to that user for the populated variant, and rerun with no pending tasks for the empty variant.",
"prompt": "Show my pending tasks in Topo, grouped by type. Leave every task unchanged.",
"tools_triggered": "whoami, list_tasks",
"expected_behavior": "Resolve the signed-in user with whoami if not already known. Call list_tasks with assignee_email='me' and status='PENDING'. Group only returned tasks by type and include returned task_id and due_date when present. A zero-result response must be described as no matching pending tasks. Never call resolve_task, snooze_task or assign_task."
},
{
"description": "Read and triage inbound replies without sending. Setup: demo workspace has at least two email threads whose last_message_direction is INBOUND, one interested reply and one out-of-office reply, associated with sample contacts.",
"prompt": "Show the latest inbound email replies in Topo and suggest which need an answer. Draft answers, but do not send anything.",
"tools_triggered": "list_threads, get_thread",
"expected_behavior": "Call list_threads with last_message_direction='INBOUND', then get_thread for returned email thread_id values before quoting or drafting. Base each summary and draft on actual inbound messages and identify out-of-office replies separately. Preserve thread and contact associations. Never call reply_to_message, categorize_reply, stop_sequence or unenroll."
},
{
"description": "Join an account's contacts, outreach and conversations. Setup: preseed exactly one account named 'Topo Review Acme' with two sample contacts, one lead enrollment, one email thread and one activity. Populate enough company data to avoid enrichment.",
"prompt": "Brief me on Topo Review Acme before my call, using only the data already in Topo. Include contacts, outreach status and recent conversations.",
"tools_triggered": "get_account, list_contacts, get_contact, list_sequences, list_threads, get_thread, list_activities, get_organization_context, qualify_lead, list_signal_imports, get_ai_variable_values",
"expected_behavior": "Resolve get_account(name='Topo Review Acme') and use the returned account_id for list_contacts. Join returned contact_id values to get_contact, list_sequences, list_threads and list_activities; read get_thread for existing conversations. Distinguish sequence_id from sequence_template_id. Attribute claims and quotes to returned data, state missing information, and provide returned deep links. No enrichment, credit spend or writes. May read get_organization_context, run qualify_lead as a read-only verdict on the primary contact, and read signal imports and AI-variable values for the account. With no CRM connected, state that CRM data is unavailable instead of calling CRM tools."
},
{
"description": "Create a draft email sequence without activating outreach. Setup: demo workspace permits template creation and has no existing template named 'Topo Review Draft'; reset or use a clean workspace between runs. Accept the host's creation confirmation during the test.",
"prompt": "Create a sequence named Topo Review Draft with two emails: subject Intro, body Hello; then body Checking in, three days later in the same thread. Keep it as a draft and do not enroll anyone.",
"tools_triggered": "list_personalization_variables, create_sequence_template, get_sequence_template",
"expected_behavior": "Read list_personalization_variables as required by the creation workflow. Show the proposed steps and obtain any required host confirmation. Call create_sequence_template(name='Topo Review Draft', steps=[{step:1,action:'EMAIL',subject:'Intro',body:'Hello'},{step:2,action:'EMAIL',body:'Checking in',delay:3,new_thread:false}]). Read the returned sequence_template_id with get_sequence_template(include_steps=true); verify two ordered EMAIL steps and status='PENDING_SETUP'. Return its URL. Never attach senders, activate it, approve leads or enroll contacts."
}
],
"negative": [
{
"description": "Calendar scheduling is unsupported by Topo's MCP surface. Explain that Topo can record the outcome, draft a reply or create a follow-up to-do if asked, but cannot create a calendar invitation. Do not call any Topo tool to pretend a calendar event was booked.",
"prompt": "Book a meeting with this lead tomorrow at 3pm and add it directly to my Google Calendar."
},
{
"description": "Mailbox OAuth connection is unsupported through MCP tools. Explain the user must connect the mailbox in the Topo web app before attaching an existing sender identity. Do not request passwords, invent a connection tool or claim sign-in is complete.",
"prompt": "Connect a new Gmail mailbox to Topo and complete its OAuth sign-in for me."
},
{
"description": "DNS administration is not done by Topo. Explain that the user configures SPF and DKIM for their own sending domain at their DNS provider, and that mailboxes bought through Topo come already configured. Offer guidance without claiming a change. Do not invoke Topo tools or invent DNS mutation tools.",
"prompt": "Update my domain's SPF and DKIM DNS records so Topo can send emails from it."
}
]
},
"commerce": false,
"commerce_description": "The plugin requires a Topo account. It does not provide purchases, checkout or payment processing.",
"demo_recording_url": "https://youtu.be/nA_XxfGYNSE"
},
"publication": {
"release_notes": "Addresses the fourth review: every tool's annotations now match what it does. openWorldHint is true on the lead search tools that query the external lead database (create_lead_search, refine_lead_search, get_lead_search, show_lead_search, list_lead_search_results) and on publish_playbook and rollback_playbook, which put a playbook's outbound steps live. destructiveHint is true on create_webhook and send_test_webhook (outbound sends to an external URL), add_contact_exclusions and add_domain_exclusions (workspace-wide block) and complete_product_feedback. Tool descriptions state credit use and data sources, and name only tools this server publishes. Since 1.4.1, add_exclusions is split into add_contact_exclusions and add_domain_exclusions. Skills and review cases are unchanged: 20 workflow skills, five positive cases, three unsupported-action cases, worldwide targeting and a no-commerce declaration.",
"countries": []
}
}
}
}
What else this package ships
These files come with the package and this site does not publish them. They are listed so you know what is there before you install it.
- LICENSE
Client extensions
Data this package carries for particular clients. The directory lists the clients named and never reads what is addressed to them.
- com.openai