GTM Agent MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GTM Agent MCP Serverwhat did this week's prospect research runs cost?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
GTM Agent MCP Server
Ask a GTM engineer agent about its own work in plain English, from Claude Code or Claude Desktop: "show Gong's ICP", "what did this week's runs cost?", "rank the prospects".
The agent (research, list building, signals, copy) writes everything to files. Without this server, answering those questions means opening JSON by hand. This server reads the agent's output/ folder and exposes it as 8 read-only MCP tools, plus one guarded tool that starts a new research run.
Claude ──MCP (stdio)──► gtm-mcp ──reads──► agent output/
├── <client>/profile.json
├── <prospect>/prospect_brief.json
├── <client>/signals/, list/
└── runs.jsonl (every run: status, judge score, cost)Tools
Tool | Answers |
| Which clients have a profile, last profile run |
| A client's ICP, competitors, signals to watch |
| Run history: status, judge score, retries, force-approves, cost |
| Spend grouped by job, company or day |
| One prospect's research and fit score |
| Prospects ranked by fit score, tiers A / B / C |
| Latest buying-signal alerts with source and date |
| Prospect list size and funnel |
| Starts a prospect research run (spends money, guarded) |
Related MCP server: signal-prospector
The action tool
run_prospect_research(domain, client, confirm):
Checks the domain and that the client has a profile.
Without
confirm, only previews: what will run, estimated cost (average of past runs), today's usage.Refuses past the daily caps (
GTM_MCP_MAX_RUNS, default 5;GTM_MCP_MAX_USD, default $2).Runs the agent's CLI with a timeout, then reads back the new run log line and brief. A failed run returns the agent's error and is never retried on its own.
Logs every call, refusals included, to
calls.jsonl.
Design choices
Read tools are read-only, and marked so. They carry
read_only_hintand never write or call a paid API. Onlyrun_prospect_researchspends, and only after a preview and an explicit confirm.No contact data. Names, emails and LinkedIn URLs in the agent's lists are never returned (tested).
Answers cite their file. Every result has a
source, so Claude can say where a number came from.Missing data is a message, not a crash. "Signals sweep for 'gong.io' not found" instead of a stack trace.
Honest about gaps. The agent does not record which client a prospect brief was scored for, so
rank_prospectssays it ranks every saved brief.
Run
uv sync
uv run python -m unittest discover -s tests # 18 tests on fake data; the agent run is faked
claude mcp add gtm-agent -e GTM_AGENT_OUTPUT_DIR=<agent>/output -- uv run --directory <this folder> gtm-mcpCredits
The GTM engineer agent this server reads from is DFY Automation's open-source GTM Engineer (community edition), MIT licensed: https://github.com/dfyautomation/gtm-engineer-community. This server does not include or modify its code.
Available Tools
9 toolsget_list_summaryBRead-onlyIdempotent
A client's latest prospect list: company count, funnel and companies. Company-level only, never contact details.
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description usefully adds data-scope behavior ('company-level only, never contact details') and that it returns the latest list, but says nothing about freshness, permissions, or whether a missing list errors versus returns empty.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the resource and contents, followed by the scope constraint. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does carry the burden of describing returns and lists the top-level fields (company count, funnel, companies). However 'funnel' is left undefined, no pagination/limits are mentioned, and the required client parameter is unexplained, so it is only minimally sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required 'client' parameter, so the description must compensate and does not: it only implies a client selector exists. No identifier format, whether it is an ID or name, or what happens for an unknown client is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource (a client's latest prospect list) and enumerates its contents: company count, funnel and companies. The closing clause 'company-level only, never contact details' separates it from contact-level siblings like get_prospect_brief, though no sibling is named outright.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to pick this over get_prospect_brief, rank_prospects, or get_signals for the same client. The scope note ('company-level only') is the only weak discriminator, leaving the agent to infer usage from the return contents.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_profileBRead-onlyIdempotent
A client's ICP (industries, size, geographies, buyer titles, qualifiers, disqualifiers), competitors and the buying signals to watch. client: domain or slug, e.g. gong.io.
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description's contribution is the content shape of the response (no output schema exists, so this matters), but it says nothing about lookup failures, unknown clients, or caching/rate behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the payload and followed by the parameter hint. Nothing is wasted, though the parenthetical facet list is dense enough to be slightly scannable-hostile.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey what comes back, and it does so by enumerating ICP fields, competitors and signals. For a single-parameter read tool with full annotation coverage, that is close to sufficient; only the ambiguity versus get_signals remains unresolved.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden for the single 'client' parameter, and it does so usefully by stating accepted formats (domain or slug) plus a concrete example ('gong.io'). That is exactly the compensating detail a 0%-coverage schema needs.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource precisely and enumerates its contents (ICP facets, competitors, buying signals), so an agent knows exactly what it retrieves. It does not, however, distinguish itself from the sibling get_signals, which appears to cover overlapping 'buying signals' territory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use statement, no prerequisite, and no named alternative. The agent must infer usage purely from the returned-content list, which is thin given siblings like get_signals and get_list_summary that could plausibly be confused with it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_prospect_briefBRead-onlyIdempotent
One prospect's research brief: summary, recent news, tech hints, 0-10 fit score with reasoning, and sourced cold-email openers.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds nothing about whether the brief is generated on demand or must pre-exist from run_prospect_research, nor about latency, cost, or rate limits — a meaningful gap given the sibling research tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence that front-loads the returned content with no wasted words. It reads as a noun phrase rather than a verb phrase, which slightly weakens orientation but keeps it tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, describing the returned fields is genuinely useful and the description does that. However, for a one-required-parameter tool it omits the identification convention for 'domain' and the dependency on prior research, leaving two real gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% — the single 'domain' parameter has only a title. The description says 'One prospect's' but never identifies the identifier as a domain, nor any format or resolution rule, so it fails to compensate for the schema's silence.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource and its contents (summary, recent news, tech hints, fit score, sourced cold-email openers), which is far more informative than the name alone. It implies a single-prospect scope ('One prospect's'), which loosely distinguishes it from rank_prospects and get_signals, but it never explicitly contrasts itself with those siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance, and no mention of prerequisites such as first running run_prospect_research. The agent must infer from the name alone that this fetches one prospect's brief rather than a list or a research run.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_signalsBRead-onlyIdempotent
Latest buying-signal sweep for a client's prospect list: alerts with source URL and date, and which signals were tracked.
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that the result is the *latest* sweep with source URLs and dates, implying a point-in-time snapshot with no historical depth, but says nothing about refresh cadence, auth requirements, or behavior for an unknown client.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single dense sentence with no filler, and the payload contents are listed up front. The verbless noun-phrase opening ('Latest buying-signal sweep...') is slightly less scannable than a verb-first statement, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does reasonably well by naming the returned fields. However, for a data-fetch tool it omits result volume/pagination, empty-result behavior, and any indication of freshness or caching, leaving gaps an agent would want before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single required 'client' parameter, so the schema adds no meaning. The description compensates only partially by implying the client scopes the sweep to that client's prospect list; it does not state accepted identifier format (ID vs name) or error behavior.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource — the latest buying-signal sweep for one client's prospect list — and even specifies the payload shape (alerts with source URL and date, plus which signals were tracked). It lacks an explicit verb and does not distinguish itself from siblings like get_prospect_brief or rank_prospects, so it is clear but not differentiating.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no when-to-use or when-not-to-use guidance and no mention of alternatives among siblings such as get_prospect_brief or rank_prospects. The phrase 'for a client's prospect list' hints at context but leaves the agent to infer whether this is the right tool for a given question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_clientsARead-onlyIdempotent
List every client that has a profile, with the date of its last profile run.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is covered. The description adds that only clients with profiles are returned and that the last profile run date is included, which is useful context beyond annotations, but it says nothing about ordering, pagination, or volume.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single well-formed sentence that front-loads the verb and resource and packs the scope and returned field without waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter list tool with full annotation coverage, the description conveys what is listed and what each entry contains. With no output schema, it would benefit from a note on return size or sort order, but it is close to complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the calibration the baseline is 4. There are no parameter semantics to clarify and the description introduces none that conflict.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (List) and resource (clients) plus a scope condition — only clients that have a profile — and indicates the returned field (date of last profile run). It does not explicitly differentiate itself from siblings, though the resource noun 'clients' already separates it from list_runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus alternatives such as get_profile or list_runs, and no prerequisites or exclusions. The scope condition (clients with a profile) hints at usage but is a data filter, not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_runsARead-onlyIdempotent
Past agent runs, newest first: status, judge score, retries, force-approved, cost. Filters: company (domain), job (research, list_building, signals, copywriting), since (ISO date, e.g. 2026-10-01).
| Name | Required | Description | Default |
|---|---|---|---|
| job | No | ||
| limit | No | ||
| since | No | ||
| company | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond them: result ordering (newest first) and the content of each record (status, judge score, retries, force-approved, cost). It omits truncation/pagination behavior tied to limit, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences, front-loaded with what the tool returns and followed by filters. Every clause carries information; there is no boilerplate or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description usefully names the returned fields and all filtering axes, which is most of what an agent needs. Missing pieces are the limit/pagination behavior (default 50, potential truncation) and any tie-breaking to sibling cost or summary tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the schema declares no enums, so the description must carry the burden. It documents company (domain), job with its four concrete values (research, list_building, signals, copywriting), and since with an ISO date example — strong compensation. The limit parameter and its default of 50 are never mentioned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource ('Past agent runs') with ordering ('newest first') and enumerates the returned fields, so an agent knows exactly what this retrieves. It does not explicitly distinguish itself from the sibling run_costs, which also surfaces run cost data, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filter list implies when the tool is useful (history of agent runs filtered by company/job/date), but there is no explicit when-to-use or when-not-to-use guidance and no named alternative such as run_costs or get_list_summary. Usage must be inferred from the filter semantics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_prospectsBRead-onlyIdempotent
All researched prospects ranked by the agent's fit score, with tiers A (8-10), B (5-7), C (0-4).
| Name | Required | Description | Default |
|---|---|---|---|
| min_score | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds the tier thresholds (A/B/C score ranges), which is useful context, but it omits return format, pagination, and ordering behavior beyond ranking.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single efficient sentence that front-loads the core output and then supplies the tier mapping. Every clause earns its place with no repetition or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only ranking tool with one optional parameter and no output schema, the description covers the scoring tiers but leaves the min_score filter and usage context unaddressed. Annotations cover the safety profile, so the remaining gap is moderate rather than severe.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the single parameter min_score, so the description must compensate. It explains the fit-score scale and tier ranges, which gives indirect context for min_score, but it never states that min_score filters the ranked results or how it interacts with the tiers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource (researched prospects) and the operation (ranked by fit score), making the tool's purpose clear. It does not explicitly differentiate this tool from siblings such as get_prospect_brief or list_runs, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives no when-to-use guidance, no prerequisites, and no alternatives to consider. It states what the tool returns but not when an agent should choose rank_prospects over related sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_costsBRead-onlyIdempotent
Total and grouped spend from the run history. group_by: job, company or day. since: ISO date.
| Name | Required | Description | Default |
|---|---|---|---|
| since | No | ||
| group_by | No | job |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare that this is a read-only, idempotent, non-destructive, closed-world operation. The description adds useful scope by saying costs come from run history and by naming grouping dimensions, but it does not explain behavior such as what an empty since value means or what the response contains.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short, front-loaded, and free of filler. The parameter notes are terse but useful, though the fragmentary style and missing default-value note slightly limit clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with no output schema, the description is reasonably complete about what is returned and how to group. It still leaves edge cases such as default grouping and empty date handling unexplained, which matters for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description adds needed meaning by listing allowed group_by values (job, company, day) and specifying that since is an ISO date. However, it does not state the default group_by behavior or explain how an empty since value is interpreted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific output, total and grouped spend, and ties it to the run history resource. It is clear what the tool computes, but it does not explicitly differentiate itself from siblings such as list_runs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the grouping options and date format but gives no explicit guidance on when to use this tool versus alternatives. An agent must infer usage from the purpose statement alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_prospect_researchA
Start a new prospect research run (spends OpenAI and web search credits). Without confirm it only returns a preview: what will run, estimated cost, today's usage. Pass confirm=true only after the user agrees. Daily run and dollar caps apply. client: the client domain or slug whose ICP the prospect is scored against, e.g. gong.io.
| Name | Required | Description | Default |
|---|---|---|---|
| client | Yes | ||
| domain | Yes | ||
| confirm | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only say it is a non-read-only, open-world, non-idempotent operation. The description adds the economically important behavior annotations cannot express: it spends OpenAI and web search credits, it is rate/limit gated by daily run and dollar caps, and the unconfirmed call is a dry-run preview that reports estimated cost and today's usage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with the cost warning and the confirm/preview distinction before the parameter notes. No filler, and the ordering matches the order an agent needs the information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a credit-spending mutation tool with no output schema and no destructive/rollback annotations, the description covers the critical unknowns (cost, caps, preview mode, consent gate). It stops short of saying what a successful confirmed run returns or whether execution is synchronous, which an agent may still want to know. No contradiction with the annotations (readOnlyHint=false matches a run that spends credits).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% (bare titles only), so the description carries the full burden and does so: it defines confirm's semantics as a gating switch with a real-world consent precondition, and defines client as the domain/slug whose ICP the prospect is scored against, with an example (gong.io). Only domain is left to inference, which is minor.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb+resource ('Start a new prospect research run') and immediately clarifies its two modes (preview vs. confirmed run), so the agent knows exactly what the tool does. It does not explicitly name or contrast any of the sibling tools (e.g. list_runs, rank_prospects), so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit when-to-use and when-not-to-use guidance: 'Without confirm it only returns a preview' and 'Pass confirm=true only after the user agrees.' The agent is given a clear sequencing rule (preview first, confirm after user consent) rather than having to infer it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v0.1.0- First observed
get_list_summary - First observed
get_profile - First observed
get_prospect_brief - First observed
get_signals - First observed
list_clients - First observed
list_runs - First observed
rank_prospects - First observed
run_costs - First observed
run_prospect_research
TDQS
Scored across 9 tools
Most tools target clearly distinct resources (clients, profiles, runs, costs, signals, prospects). Minor overlap exists between get_list_summary and rank_prospects (both surface the prospect list) and between get_profile (client ICP) and get_prospect_brief (single prospect), but descriptions differentiate them adequately.
Names follow a mostly predictable verb_noun pattern (list_clients, get_profile, list_runs, get_signals, get_list_summary, rank_prospects, run_prospect_research). 'run_costs' is the one deviation, where 'run' acts as a noun and reads oddly next to the verbs.
Nine tools is well-scoped for a GTM agent workflow, covering clients, prospects, signals, runs and costs without redundancy. Each tool earns its place.
Read coverage is broad, but the surface is nearly read-only: only run_prospect_research is an action tool. There is no way to create/update a client, edit an ICP profile, or manage prospect lists, leaving notable lifecycle gaps.
Maintenance
Related MCP Connectors
Your go-to-market plan, plays and opportunities from gtm.help, inside any AI agent.
Research-backed lint + generation for agent context files (CLAUDE.md, AGENTS.md) + prompt enhancer.
Give Claude only the Google Drive files you choose. Every action logged.
- LayrcakeOAuthdev.layrcake
Go-to-market infrastructure for AI agents: find leads, verify emails, read signals, run campaigns.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables research on prospects, pull call transcripts, and enrich leads using Gong, ZoomInfo, Clay, and LinkedIn Sales Navigator through natural language.161MIT
- AlicenseNot gradedqualityDmaintenanceEnables B2B prospecting from natural language: detect buying signals, score leads against ICP, enrich decision-makers, and draft personalized outreach messages via Claude.2MIT
- FlicenseAqualityBmaintenanceEnables Claude to inspect, configure, run, and modify individual RAG/agent pipeline stages (retrieve, rerank, generate, eval) as structured typed tool calls, and execute the full pipeline end to end.5-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to connect to a hosted multichannel B2B outbound engine for LinkedIn messaging, cold email sequencing, and pipeline management, including campaign reads and prospect research. Write actions that send, launch, enroll, or spend credits require chat confirmation before completing.MIT