Skip to main content
Glama

Server Details

Find local businesses, companies and decision makers with verified emails for B2B outreach.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
98.2% over 43 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
Deeplead

TDQS

B3.4/5.0

Scored across 28 tools

Disambiguation4/5

Most tools target a distinct resource+action, and descriptions clarify subtle boundaries such as persons_lookup (full record) vs persons_find_email/persons_find_phone (single field, cheaper). The closest overlaps are businesses_search vs organizations_search and persons_search vs persons_lookup, which could still be misselected at a glance since they draw on different data sources with different pricing.

Naming Consistency5/5

Every tool follows a consistent snake_case resource_action pattern (businesses_search, campaigns_create, contacts_list, deliverability_get_test, persons_find_email), with resource prefixes grouping the surface into clear families. No mixed conventions or vague standalone verbs.

Tool Count3/5

28 tools is on the heavy side, though the server spans eight distinct resources (businesses, organizations, persons, websites, campaigns, campaign ideas, contacts, deliverability) plus credits, so each family only carries two to six operations. It is a broad prospecting platform rather than a bloated single-purpose tool, but the surface is large enough to be borderline.

Completeness3/5

Campaigns and campaign ideas have strong lifecycle coverage (create/get/list/update/status/launch/delete/audience/radius), but contacts only offer create and list with no get, update, or delete, and there is no credit transaction history or purchase path. Organizations also lack a direct get-by-id after enrichment, leaving a few notable dead ends.

Available Tools

28 tools
campaign_ideas_deleteDelete a campaign idea that has no campaignA
Destructive
Inspect

Delete a campaign idea that has no campaign. An idea that launched a campaign, or is launching, stays; archive its campaign instead.

NameRequiredDescriptionDefault
ideaIdYesideaId from campaign_ideas_list

Output Schema

NameRequiredDescription
deletedYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare destructiveHint=true and readOnlyHint=false, and the description adds genuinely new behavioral context: the deletion is guarded and will not proceed for ideas tied to a live or launched campaign. It does not state irreversibility or what error/return occurs when the guard trips, though the output schema covers returns.

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 short sentences with the core action and precondition front-loaded, and the exception second. Tight and waste-free, though the second clause is slightly compressed.

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 annotations carrying the destructive profile, an output schema, and a fully documented single parameter, the description covers nearly everything needed. The remaining gap is not naming the tool to use on the archive path.

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?

Only one parameter, with 100% schema coverage and an inline description pointing at campaign_ideas_list as the source. The description adds nothing about ideaId, so the baseline 3 applies.

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 and resource (delete a campaign idea) plus a hard precondition (must have no campaign), which is more than the name conveys. It does not name the sibling tool that performs the suggested archive alternative, so sibling routing is only implicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly gives the use condition (idea with no campaign) and a when-not condition (idea that launched or is launching a campaign), pointing to an alternative action. The alternative is described as an action ('archive its campaign') rather than a tool name such as campaigns_set_status, leaving one inference step.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaign_ideas_getOne campaign idea with its draft: audience size and example emailsC
Read-only
Inspect

One campaign idea with its draft: audience size and example emails

NameRequiredDescriptionDefault
ideaIdYesideaId from campaign_ideas_list

Output Schema

NameRequiredDescription
painYes
playYesWhich email its campaign writes, e.g. ideas, quote or jargon
roleYes
typeYessmb: local businesses from Google Maps; company: companies by industry and size; signal: people on LinkedIn by what they post or engage with
draftYesOnce drafted
pitchYes
stateYes
ideaIdYes
segmentYes
campaignYesThe campaign it launched; kind signal is a LinkedIn signal campaign, not reachable through campaigns_create
criteriaYes
examplesYes
categoriesYesGoogle Maps categories of an smb idea; empty otherwise
radiusMilesYesMiles around the home city of an smb idea; null for the default
excludedCategoriesYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered and the description needs to add little. It does add that the response includes the draft, audience size and example emails, but that overlaps with the output schema. Nothing is said about behavior if the ideaId is unknown or about freshness of audience size.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is one short sentence with no filler and the scoping word 'One' is front-loaded. But it is a fragment that duplicates the title exactly, so brevity comes at the cost of information rather than from efficiency.

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 one required parameter at 100% schema coverage, an output schema present, and rich annotations, the description only needs to say what the tool returns and for which record. It does both, so it is sufficient for correct invocation even though routing guidance is thin.

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 100% and the single parameter's description already tells the agent to obtain ideaId from campaign_ideas_list. The tool description adds no further syntax or semantics, so the baseline 3 applies — the schema does all the work here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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 guidance on when to call this versus campaign_ideas_list, campaign_ideas_suggest, or campaigns_get. The only hint is the singular 'One', which an agent must infer on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaign_ideas_launchDraft each idea, create its campaign and turn it onAInspect

Draft each idea, create its campaign and turn it on. Answers at once. Each idea shows launching in campaign_ideas_list, then launched with its campaign once created.

NameRequiredDescriptionDefault
ideaIdsYes

Output Schema

NameRequiredDescription
resultsYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only tell us it is a non-destructive, non-open-world write. The description adds genuinely non-obvious behavior: it returns immediately ('Answers at once') while the work proceeds in the background, and progress is observable by re-reading campaign_ideas_list ('launching' then 'launched'). That asynchronous status model is the key thing an agent needs and isn't in the annotations.

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?

Three short sentences with the action front-loaded and the async/status behavior following. No filler, though the phrasing 'Each idea shows launching... then launched' is slightly awkward and could be tightened without losing meaning.

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?

An output schema exists, so return values needn't be described, and the status lifecycle is covered. Still missing for a mutating batch operation: partial-failure semantics, idempotency/duplicate handling, and any permission prerequisites. These are meaningful gaps for a tool that creates and activates campaigns.

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% at the top level, so the description must compensate. It does convey that the parameter is a batch ('each idea') and that ids originate from campaign_ideas_list, but it never mentions the 20-item cap or what happens with invalid/duplicate ids. Partial compensation only.

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 concrete compound action: draft each idea, create its campaign, and activate it. That distinguishes it from campaigns_create or campaign_ideas_get, though it doesn't explicitly contrast with those siblings. The verb+resource is specific enough that an agent knows what calling it accomplishes.

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?

Usage is implied rather than stated: the tool consumes ideaIds from campaign_ideas_list, so the agent can infer it's a follow-up to browsing ideas. There is no explicit 'use this when' or any exclusion (e.g., when to use campaigns_create directly instead). Adequate but leaves routing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaign_ideas_listList your campaign ideas and how far each gotA
Read-only
Inspect

List your campaign ideas and how far each got. Poll about once a minute while suggesting is true or an idea is drafting or launching.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
ideasYes
suggestingYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered; the description adds genuine extra context by disclosing that this is a polling endpoint and naming the state conditions under which polling is warranted. The only gap is that the referenced state names ("suggesting", "drafting", "launching") are not defined or mapped to returned fields.

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 short sentences, front-loaded with the purpose before the polling advice, with no filler. The phrasing "how far each got" is informal and forces the agent to infer that it means idea status/progress, a small clarity cost.

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?

