Skip to main content
Glama
HumaizTariq

GTM Agent MCP Server

by HumaizTariq

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

list_clients

Which clients have a profile, last profile run

get_profile

A client's ICP, competitors, signals to watch

list_runs

Run history: status, judge score, retries, force-approves, cost

run_costs

Spend grouped by job, company or day

get_prospect_brief

One prospect's research and fit score

rank_prospects

Prospects ranked by fit score, tiers A / B / C

get_signals

Latest buying-signal alerts with source and date

get_list_summary

Prospect list size and funnel

run_prospect_research

Starts a prospect research run (spends money, guarded)

Related MCP server: signal-prospector

The action tool

run_prospect_research(domain, client, confirm):

  1. Checks the domain and that the client has a profile.

  2. Without confirm, only previews: what will run, estimated cost (average of past runs), today's usage.

  3. Refuses past the daily caps (GTM_MCP_MAX_RUNS, default 5; GTM_MCP_MAX_USD, default $2).

  4. 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.

  5. Logs every call, refusals included, to calls.jsonl.

Design choices

  • Read tools are read-only, and marked so. They carry read_only_hint and never write or call a paid API. Only run_prospect_research spends, 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_prospects says 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-mcp

Credits

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 tools
get_list_summaryB
Read-onlyIdempotent

A client's latest prospect list: company count, funnel and companies. Company-level only, never contact details.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYes

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_profileB
Read-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.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYes

TDQS

B3.4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_briefB
Read-onlyIdempotent

One prospect's research brief: summary, recent news, tech hints, 0-10 fit score with reasoning, and sourced cold-email openers.

ParametersJSON Schema
NameRequiredDescriptionDefault
domainYes

TDQS

B3/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_signalsB
Read-onlyIdempotent

Latest buying-signal sweep for a client's prospect list: alerts with source URL and date, and which signals were tracked.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYes

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_clientsA
Read-onlyIdempotent

List every client that has a profile, with the date of its last profile run.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_runsA
Read-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).

ParametersJSON Schema
NameRequiredDescriptionDefault
jobNo
limitNo
sinceNo
companyNo

TDQS

A3.9/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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_prospectsB
Read-onlyIdempotent

All researched prospects ranked by the agent's fit score, with tiers A (8-10), B (5-7), C (0-4).

ParametersJSON Schema
NameRequiredDescriptionDefault
min_scoreNo

TDQS

B3.1/5.0
Behavior3/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters2/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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_costsB
Read-onlyIdempotent

Total and grouped spend from the run history. group_by: job, company or day. since: ISO date.

ParametersJSON Schema
NameRequiredDescriptionDefault
sinceNo
group_byNojob

TDQS

B3.2/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
clientYes
domainYes
confirmNo

TDQS

A4.7/5.0
Behavior5/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines5/5

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.

  1. 9 tool updatesv0.1.0
    • First observedget_list_summary
    • First observedget_profile
    • First observedget_prospect_brief
    • First observedget_signals
    • First observedlist_clients
    • First observedlist_runs
    • First observedrank_prospects
    • First observedrun_costs
    • First observedrun_prospect_research

TDQS

A3.5/5.0

Scored across 9 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

Nine tools is well-scoped for a GTM agent workflow, covering clients, prospects, signals, runs and costs without redundancy. Each tool earns its place.

Completeness3/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables research on prospects, pull call transcripts, and enrich leads using Gong, ZoomInfo, Clay, and LinkedIn Sales Navigator through natural language.
    16
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables B2B prospecting from natural language: detect buying signals, score leads against ICP, enrich decision-makers, and draft personalized outreach messages via Claude.
    2
    MIT
  • F
    license
    A
    quality
    B
    maintenance
    Enables 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
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables 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