An output schema exists, so return values need not be explained, and with no parameters the surface area is small. The definition covers purpose and polling behavior adequately; the one omission is any hint about result volume or ordering when many ideas are returned.

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 there is no parameter semantics for the description to compensate for; the baseline for a no-parameter tool applies. The description adds nothing misleading about inputs.

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?

"List your campaign ideas and how far each got" names a specific verb (List) and resource (campaign ideas) plus the returned status dimension, which cleanly separates it from campaign_ideas_get (single item) among the siblings. It stops short of explicitly naming that sibling, so the differentiation is implied by the plural/list phrasing rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives concrete operational guidance: poll roughly once a minute, and only while "suggesting is true or an idea is drafting or launching." That tells the agent when to call and when to keep calling, but there is no guidance on when to prefer campaign_ideas_get for a single idea or what to do when no ideas exist.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaign_ideas_set_audienceSet the Google Maps categories a Maps idea reachesAInspect

Set the Google Maps categories a Maps idea reaches. On a launched idea, recipients not contacted yet who no longer fit are taken out; removedRecipients counts them.

NameRequiredDescriptionDefault
ideaIdYesideaId from campaign_ideas_list
excludeYes
categoriesYes

Output Schema

NameRequiredDescription
removedRecipientsYes

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the annotations, the description discloses a real side effect: on a launched idea, recipients not yet contacted who no longer fit are removed, and removedRecipients counts them. That is valuable context the structured fields do not provide, though there is mild tension with destructiveHint=false since data (recipients) is dropped.

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 with the core action front-loaded and the side-effect detail appended. Nothing is wasted and no restating of the title or name.

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?

An output schema exists so return values need not be explained, and the removedRecipients mention is a helpful extra. However, the undocumented 'exclude' semantics and the undefined category value format leave an agent guessing on two of three required parameters.

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 coverage is only 33%, and only ideaId is documented ('ideaId from campaign_ideas_list'). The 'exclude' parameter is left entirely unexplained in both schema and description, leaving ambiguous whether it is categories to exclude or recipients to skip, and no format is given for category strings.

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 uses a specific verb ('Set') and resource ('Google Maps categories a Maps idea reaches'), which clearly distinguishes this from sibling campaign_ideas_set_radius and campaign_ideas_suggest. It states exactly what the operation changes, though it never explicitly names the nearest alternative it replaces.

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 description hints that behavior differs for launched ideas (recipient removal), which implies a lifecycle context, but it never states when to call this versus set_radius or suggest, nor any preconditions such as whether the idea must exist or be in a given state. Usage must be inferred.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaign_ideas_set_radiusSet how many miles around your home city a Maps idea reachesAInspect

Set how many miles around your home city a Maps idea reaches. On a launched idea, recipients not contacted yet outside the new radius are taken out; removedRecipients counts them.

NameRequiredDescriptionDefault
ideaIdYesideaId from campaign_ideas_list
radiusMilesYes

Output Schema

NameRequiredDescription
removedRecipientsYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds real value beyond the annotations: it discloses that on an already launched idea, uncontacted recipients outside the new radius are removed, and that the response field removedRecipients counts them. That side effect is not derivable from destructiveHint=false and is exactly the kind of consequence an agent needs before writing. It stops short of saying what happens on a draft idea or whether the removal is reversible.

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 sentences, zero filler, and the core purpose is front-loaded ahead of the conditional side-effect detail. Nothing could be cut without losing 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?

An output schema exists, so return values need no explanation, and the description still calls out the one non-obvious response field. For a 2-required-parameter setter this is nearly complete; the gaps are the valid radius range and the draft-vs-launched behavioral split.

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 50%: ideaId is documented in-schema (including the useful 'from campaign_ideas_list' cross-reference) while radiusMiles has no inline description. The description supplies the meaning of the radius (distance from home city) but omits the 5–100 mile bounds the schema enforces, so it neither fully compensates nor is redundant.

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 ('set') and a specific resource/attribute ('how many miles around your home city a Maps idea reaches'), which clearly distinguishes it from generic campaign tools. It implies scope ('Maps idea') but never names set_audience as the neighboring configurator, so sibling differentiation is only partial.

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?

Usage is implied rather than stated: the reader infers this applies to Maps-type ideas and that behavior differs pre- vs post-launch. There is no explicit when-to-use, when-not-to-use, or 'use campaign_ideas_set_audience instead for X' guidance against the several adjacent campaign_ideas_* siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaign_ideas_suggestSuggest campaign ideas from your company profileAInspect

Suggest campaign ideas from your company profile. Free. Answers at once; the ideas show in campaign_ideas_list once suggesting is false, replacing every idea not launched yet. With segment it adds ideas for that audience instead.

NameRequiredDescriptionDefault
segmentNoAn audience of your own, e.g. "Dental clinics in Ohio opening a second location"

Output Schema

NameRequiredDescription
suggestingYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses two things the annotations do not: the call is synchronous ('Answers at once') and it overwrites every idea not yet launched, which is a genuine side effect. It also states the operation is free, which matters given the sibling credits_get. The overwrite behavior is arguably stronger than destructiveHint=false implies, so the agent would otherwise be under-warned — the description closes that gap.

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?

Three short sentences, purpose first, then cost/latency, then the side effect, then the parameter variant. No filler; every clause carries an operational fact the agent needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present the description needn't document return values, and it covers what matters for this 1-param, zero-required tool: cost, timing, where results appear, and the overwrite behavior. Nothing an agent needs in order to call it safely is missing.

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 100% and the schema already gives an example, so the baseline is 3. The description exceeds it by explaining the semantic difference between omitting segment (profile-based ideas, which replaces existing ideas) and supplying it ('adds ideas for that audience instead') — a distinction the schema cannot express.

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 and resource ('Suggest campaign ideas') plus the source of truth for the suggestions ('from your company profile'), and names the sibling where results land (campaign_ideas_list). It does not explicitly distinguish itself from campaign_ideas_get/list/launch in a 'this vs that' way, but the generation-vs-retrieval boundary is inferable.

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?

'With segment it adds ideas for that audience instead' gives a clear conditional for the optional parameter, and naming campaign_ideas_list tells the agent where to read results. However, there is no explicit when-to-use statement (e.g. 'call this before launching anything') and no mention of prerequisites or the launch workflow that the 'not launched yet' clause hints at.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaigns_add_recipientsAdd your contacts to a campaignAInspect

Add your contacts to a campaign. Free. Contacts already in the campaign, without a usable email or not among your contacts are skipped.

NameRequiredDescriptionDefault
campaignIdYescampaignId from campaigns_create
contactIdsYescontactId values from contacts_list

Output Schema

NameRequiredDescription
addedYes
skippedYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare a non-destructive write operation, and the description adds useful behavior beyond that: the operation is free, and specific classes of contacts are silently skipped (already present, no usable email, not among your contacts). It does not cover idempotency or partial-success reporting, but the skip semantics are valuable.

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 purpose, then cost and skip behavior. No filler or redundancy; every clause adds actionable 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?

Given an output schema and fully described input schema, the description supplies the key behavioral nuance (skipped contacts). It could mention the per-call contact limit or whether failures are partial, but that is largely covered by the structured fields.

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 100%, so the schema already documents both campaignId and contactIds, including their source tools and ID formats. The description adds no parameter-level meaning beyond what the schema provides, which is the expected baseline.

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 and resource: adding contacts to a campaign. It is clearly distinguishable from campaign creation/update siblings by the resource being added, though it does not name any alternative tool explicitly.

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?

Implies this is for populating an existing campaign with contacts, and the 'Free' note plus skip rules give some context. However, it does not explicitly say when to use this versus campaigns_create or other sibling tools, nor does it state prerequisites in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaigns_createCreate an email campaign; it starts pausedAInspect

Create an email campaign; it starts paused. Free. Add recipients with campaigns_add_recipients, then turn it on with campaigns_set_status.

NameRequiredDescriptionDefault
nameYes
stepsYesThe first email and its follow-ups, in order
poolIdNoSender pool to send from; by default the pool with the most inboxes, else Shared Inboxes
dailySendingLimitNoEmails a day at most; null for none

Output Schema

NameRequiredDescription
nameYes
stepsYes
countsYes
poolIdYes
statusYes
campaignIdYes
campaignIdeaIdYesideaId from campaign_ideas_list this campaign was launched from
dailySendingLimitYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a non-read-only, non-destructive, closed-world operation. The description adds important behavioral context beyond annotations: the campaign starts paused, creating it is free, and it will not send until recipients are added and status is changed.

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?

Three short sentences, front-loaded with the core action and state. The follow-up workflow is useful and no sentence is wasted.

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?

An output schema exists, so return values need not be explained. The description covers the essential state change and next-step workflow; remaining complexity in steps, variations, and limits is handled by the schema.

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 75%, so the schema carries most parameter meaning. The description adds no parameter-level guidance for name, steps, poolId, or dailySendingLimit, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: create an email campaign. It also discloses the initial paused state, which distinguishes this from activation or update siblings. An agent can identify the tool immediately.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives clear post-creation routing: add recipients with campaigns_add_recipients, then activate with campaigns_set_status. It does not explicitly exclude alternatives such as campaigns_update or campaign_ideas_launch, but the create-vs-activate workflow is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaigns_getOne campaign with its steps, sender pool and countsC
Read-only
Inspect

One campaign with its steps, sender pool and counts

NameRequiredDescriptionDefault
campaignIdYescampaignId from campaigns_create

Output Schema

NameRequiredDescription
nameYes
stepsYes
countsYes
poolIdYes
statusYes
campaignIdYes
campaignIdeaIdYesideaId from campaign_ideas_list this campaign was launched from
dailySendingLimitYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The readOnlyHint/destructiveHint=false annotations already declare this is a safe, closed-world read, so the description adds no behavioral context. Its enumeration of returned fields is largely redundant because an output schema exists, and it says nothing about not-found behavior or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is short and wastes no words, but it is a bare fragment rather than a front-loaded description with a guiding clause. Brevity here comes at the cost of specification rather than from efficiency.

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?

Annotations cover safety, the single parameter is fully documented, and an output schema handles return values, so little is strictly missing. The remaining gap is that nothing tells the agent to prefer this over campaigns_list for a single record lookup.

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?

With one parameter at 100% schema description coverage, the schema already documents campaignId and its 24-hex pattern. The description adds no further meaning (no format example, no validity rules), so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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 versus campaigns_list, campaigns_update, or campaigns_set_status, and no preconditions are mentioned. The only routing hint, campaignId coming from campaigns_create, lives in the schema rather than the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaigns_listList your email campaigns, newest first, with their status and countsC
Read-only
Inspect

List your email campaigns, newest first, with their status and counts

NameRequiredDescriptionDefault
includeArchivedNoAlso list archived campaignsfalse

Output Schema

NameRequiredDescription
campaignsYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description needn't re-state that. What it does add is the sort order ('newest first') and that status and counts accompany each row, which is genuine behavioral context not implied by the annotations. It stops short of saying anything about pagination, result limits, or whether archived campaigns are excluded by default.

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 clause-dense sentence with no filler, front-loading the verb and resource and packing scope, ordering, and payload into the remainder. Nothing needs trimming.

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 one-parameter read-only list tool with a fully documented schema and an output schema that defines the returned shape, the description covers what matters: what is listed, in what order, and roughly what comes back. The only omission is an explicit note that archived campaigns are hidden unless requested.

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 100% and the single includeArchived parameter carries its own description with a default and enum, so the schema does the heavy lifting. The description adds no extra meaning beyond it — the word 'your' hints at account scoping but says nothing about archived inclusion.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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 guidance, no mention of when to prefer campaigns_get, and no explanation of when archived campaigns matter. The one real selection decision an agent faces here — whether to set includeArchived — is left entirely to the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaigns_set_statusTurn a campaign on, pause it, or archive itAInspect

Turn a campaign on, pause it, or archive it. active needs a sender pool with an active inbox. Setting paused on an archived campaign unarchives it.

NameRequiredDescriptionDefault
statusYes
campaignIdYescampaignId from campaigns_create

Output Schema

NameRequiredDescription
nameYes
stepsYes
countsYes
poolIdYes
statusYes
campaignIdYes
campaignIdeaIdYesideaId from campaign_ideas_list this campaign was launched from
dailySendingLimitYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare non-read-only, non-destructive, non-open-world, which does not reveal that pausing an archived campaign silently unarchives it — a genuine side effect the description surfaces. The prerequisite for "active" is also an operational constraint not present in structured data. It does not say whether setting status to the value it already holds is a no-op or what errors occur when the precondition fails.

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, zero filler, with the primary action first and the constraint/side-effect disclosures stacked behind it. Every clause carries operational information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Only two required parameters, one of them a plain 24-char ID, and an output schema exists, so return-value explanation is unnecessary. The description covers the transition semantics and the one surprising side effect, which is enough for an agent to call this correctly.

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 50% (campaignId is documented, the status enum values are bare), and the description compensates by explaining what the "active" and "paused" values actually require and do. It adds real meaning beyond the enum list rather than restating it.

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 verb (turn on/pause/archive) and resource (campaign) and enumerates the three target states, so an agent knows exactly what the tool mutates. It stops short of naming the adjacent sibling campaigns_update to say which tool handles other field changes, so sibling differentiation is only implicit from the name.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"active needs a sender pool with an active inbox" states a concrete precondition an agent must check before invoking, and the archived-campaign behavior tells the agent what state transition is legal. There is no explicit exclusion like "use campaigns_update to rename a campaign", so alternatives are not covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

campaigns_updateChange a campaign’s name, steps, sender pool or daily limitAInspect

Change a campaign’s name, steps, sender pool or daily limit. Only the fields sent change. steps replaces every step: send a step with its id to keep its personalization and past versions.

NameRequiredDescriptionDefault
nameNo
stepsNo
poolIdNoSender pool to send from; by default the pool with the most inboxes, else Shared Inboxes
campaignIdYescampaignId from campaigns_create
dailySendingLimitNoEmails a day at most; null for none

Output Schema

NameRequiredDescription
nameYes
stepsYes
countsYes
poolIdYes
statusYes
campaignIdYes
campaignIdeaIdYesideaId from campaign_ideas_list this campaign was launched from
dailySendingLimitYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish this as a non-read-only update. The description adds important behavior beyond the annotations: only sent fields change, and steps are replaced wholesale, so preserving an existing step requires sending its id. That is meaningful mutation behavior, though it does not cover permissions or failure behavior.

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?

Three short sentences, front-loaded with the changed fields and followed by the two most important invocation caveats. There is no visible filler.

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?

The tool has a full output schema and annotations, so the description does not need to explain return values or safety. It covers the main mutation gotchas: partial field updates and step replacement. It is slightly thin on when to choose this update tool over sibling campaign operations.

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?

With 60% schema coverage, the description compensates for the missing top-level steps guidance by explaining that steps replaces every step and that an existing step must include its id to keep personalization and past versions. Other parameters are mostly covered by the schema, and the description does not add much beyond them.

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 verb and resource: changing a campaign’s name, steps, sender pool, or daily limit. It is clear what the tool modifies, but it does not explicitly contrast itself with sibling tools such as campaigns_set_status or campaigns_add_recipients.

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 says what can be changed but gives no explicit guidance on when to use this tool versus alternatives. It also omits prerequisites or exclusions, leaving the agent to infer usage from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contacts_createSave your own contacts or organizationsAInspect

Save your own contacts or organizations. Free. Existing contacts are matched and kept, never duplicated.

NameRequiredDescriptionDefault
contactsYesContacts to save; each needs an email, LinkedIn URL, website or organization ID

Output Schema

NameRequiredDescription
savedYes

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this is a non-read-only, non-destructive, closed-world write. The description adds behavior annotations do not carry: it is free (useful given the credits_get sibling) and it is idempotent-by-matching ('matched and kept, never duplicated'). It does not describe partial-failure or per-item error behavior for batch submissions.

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, action and scope first, then the two behavioral facts that actually matter (cost, dedup). No filler whatsoever.

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?

Output schema and annotations carry the return-shape and safety burden, and the description covers the two facts structured fields cannot express. Only the batch semantics (up to 1000 items, partial failures) are left unaddressed.

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 100% and the array item field set, min/max items, and the organizationId provenance note are all documented in the schema. The description adds nothing about parameter format, so baseline 3 applies.

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 (Save) and resource (contacts or organizations), and the phrase 'your own' signals it differs from the lookup/search siblings. It is clear, but it never names an alternative tool to contrast against, so differentiation is inferred rather than stated.

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 explicit when-to-use or when-not-to-use guidance and no named alternative among siblings such as organizations_search or contacts_list. The word 'own' faintly implies this is for user-supplied contacts rather than enriched data, but the agent must infer that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

contacts_listList your contacts in a stable order; page with nextBeforeC
Read-only
Inspect

List your contacts in a stable order; page with nextBefore

NameRequiredDescriptionDefault
limitNoMaximum saved contacts to return on this page
beforeNoThe nextBefore of the previous page

Output Schema

NameRequiredDescription
contactsYes
nextBeforeYes

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered by structured data. The description adds one genuinely useful behavioral fact beyond that: results come back in a stable order, which tells the agent pagination is safe from skips or duplicates. It says nothing about timeouts, rate limits, or cursoring edge cases, so a 3 is appropriate.

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 clause with no wasted words, and the ordering/paging contract is front-loaded. It reads as a compressed fragment that largely restates the title, so it is efficient but slightly thin rather than exemplary.

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?

An output schema exists, so return values need not be described, and the parameters are fully covered by the schema. For a simple two-optional-parameter list tool with full annotation coverage, the description plus structured data gives an agent enough to invoke it correctly; only the absence of sibling-routing guidance keeps it from a 5.

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 100%, so both parameters are already documented in the schema, establishing baseline 3. The description's mention of nextBefore ties the cursor concept to the "before" parameter and clarifies its role in paging, which is mild added value but repeats rather than extends the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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?

"Page with nextBefore" implies the iteration workflow and gives the cursor name, which is implicit usage guidance. There is no statement of when to prefer this over persons_search or contacts_create, nor any exclusion or precondition, so the guidance remains inferred rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

credits_getCurrent credit balanceC
Read-only
Inspect

Current credit balance

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
creditsYes

TDQS

C2.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds no extra behavioral context such as snapshot semantics, units, or response specifics, but it does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three words with no filler, but the phrase is under-specified for a definition: it is a tautological noun phrase rather than an instructive sentence. Conciseness is fine, but the structure lacks a verb or usage statement.

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, read-only balance lookup with an output schema and safety annotations, the description provides enough to understand what will be returned. It is not a complex workflow, so the missing verb and usage note are smaller gaps.

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 input schema has zero parameters, so there are no parameter semantics to document. The baseline of 4 applies; no compensation is needed from the description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

Tautological: description restates name/title.

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?

No sentence or phrase explains when to call this tool or when to prefer an alternative. The only implied context is from the title/name, and the sibling tools are unrelated categories, so the description gives no routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deliverability_create_testStart an inbox placement test for a mailbox you send fromAInspect

Start an inbox placement test for a mailbox you send from. Send one email from the mailbox you want to test to every address in seedEmails, with the testId anywhere in the body, then poll deliverability_get_test about once a minute to see whether it landed in the inbox, spam or a tab at Gmail, Outlook and other providers. Most seeds report within 2-5 minutes; the test closes 60 minutes after it starts. Charges 25 credits.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
testIdYesPut this anywhere in the body of the test email
closesAtYes
seedEmailsYesSend the test email to every one of these addresses
chargedCreditsYes

TDQS

A4.8/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish that this is a non-read-only, non-destructive, closed-world operation. The description adds materially beyond that: a 25-credit charge, a 2-5 minute reporting window, and a 60-minute test expiry. Costs and timing are exactly the behavioral context annotations cannot convey.

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?

Purpose is front-loaded and every sentence carries information (procedure, polling cadence, timing, cost). The middle sentence is long and run-on, packing three separate instructions together, so structure is efficient but not maximally scannable.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be spelled out, and the description still covers the full usage loop, expected latency, expiry, and credit cost. Nothing an agent needs to invoke this correctly is missing.

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?

With zero declared parameters, the baseline is 4. The description goes further by naming the operative inputs (seedEmails, testId) and their intended usage, though these names do not appear in the empty schema, which creates a mild mismatch rather than a clarifying one.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Start an inbox placement test for a mailbox you send from') and immediately contrasts with the sibling 'deliverability_get_test', which it positions as the polling counterpart. An agent can distinguish the two without opening either schema.

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?

Explicitly prescribes the workflow: send one email from the mailbox under test to every address in seedEmails with testId in the body, then poll deliverability_get_test about once per minute. It names the alternative tool and the exact trigger for using it, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

deliverability_get_testWhere the test email landed at each seed mailboxA
Read-only
Inspect

Where the test email landed at each seed mailbox. Poll about once a minute while status is waiting. placement is inbox, spam, promotions, social, updates or forums, missing while the email has not arrived, or unreadable while we could not read that seed mailbox; score is the inbox share from 0 to 10 once the test is completed, leaving unreadable seeds out. rspamd is the content filter verdict with its matched rules, when a seed reports one.

NameRequiredDescriptionDefault
testIdYestestId returned by deliverability_create_test

Output Schema

NameRequiredDescription
scoreYes
seedsYes
rspamdYes
statusYes
testIdYes
closesAtYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, non-destructive, closed-world), and the description adds real behavioral context: the async waiting state, the full set of placement values including the sentinel values missing and unreadable, and how score is derived (inbox share 0–10, unreadable seeds excluded). It does not discuss error conditions or result expiry, so not 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.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

It is front-loaded with the purpose and then packs field semantics into dense semicolon-linked clauses; every clause carries information. The run-on structure slightly hurts scannability but nothing is redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only result-fetching tool with a rich output schema, the description covers what the agent needs: the polling cadence, the meaning of every placement value, and the scoring rule. Return shape is left to the output schema as expected.

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 100% and the single testId parameter already documents its pattern and its origin from deliverability_create_test. The description adds nothing about the parameter, so the baseline 3 applies.

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 clearly states the resource returned: the placement result of a test email across each seed mailbox, which pairs naturally with the sibling deliverability_create_test. The retrieval verb is implicit rather than stated, but an agent can still distinguish this from the create tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives an explicit operating instruction: poll roughly once per minute while status is waiting, which tells the agent both the condition to call and the cadence. It does not name an alternative tool or state when not to call, so it falls short of a full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizations_enrichEnrich a company from its domainAInspect

Enrich a company from its domain. Returns the company's firmographics, socials and website data. Charges 0.5 credits only when the company is found.

NameRequiredDescriptionDefault
domainYesCompany domain or website URL, e.g. "stripe.com"

Output Schema

NameRequiredDescription
foundYes
organizationYes
chargedCreditsYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare readOnly/openWorld/destructive flags, so the credit-charging rule (0.5 credits, billed only on a successful match) is genuinely additive context an agent needs to avoid surprise spend. It does not, however, discuss rate limits, lookup latency, or what happens on a miss beyond the billing point.

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?

Three short sentences, zero filler: purpose first, return payload second, cost caveat last. Every sentence carries information the agent would otherwise lack.

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 single-parameter tool with an output schema, the description needn't restate return fields, and the cost model is disclosed. The only shortfall is the absence of routing guidance against the other organizations_* siblings.

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?

Only one parameter and schema description coverage is 100% (the schema already gives the "stripe.com" example and minLength), so the baseline of 3 applies. The description adds no syntax or normalization guidance beyond what the schema supplies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (enrich) applied to a specific resource (a company, keyed by domain) and even names the payload returned (firmographics, socials, website data). This clearly separates it from the sibling organizations_search, which retrieves rather than enriches.

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 usage is implied — you call it when you already hold a company domain and want enrichment — but there is no explicit when-to-use versus the sibling organizations_search or organizations_find_decision_maker, and no exclusions or prerequisites stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

organizations_find_decision_makerFind the decision maker of an organization with a verified emailAInspect

Find the decision maker of an organization with a verified email. Charges 2 credits only when a decision maker is found. Can take a few minutes.

NameRequiredDescriptionDefault
organizationIdYesCompany ID returned by organization search or enrichment

Output Schema

NameRequiredDescription
foundYes
decisionMakerYes
creditsChargedYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only say readOnlyHint=false, openWorldHint=true, destructiveHint=false — enough to signal external lookup but nothing about cost or timing. The description supplies both: a conditional 2-credit charge that fires only on success, and a multi-minute latency window. These are exactly the behaviors an agent needs before committing to a call, and nothing contradicts the annotations (a credit-consuming finder is consistent with readOnlyHint=false).

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?

Three short sentences, each doing distinct work: what it returns, what it costs, how long it takes. The payoff statement is front-loaded and there is no filler.

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 an output schema present, return-shape explanation is unnecessary, and one fully documented parameter needs little prose. The description covers the two non-obvious facts an agent must weigh — cost and latency — but says nothing about the no-result case (e.g., whether credits are untouched and what the response looks like when no decision maker exists).

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?

There is a single parameter at 100% schema description coverage ('Company ID returned by organization search or enrichment'), so the schema already carries the meaning. The description adds no format, sourcing, or validation detail for organizationId, which is the correct baseline 3 when the schema does the heavy lifting.

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 and resource plus a meaningful qualifier: finding the decision maker of an organization, with the email verified. That is far more specific than a generic 'look up organization', though it never names how it differs from near neighbors like organizations_enrich or persons_find_email.

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 scenario where this applies (you have an organizationId and want a decision-maker contact) is implied rather than stated, and no alternative tool is named as the wrong or right choice. The cost and latency hints ('charges 2 credits', 'a few minutes') do help an agent decide whether to invoke it, which lifts this above pure silence.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

persons_find_emailFind a person's work email by LinkedIn URL, or full name and company domainAInspect

Find a person's work email by LinkedIn URL, or full name and company domain. Charges 1 credit only when an email is found.

NameRequiredDescriptionDefault
nameNoFull name, e.g. "Jane Doe"; needs domain
domainNoCompany domain, e.g. "acme.com"
linkedinNoe.g. "https://www.linkedin.com/in/jane-doe"

Output Schema

NameRequiredDescription
nameYes
emailYes
foundYes
jobTitleYes
linkedinYes
companyNameYes
chargedCreditsYes
companyWebsiteYes
alternateEmailsYes

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations set readOnlyHint=false, destructiveHint=false, openWorldHint=false but say nothing about billing. The description adds a concrete and important behavioral fact: "Charges 1 credit only when an email is found." That conditional cost model is exactly the kind of detail annotations cannot convey. Auth requirements and rate limits are still unstated.

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 sentences, fully front-loaded: capability first, cost model second. No filler, no restated schema detail.

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?

An output schema exists, so return values need not be explained, and the billing note covers the main hidden behavior. What remains thin is any guidance on which input combination to prefer and what happens on a miss, which matters for a tool whose cost is conditional.

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 100%, so each parameter (name, domain, linkedin) is already documented with format examples. The description only restates the two combination modes, adding no syntax or constraint detail beyond the schema, so the baseline 3 applies.

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 and resource ("Find a person's work email") and names the two accepted input modes, which is more than a title restatement. It does not, however, distinguish itself from near-siblings like persons_lookup or persons_search, so an agent must still infer which lookup tool to pick.

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 description gives the two valid input paths (LinkedIn URL, or name plus domain), which implies usage. It never states when to prefer this over persons_lookup, persons_find_phone, or organizations_find_decision_maker, and gives no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

persons_find_phoneFind a person's phone number by LinkedIn URL, email, or full name and company domainAInspect

Find a person's phone number by LinkedIn URL, email, or full name and company domain. Covers professional contacts only: people in their role at a company, not private individuals. Charges 2 credits only when a phone number is found.

NameRequiredDescriptionDefault
nameNoFull name, e.g. "Jane Doe"; needs domain
emailNoKnown email address identifying the person
domainNoCompany domain, e.g. "acme.com"
linkedinNoe.g. "https://www.linkedin.com/in/jane-doe"

Output Schema

NameRequiredDescription
nameYes
foundYes
phoneYes
phonesYes
jobTitleYes
linkedinYes
companyNameYes
chargedCreditsYes
companyWebsiteYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses the billing rule ('charges 2 credits only when a phone number is found'), which is genuine behavioral context the annotations do not carry — readOnlyHint=false alone would not tell an agent about cost or conditional charging. It does not mention rate limits or auth requirements, but the credit policy is the material trait here.

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?

Three short sentences, front-loaded with the action and inputs, then the scope limit, then the cost. Every sentence carries information an agent needs; nothing is padded.

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 an output schema present, return values need no explanation, and the description covers scope, inputs, and cost. The only minor omission is what a successful result implies for follow-up (e.g. coverage/likelihood limits), but nothing essential to correct invocation is missing.

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 100%, so all four parameters are already documented, including the constraint that name requires a domain. The description restates the accepted input combinations but adds no format or precedence detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Find a person's phone number') and enumerates the three accepted lookup keys, which cleanly separates it from siblings like persons_find_email or persons_lookup. The scope qualifier ('professional contacts only') further pins down what the tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit when-not boundary: professional/role-based contacts, not private individuals. It does not name the sibling alternative (persons_find_email) for when a phone is not the target, so the routing guidance is clear but not fully comparative.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

persons_lookupLook up one person by LinkedIn URL, email, or name and company domainAInspect

Look up one person by LinkedIn URL, email, or name and company domain. Returns the person with their emails, phones, role and company. Covers professional contacts only: people in their role at a company, not private individuals. Charges 1 credit only when the person is found with an email or phone. saveToContacts also stores them in your contacts.

NameRequiredDescriptionDefault
nameNoFull name, e.g. "Jane Doe"; needs domain
emailNoKnown email address identifying the person
domainNoCompany domain, e.g. "acme.com"
linkedinNoe.g. "https://www.linkedin.com/in/jane-doe"
saveToContactsNoSave the returned person to your Deeplead contacts

Output Schema

NameRequiredDescription
foundYes
personYes
chargedCreditsYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Adds genuinely useful behavior beyond the annotations: the credit model ('charges 1 credit only when the person is found with an email or phone') and the side effect that saveToContacts persists the person to contacts, which explains why readOnlyHint is false despite the read-like name. It stays silent on rate limits and result freshness, so not 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?

Four tight sentences with the purpose front-loaded, followed by return contents, scope constraint, and billing behavior. No sentence is redundant with the name/title and nothing is padded.

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 an output schema present, the brief return summary is sufficient, and the billing plus scope caveats cover the main decision-relevant facts. It could still specify which standalone identifiers (email alone, LinkedIn alone) are valid without a domain, but the core is complete.

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 100%, so the schema already documents all five parameters including the 'needs domain' constraint on name. The description only echoes the identifier list and adds a note on saveToContacts, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (look up), cardinality (one person), and the exact identifiers accepted (LinkedIn URL, email, name + company domain). This distinguishes it from plural siblings like persons_search and the narrower persons_find_email/persons_find_phone without the agent needing to open any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a clear scope boundary — 'professional contacts only: people in their role at a company, not private individuals' — which tells the agent when this tool will fail. It does not, however, route the agent among alternatives such as persons_search for broader matching, leaving sibling selection to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

websites_find_contactsFind the emails, phones and social profiles published on a company websiteAInspect

Find the emails, phones and social profiles published on a company website. Reads what our own crawl of the website found, so it answers in under a second and never visits the site during the call. A website that many businesses share (a site builder, a booking platform) has no contacts. Charges 0.5 credits only when an email or phone is found.

NameRequiredDescriptionDefault
websiteYesWebsite URL or domain, e.g. "castledental.com"

Output Schema

NameRequiredDescription
foundYestrue when an email or phone was found
emailsYesFound on the company website
phonesYesFound on the company website
socialsYes
websiteYesThe domain that was looked up
chargedCreditsYes

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds substantial behavioral detail beyond annotations: it reads from the service's own crawl, answers in under a second, never visits the site during the call, and charges 0.5 credits only when an email or phone is found. These details clarify latency, data source, side effects, and billing conditions.

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 front-loaded with the core purpose and then adds only high-value operational details: crawl source, speed, shared-site limitation, and credit charge. Every sentence contributes useful information without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read operation with an output schema, the description covers the important call-context details an agent needs: what is returned, where the data comes from, expected speed, limitations, and cost. Nothing essential is missing.

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?

There is only one parameter, and schema description coverage is 100%, with the schema giving the URL/domain format and an example. The description does not add further parameter semantics beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: find emails, phones, and social profiles published on a company website. It is clearly distinguishable from person-level tools like persons_find_email and persons_find_phone by emphasizing contacts published on a company website.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It gives a clear usage context and an explicit exclusion: websites shared by many businesses, such as site builders or booking platforms, have no contacts. It does not explicitly name sibling alternatives for person-level lookups, so it falls short of full when-to-use-vs-alternatives guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

websites_find_pixelsFind the ad and analytics pixels a website runsAInspect

Find the ad and analytics pixels a website runs. Checks the homepage and every Google Tag Manager container it loads, nested ones included, for meta, tiktok, openai, google_analytics, google_ads, microsoft_ads, linkedin, pinterest, snapchat, x, reddit, hotjar, microsoft_clarity, callrail. Containers that 50 or more websites load belong to a platform or agency and are left out. Answers from the last check when the website was checked before (checkedAt), otherwise checks it during the call, which can take up to 20 seconds. Charges 0.25 credits when the homepage answered, also when it runs no pixels; a homepage that never answers is free.

NameRequiredDescriptionDefault
websiteYesWebsite URL or domain, e.g. "castledental.com"

Output Schema

NameRequiredDescription
foundYestrue when the homepage answered and was checked
pixelsYesVendors whose pixel or tag runs on the website, e.g. meta, google_ads
websiteYesThe domain that was checked
pixelIdsYesvendor:id where the markup shows the id, e.g. "meta:1234567890" or "google_ads:AW-123456789"
checkedAtYes
chargedCreditsYes

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations by disclosing the cost model (0.25 credits, charged even on zero-pixel hits, free when the homepage never answers), the latency ceiling (up to 20 seconds), and the caching rule (answers from the last check via checkedAt, otherwise checks live). These are the exact traits an agent needs before committing credits and waiting on a slow call.

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?

Front-loaded with the purpose, then scope, then cost/latency caveats in a logical order. The enumeration of fifteen pixel vendors is long but arguably earns its place by defining detection coverage; it could have been condensed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need no explanation. The description covers the remaining agent-critical unknowns for an open-world, credit-charging check: detection scope, platform-container exclusions, caching, latency, and pricing.

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?

Only one parameter, and the schema already documents it at 100% coverage with an example ("castledental.com"). The description adds no format guidance beyond that, which is acceptable given the schema does the work — baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb ("Find") and a precise resource ("the ad and analytics pixels a website runs"), then enumerates exactly which pixel vendors are detected. This cleanly separates it from the sibling websites_find_contacts, which looks for people rather than tracking tags.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear operating context: it inspects the homepage plus every GTM container, and deliberately omits containers loaded by 50+ websites because those belong to a platform or agency. That is an implicit exclusion telling the agent what results will and won't include. It stops short of naming an alternative tool or stating explicit when-not-to-call conditions.

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. 2 tool updates
    • Changedcampaign_ideas_get1 field changed
      • changedOutput schema / properties / play / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "ideas",
        -      "quote",
        -      "mockup",
        -      "sample",
        -      "fixes",
        -      "video",
        -      "rank",
        -      "breakdown",
        -      "jargon",
        -      "referral",
        -      "commission",
        -      "wholesaleSamples"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "ideas",
        +      "quote",
        +      "mockup",
        +      "sample",
        +      "fixes",
        +      "video",
        +      "rank",
        +      "breakdown",
        +      "jargon",
        +      "siteCheck",
        +      "referral",
        +      "commission",
        +      "wholesaleSamples"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changedcampaign_ideas_list1 field changed
      • changedOutput schema / properties / ideas / items / properties / play / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "ideas",
        -      "quote",
        -      "mockup",
        -      "sample",
        -      "fixes",
        -      "video",
        -      "rank",
        -      "breakdown",
        -      "jargon",
        -      "referral",
        -      "commission",
        -      "wholesaleSamples"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "enum": [
        +      "ideas",
        +      "quote",
        +      "mockup",
        +      "sample",
        +      "fixes",
        +      "video",
        +      "rank",
        +      "breakdown",
        +      "jargon",
        +      "siteCheck",
        +      "referral",
        +      "commission",
        +      "wholesaleSamples"
        +    ],
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  2. 13 tool updates
    • Addedcampaign_ideas_delete
    • Addedcampaign_ideas_get
    • Addedcampaign_ideas_launch
    • Addedcampaign_ideas_list
    • Addedcampaign_ideas_set_audience
    • Addedcampaign_ideas_set_radius
    • Addedcampaign_ideas_suggest
    • Addedcampaigns_add_recipients
    • Addedcampaigns_create
    • Addedcampaigns_get
    • Addedcampaigns_list
    • Addedcampaigns_set_status
    • Addedcampaigns_update
  3. 1 tool update
    • Changedcontacts_list1 field changed
      • addedInput schema / properties / before / pattern
        Added value: +"^[0-9a-fA-F]{24}$"
  4. 2 tool updates
    • Addedwebsites_find_contacts
    • Addedwebsites_find_pixels
  5. 2 tool updates
    • Addeddeliverability_create_test
    • Addeddeliverability_get_test
  6. 2 tool updates
    • Changedcontacts_create1 field changed
      • changedInput schema / properties / contacts / items / properties / organizationId / description
        Previous value: -"From /organizations/search"New value: +"From organizations_search"
    • Changedpersons_search1 field changed
      • changedInput schema / properties / organizationIds / description
        Previous value: -"Limit to organizations from /organizations/search"New value: +"Limit to organizations from organizations_search"
  7. 1 tool update
    • Changedbusinesses_search5 fields changed
      • addedInput schema / properties / categories
        Added value: +{
        +  "description": "Google business categories, e.g. [\"Dentist\"]",
        +  "items": {
        +    "minLength": 1,
        +    "type": "string"
        +  },
        +  "maxItems": 10,
        +  "minItems": 1,
        +  "type": "array"
        +}
      • addedInput schema / properties / excludedCategories
        Added value: +{
        +  "description": "Google business categories to exclude",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • removedInput schema / properties / excludedNiches
        Removed value: -{
        -  "description": "Business categories or niches to exclude",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • removedInput schema / properties / niches
        Removed value: -{
        -  "description": "Google categories or plain niches, e.g. [\"dentist\"]",
        -  "items": {
        -    "minLength": 1,
        -    "type": "string"
        -  },
        -  "maxItems": 10,
        -  "minItems": 1,
        -  "type": "array"
        -}
      • changedInput schema / required
        Previous value: -[
        -  "niches",
        -  "location"
        -]New value: +[
        +  "categories",
        +  "location"
        +]
  8. 14 tool updates
    • Changedbusinesses_search6 fields changed
      • addedInput schema / properties / excludedNiches / description
        Added value: +"Business categories or niches to exclude"
      • addedInput schema / properties / page / description
        Added value: +"Page number, starting at 1; up to 30 businesses per page"
      • addedInput schema / properties / rating / description
        Added value: +"Google rating band to match"
      • addedInput schema / properties / reviews / description
        Added value: +"Google review-count band to match"
      • addedInput schema / properties / saveToContacts
        Added value: +{
        +  "default": false,
        +  "description": "Save returned businesses to your Deeplead contacts",
        +  "type": "boolean"
        +}
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "businesses": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "adPixels": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "chatgpt": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "googleAds": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "googleAnalytics": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "meta": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "tiktok": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "meta",
        +              "googleAds",
        +              "googleAnalytics",
        +              "tiktok",
        +              "chatgpt"
        +            ],
        +            "type": "object"
        +          },
        +          "address": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "businessId": {
        +            "type": "string"
        +          },
        +          "categories": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "city": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "country": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "email": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "emails": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "googleProfileClaimed": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "phone": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "phones": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "rating": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "reviewCount": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "reviewsByStars": {
        +            "description": "Counts of 1 to 5 star reviews",
        +            "items": {
        +              "type": [
        +                "number",
        +                "null"
        +              ]
        +            },
        +            "type": "array"
        +          },
        +          "socials": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "facebook": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "instagram": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "linkedin": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "tiktok": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "facebook",
        +              "instagram",
        +              "linkedin",
        +              "tiktok"
        +            ],
        +            "type": "object"
        +          },
        +          "website": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "businessId",
        +          "name",
        +          "categories",
        +          "address",
        +          "city",
        +          "country",
        +          "website",
        +          "email",
        +          "emails",
        +          "phone",
        +          "phones",
        +          "rating",
        +          "reviewCount",
        +          "reviewsByStars",
        +          "googleProfileClaimed",
        +          "socials",
        +          "adPixels"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "chargedCredits": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "chargedCredits",
        +    "businesses"
        +  ],
        +  "type": "object"
        +}
    • Changedcontacts_create2 fields changed
      • addedInput schema / properties / contacts / description
        Added value: +"Contacts to save; each needs an email, LinkedIn URL, website or organization ID"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "saved": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "saved"
        +  ],
        +  "type": "object"
        +}
    • Changedcontacts_list2 fields changed
      • addedInput schema / properties / limit / description
        Added value: +"Maximum saved contacts to return on this page"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "contacts": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "companyName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "contactId": {
        +            "type": "string"
        +          },
        +          "email": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "jobTitle": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "linkedin": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "organizationId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "website": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "contactId",
        +          "name",
        +          "email",
        +          "jobTitle",
        +          "companyName",
        +          "website",
        +          "linkedin",
        +          "organizationId"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "nextBefore": {
        +      "type": [
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "contacts",
        +    "nextBefore"
        +  ],
        +  "type": "object"
        +}
    • Changedcredits_get1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "credits": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "credits"
        +  ],
        +  "type": "object"
        +}
    • Addedorganizations_enrich
    • Addedorganizations_find_decision_maker
    • Removedorganizations_findDecisionMaker
    • Changedorganizations_search10 fields changed
      • addedInput schema / properties / foundedAfter / description
        Added value: +"Earliest founding year to include"
      • addedInput schema / properties / foundedBefore / description
        Added value: +"Latest founding year to include"
      • addedInput schema / properties / hqCity
        Added value: +{
        +  "description": "City names of the headquarters, e.g. [\"Austin\"]",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedInput schema / properties / includeWithoutWebsite / description
        Added value: +"Include companies without websites in search results"
      • addedInput schema / properties / limit / description
        Added value: +"Maximum companies to return; 0 returns only a free count"
      • changedInput schema / properties / limit / minimum
        Previous value: -1New value: +0
      • addedInput schema / properties / offset / description
        Added value: +"Number of matching companies to skip for pagination"
      • addedInput schema / properties / revenueRange / description
        Added value: +"Annual company revenue bands"
      • addedInput schema / properties / technologies / description
        Added value: +"Technologies used by the company"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "chargedCredits": {
        +      "type": "number"
        +    },
        +    "organizations": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "adPixels": {
        +            "additionalProperties": false,
        +            "description": "true/false where the website was checked, null where it never was",
        +            "properties": {
        +              "chatgpt": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "googleAds": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "googleAnalytics": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "meta": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              },
        +              "tiktok": {
        +                "type": [
        +                  "boolean",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "meta",
        +              "googleAds",
        +              "googleAnalytics",
        +              "tiktok",
        +              "chatgpt"
        +            ],
        +            "type": "object"
        +          },
        +          "description": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "domain": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "emails": {
        +            "description": "Found on the company website",
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "employeeCount": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "employeeGrowthRate": {
        +            "description": "Employee growth on LinkedIn in percent",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "employeeMax": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "employeeMin": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "foundedYear": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "hqCity": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "hqCountry": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "hqState": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "industry": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "keywords": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "lastFunding": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "amount": {
        +                "description": "USD",
        +                "type": [
        +                  "number",
        +                  "null"
        +                ]
        +              },
        +              "date": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "type": {
        +                "description": "e.g. Seed Round, Series A, Private Equity Round",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "type",
        +              "date",
        +              "amount"
        +            ],
        +            "type": "object"
        +          },
        +          "linkedin": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "linkedinDescription": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "monthlyGoogleAdSpend": {
        +            "description": "Estimated monthly Google Ads spend in USD",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "monthlyVisits": {
        +            "description": "Estimated monthly website visits",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "naicsCodes": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "organizationId": {
        +            "type": "string"
        +          },
        +          "phones": {
        +            "description": "Found on the company website",
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "revenueRange": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "socials": {
        +            "additionalProperties": false,
        +            "properties": {
        +              "facebook": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "instagram": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "linkedin": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "tiktok": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "x": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "youtube": {
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              }
        +            },
        +            "required": [
        +              "facebook",
        +              "instagram",
        +              "linkedin",
        +              "x",
        +              "tiktok",
        +              "youtube"
        +            ],
        +            "type": "object"
        +          },
        +          "technologies": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "totalFunding": {
        +            "description": "USD",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "website": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "websiteAlive": {
        +            "type": [
        +              "boolean",
        +              "null"
        +            ]
        +          },
        +          "websiteDescription": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "websiteTitle": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "organizationId",
        +          "name",
        +          "domain",
        +          "website",
        +          "websiteAlive",
        +          "websiteTitle",
        +          "websiteDescription",
        +          "linkedin",
        +          "linkedinDescription",
        +          "description",
        +          "industry",
        +          "naicsCodes",
        +          "keywords",
        +          "technologies",
        +          "employeeCount",
        +          "employeeMin",
        +          "employeeMax",
        +          "revenueRange",
        +          "monthlyVisits",
        +          "monthlyGoogleAdSpend",
        +          "employeeGrowthRate",
        +          "lastFunding",
        +          "totalFunding",
        +          "foundedYear",
        +          "hqCity",
        +          "hqState",
        +          "hqCountry",
        +          "emails",
        +          "phones",
        +          "socials",
        +          "adPixels"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "totalCount": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "totalCount",
        +    "chargedCredits",
        +    "organizations"
        +  ],
        +  "type": "object"
        +}
    • Addedpersons_find_email
    • Addedpersons_find_phone
    • Addedpersons_lookup
    • Removedpersons_save
    • Changedpersons_search14 fields changed
      • addedInput schema / properties / foundedAfter / description
        Added value: +"Earliest founding year to include"
      • addedInput schema / properties / foundedBefore / description
        Added value: +"Latest founding year to include"
      • addedInput schema / properties / jobLevel / description
        Added value: +"Allowed job seniority levels"
      • addedInput schema / properties / jobTitleExclude / description
        Added value: +"Job title phrases to exclude"
      • addedInput schema / properties / limit / description
        Added value: +"Maximum people to return; 0 returns only a free count"
      • changedInput schema / properties / limit / minimum
        Previous value: -1New value: +0
      • addedInput schema / properties / offset / description
        Added value: +"Pagination offset; use nextOffset from the previous response"
      • addedInput schema / properties / onePerOrganization
        Added value: +{
        +  "default": false,
        +  "description": "Return at most one person per company",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / personCity / description
        Added value: +"Cities where the person is based"
      • addedInput schema / properties / personState / description
        Added value: +"States where the person is based"
      • addedInput schema / properties / revenueRange / description
        Added value: +"Annual company revenue bands"
      • addedInput schema / properties / saveToContacts
        Added value: +{
        +  "default": false,
        +  "description": "Save returned people to your Deeplead contacts",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / technologies / description
        Added value: +"Technologies used by the company"
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "chargedCredits": {
        +      "type": "number"
        +    },
        +    "nextOffset": {
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "persons": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "alternateEmails": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "city": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "companyEmployeeGrowthRate": {
        +            "description": "Percent",
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "companyLastFundingDate": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "companyLastFundingType": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "companyMonthlyVisits": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "companyName": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "companyWebsite": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "country": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "email": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "foundedYear": {
        +            "type": [
        +              "number",
        +              "null"
        +            ]
        +          },
        +          "jobFunction": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "jobLevel": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "jobTitle": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "linkedin": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "naicsCodes": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "name": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "organizationId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "personId": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "phone": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "phones": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "revenueRange": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          },
        +          "state": {
        +            "type": [
        +              "string",
        +              "null"
        +            ]
        +          }
        +        },
        +        "required": [
        +          "personId",
        +          "name",
        +          "email",
        +          "alternateEmails",
        +          "phone",
        +          "phones",
        +          "linkedin",
        +          "jobTitle",
        +          "jobLevel",
        +          "jobFunction",
        +          "city",
        +          "state",
        +          "country",
        +          "organizationId",
        +          "companyName",
        +          "companyWebsite",
        +          "revenueRange",
        +          "naicsCodes",
        +          "foundedYear",
        +          "companyMonthlyVisits",
        +          "companyEmployeeGrowthRate",
        +          "companyLastFundingType",
        +          "companyLastFundingDate"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "totalCount": {
        +      "description": "With limit 0: all matching people, including those without an email or phone",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "totalCount",
        +    "nextOffset",
        +    "chargedCredits",
        +    "persons"
        +  ],
        +  "type": "object"
        +}
    • Removedsearch_parse
  9. 9 tool updates
    • First observedbusinesses_search
    • First observedcontacts_create
    • First observedcontacts_list
    • First observedcredits_get
    • First observedorganizations_findDecisionMaker
    • First observedorganizations_search
    • First observedpersons_save
    • First observedpersons_search
    • First observedsearch_parse

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables searching 12M+ verified businesses across 10 countries and 19 directories, with tools for lead generation, competitive analysis, and market research.
    27 PyPI
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Finds, filters, and verifies local-business leads on demand; every returned email carries a verification receipt (verifier, verdict, timestamp). Credit-based with per-key spend budgets; 25 free validated leads at signup.
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Finds and verifies business email addresses using DNS/SMTP verification and web scraping, with no external API costs.
    5
    22 npm
    12
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources