Skip to main content
Glama

Server Details

Manage contacts, campaigns, senders, and deliverability via SuperSend API

Ownership verified
Status
Healthy
Uptime
15.1% over 58 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 19 tools

Disambiguation4/5

Most tools target distinct resource+action pairs, and descriptions carefully delimit the lifecycle (preview_campaign before creation, setup_outbound_campaign to create, get_campaign_review before launch, activate_campaign to send). The main confusion is the 'sender' vs 'sender profile' distinction (update_sender acts on inboxes while create_sender_profile/list_sender_profiles act on groups), plus setup_outbound_campaign overlapping complete_campaign/activate_campaign flows.

Naming Consistency5/5

All 19 tools use a consistent snake_case verb_noun pattern (list_campaigns, get_campaign_stats, activate_campaign, send_conversation_message, update_sender). Even the compound bulk_import_contacts and setup_outbound_campaign follow the same verb-first convention with no style mixing.

Tool Count4/5

19 tools is on the heavy side but reasonable for a full outbound platform spanning campaigns, contacts, inboxes, domains, and conversations. Each tool largely earns its place, though setup_outbound_campaign bundles work that other tools also expose, creating some redundancy.

Completeness3/5

The surface covers most campaign/conversation workflows, but several descriptions reference tools that are absent from the set (get_campaign, assign_campaign_sender_profile, connect_domain, verify_domain, get_conversation_messages), which will cause agent dead ends. Delete/update operations for campaigns and explicit domain-connection tools are also missing.

Available Tools

19 tools
activate_campaignActivate CampaignA
DestructiveIdempotent
Inspect

Activate (turn on) a campaign so it starts emailing its enrolled contacts on its schedule. This contacts real people, so show the user get_campaign_review first, send them test emails with send_campaign_test, and launch only once they confirm. The campaign needs a sequence with an email step and at least one assigned sender profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCampaign UUID - get from list_campaigns

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true, but the description adds crucial context they do not carry: this contacts real people, and it requires a sequence with an email step plus at least one assigned sender profile. It stops short of stating reversibility (deactivate_campaign) or what a failed activation returns, 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?

Three tight sentences: effect first, safety workflow second, preconditions third. No filler and the most decision-relevant information is front-loaded.

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 activation tool with no output schema, the description covers effect, human-in-the-loop safeguards, and prerequisites well. It omits only post-activation behavior such as reversibility or failure modes, a minor gap.

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 coverage is 100%, with the schema itself pointing to list_campaigns as the source. The description adds no format or lookup detail beyond the schema, so baseline 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 (activate) plus resource (campaign) and the concrete consequence: it starts emailing enrolled contacts on schedule. This distinguishes it from deactivate_campaign and complete_campaign without needing 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 Guidelines5/5

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

Gives an explicit gated workflow: show get_campaign_review first, use send_campaign_test, and launch only after user confirmation. It names the sibling tools to use beforehand, so the agent knows both when to call this and when not to yet.

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

bulk_import_contactsBulk Import ContactsAInspect

Queue up to 50,000 contacts for import into a campaign. Each contact needs email or linkedin_url; supported columns are defined in the schema and any other data goes in custom. The import runs in the background and returns an upload_id and contact_count. validate_emails: true also runs email verification (consumes credits; default off).

ParametersJSON Schema
NameRequiredDescriptionDefault
TeamIdYesTeam UUID - get from list_teams
contactsYesContacts to import (1–50,000). Each needs email or linkedin_url; unknown keys are rejected, so put extra data in custom.
CampaignIdYesCampaign UUID - get from list_campaigns
validate_emailsNoWhen true, runs email verification (consumes credits). Default false.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations only cover safety/idempotency flags; the description adds genuinely new behavior — the job runs in the background, returns upload_id and contact_count, and validate_emails consumes credits with a default of off. It omits what happens on duplicate or invalid rows, which is the main remaining gap for a non-idempotent bulk write.

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 dense sentences, front-loaded with the operation and its 50,000 cap; the credit cost of validate_emails and the return values are packed in without filler. Nothing reads as padding.

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

Completeness4/5

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

With no output schema, the description usefully declares the return shape (upload_id, contact_count) and the async nature, so an agent knows not to expect synchronous results. It lacks error/duplicate handling guidance and a way to poll status, which keeps it just under complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% so the baseline is 3, but the description adds a real constraint not encoded in the schema: 'Each contact needs email or linkedin_url' (item-level required is absent) and that unknown keys go in custom. That is meaningful semantics beyond the field descriptions.

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+resource+scope: 'Queue up to 50,000 contacts for import into a campaign.' No sibling tool in the set performs contact import, and the description makes the operation and its bounds unmistakable 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?

Gives clear context for invocation: contacts belong to a campaign, each row needs email or linkedin_url, and validate_emails is an opt-in that costs credits. It does not name a 'when not to use' case or an alternative path (e.g., single-contact creation), so it stops short of a 5.

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

complete_campaignComplete CampaignA
Idempotent
Inspect

Mark a campaign setup complete (is_draft: false). Validates the campaign has at least one email step and at least one assigned sender profile — same outcome as clicking Finish in the UI wizard. Does not activate the campaign; use activate_campaign separately.

ParametersJSON Schema
NameRequiredDescriptionDefault
campaign_idYesCampaign UUID - get from list_campaigns

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly=false, idempotent=true, destructive=false), so the bar is lower; the description still adds meaningful context by naming the two validation checks that gate success and clarifying that this does not activate. It does not say what happens if validation fails (error shape) or what the response contains, which keeps it short of a 5.

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

Conciseness5/5

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

Three tight sentences with zero waste; the state change is front-loaded, validations second, and the sibling-exclusion last. Every sentence earns its place.

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 mutation with no output schema, the description covers the state change, the validation gates, and the non-activation caveat. The only gap is failure/response behavior, which is minor given the tool's simplicity.

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 campaign_id parameter is already documented in the schema with a pointer to list_campaigns. The description adds no format, source, or constraint detail beyond what the schema provides, so baseline 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 ('Mark a campaign setup complete') plus the resulting state change (is_draft: false), and explicitly distinguishes itself from the sibling activate_campaign. An agent can tell exactly what state transition this performs.

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 states the boundary condition: 'Does not activate the campaign; use activate_campaign separately.' It also implies the precondition context (campaign has email step and sender profile) that must hold before use, giving both when-to-use and the named alternative.

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

create_sender_profileCreate Sender ProfileAInspect

Create a sender profile in a team: a named group of inboxes (and optionally a LinkedIn account) that campaigns send from. After creating it, put inboxes in it with update_sender (sender_profile_id), then attach it to a campaign with assign_campaign_sender_profile.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesProfile name, e.g. "Q4 outbound"
team_idYesTeam UUID - get from list_teams

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false, idempotentHint=false and destructiveHint=false, so the safety profile is covered. The description goes further by explaining the entity model and the two-step activation path, but it never mentions return values (does it hand back the new sender_profile_id?) or duplicate-name 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?

Two sentences, both earning their place: the first defines the resource and scope, the second gives the follow-up call sequence. Purpose 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?

For a two-parameter creation tool with no output schema, the description covers purpose, entity semantics, and the follow-up workflow. The only real gap is what the call returns and whether the new profile id is directly reusable, which the agent must infer from the mention of sender_profile_id.

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% with only two parameters, both already documented ('Profile name, e.g. "Q4 outbound"' and 'Team UUID - get from list_teams'). The description adds no format, constraint, or default information 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.

Purpose5/5

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

States a specific verb (create) and resource (sender profile), then defines what the resource is: 'a named group of inboxes (and optionally a LinkedIn account) that campaigns send from.' That definition makes it immediately distinguishable from siblings like update_sender or list_sender_profiles.

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 explicit post-creation workflow steps and names the tools to use next ('put inboxes in it with update_sender (sender_profile_id), then attach it to a campaign with assign_campaign_sender_profile'). This is strong sequencing guidance, though it offers no when-not-to-use condition or prerequisite checks (e.g., whether a team must already exist).

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

deactivate_campaignDeactivate CampaignA
DestructiveIdempotent
Inspect

Deactivate (pause) a campaign so it stops sending. Contacts keep their place in the sequence; resume with activate_campaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCampaign UUID - get from list_campaigns

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true and idempotentHint=true; the description adds valuable context beyond them by clarifying the operation is a reversible pause ('Contacts keep their place in the sequence') and that a resume path exists. It does not say whether an already-paused campaign errors or no-ops despite the idempotent hint, leaving one behavioral 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?

Two short sentences, no filler, with the core action and effect front-loaded and the recovery path trailing. Every clause carries information.

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

Completeness4/5

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

For a one-parameter mutation with no output schema, the description covers the action, the side effect on contacts, and the reversal route, which is enough for correct invocation. Only the edge case of deactivating an already-paused campaign is 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?

There is a single parameter with 100% schema description coverage ('Campaign UUID - get from list_campaigns'), so the schema already carries the semantics. The description adds no parameter detail, which is the baseline 3 expectation 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.

Purpose5/5

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

Specific verb+resource ('Deactivate (pause) a campaign') with the effect stated ('stops sending'), and it explicitly distinguishes itself from the sibling activate_campaign. An agent can immediately tell this apart from complete_campaign or update_* siblings.

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 condition for use (to stop sending) and names the counterpart tool for the reverse action ('resume with activate_campaign'), which effectively routes the agent. It does not state when NOT to use it (e.g., vs complete_campaign, which is terminal), 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.

get_campaign_reviewReview Campaign Before LaunchA
Read-onlyIdempotent
Inspect

Review a campaign with the user before it sends: the steps in order (email subjects, waits, LinkedIn actions), who sends (sender profiles, inboxes and warmup, LinkedIn accounts), contacts waiting, schedule and daily volume, and the launch checks. can_launch says whether activate_campaign will work; checks that are not ok say what to fix (blocking ones stop the launch). Call this before activate_campaign and again after fixing anything. In Claude web and desktop it shows as a review card the user can launch or pause from themselves. If campaign.is_draft is true, call complete_campaign before activate_campaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCampaign UUID - get from list_campaigns

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnly/idempotent/non-destructive, but the description goes well beyond by explaining that can_launch predicts whether activate_campaign will work, that non-ok checks say what to fix, that blocking ones stop the launch, and the Claude web/desktop review-card behavior. This is rich behavioral context an agent cannot get from 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?

The paragraph is information-dense and front-loads the review's contents before the usage ordering and UI note. Every clause carries meaning, though the run-on inventory of contents is slightly heavy and could be tightened.

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 no output schema, the description carries the burden of explaining returns and does so thoroughly (can_launch, checks, blocking semantics). It also covers the draft-workflow prerequisite and platform-specific behavior, so nothing an agent needs to call it correctly 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 coverage is 100% and the single id parameter is fully documented in the schema ('Campaign UUID - get from list_campaigns'). The description adds no additional parameter semantics, so the baseline 3 for full schema coverage 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+resource ('review a campaign before it sends') and then enumerates exactly what the review covers: ordered steps, senders, waiting contacts, schedule/volume, and launch checks. This clearly distinguishes it from sibling read tools like get_campaign_stats and preview_campaign.

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 says when to call it ('before activate_campaign and again after fixing anything') and gives a conditional prerequisite: 'If campaign.is_draft is true, call complete_campaign before activate_campaign.' It names the alternative tools and the ordering conditions, 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.

get_campaign_statsGet Campaign StatsA
Read-onlyIdempotent
Inspect

A campaign's results, with the same numbers as the dashboard: emails sent, opens, clicks, replies (contacts who replied over contacts emailed), bounces and unsubscribes with rates; lead outcomes (interested, meeting requested, meeting booked, not interested); LinkedIn likes, profile visits, connection requests, accepted connections, messages and replies; and results for each sequence step (emails sent, or LinkedIn actions done and accepted, with replies per step) and A/B variant, with the leading variant once each variant has 50+ sends. Email totals are left out when the campaign has no email steps. Optional start/end dates (YYYY-MM-DD) limit opens, clicks and replies to that window.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCampaign UUID - get from list_campaigns
endNoEnd date, YYYY-MM-DD
startNoStart date, YYYY-MM-DD

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), yet the description adds substantive behavioral rules: email totals are omitted when the campaign has no email steps, and the leading A/B variant is only reported once each variant has 50+ sends. These are non-obvious output behaviors not captured by 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?

It is a single dense but well-structured sentence with the subject ('A campaign's results') front-loaded, followed by progressively finer detail. Every clause carries information, though the length is at the upper edge of comfortable scanning.

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?

There is no output schema, so the description carries the full burden of explaining return values, and it does so thoroughly across email, LinkedIn, lead-outcome, per-step and per-variant dimensions, including the conditional omission rules. Nothing needed to interpret the response 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 description coverage is 100%, so the baseline is 3, but the description adds real meaning beyond the schema: it explains that the optional start/end dates limit opens, clicks and replies only, and gives the YYYY-MM-DD format. That scoping semantic is not derivable from the bare 'Start date' schema text.

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 (get) and resource (campaign stats) and then enumerates exactly which results are returned, down to per-step and per-variant breakdowns. It is clearly distinguishable from siblings like list_campaigns, get_campaign_review, and get_setup_status.

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 phrase 'with the same numbers as the dashboard' gives situational context, and the id is traceable to list_campaigns via the schema, but the description offers no explicit when-to-use or when-not-to-use guidance versus get_campaign_review or get_setup_status. Usage is implied rather than stated.

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

get_conversationGet ConversationA
Read-onlyIdempotent
Inspect

Get one inbox conversation by ID: channel, title, participants, read/archive state, recent messages, labels, the contact and their campaign, and the AI category and sentiment.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConversation UUID

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description adds the useful payload context of what the tool surfaces (participants, read/archive state, labels, contact/campaign, AI category and sentiment), which goes beyond 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.

Conciseness5/5

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

One compact sentence that front-loads the verb and scope, then lists the payload. No filler, no repetition of the title, no wasted clauses.

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

Completeness3/5

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

For a simple one-parameter read tool with full schema coverage and rich annotations, the minimal definition is adequate. However, with no output schema, it would help to state what happens when the ID is not found and to distinguish itself from list_conversations more explicitly.

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 'id' parameter is documented as a conversation UUID, so the schema does the heavy lifting. The description adds nothing about the parameter beyond reinforcing that it is an ID lookup; 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?

Specific verb 'get' plus resource 'one inbox conversation by ID', and it enumerates the returned fields. It does not explicitly differentiate itself from the sibling list_conversations or update_conversation, but the singular 'by ID' framing makes the read-by-identifier scope clear.

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 states what the tool does but gives no when-to-use guidance and does not reference the obvious alternative list_conversations for browsing or update_conversation for mutation. The agent must infer the selection conditions from the name alone.

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

get_setup_statusGet Setup StatusA
Read-onlyIdempotent
Inspect

Start here with a new or unfamiliar account. Shows what is set up and what is still missing before campaigns can send: billing (7-day trial or plan), inboxes and warmup, sender profiles, LinkedIn accounts, and campaigns. next_steps lists each missing step in order and who does it: the agent (with the tool to call) or the user, with a link to open for steps that need a browser (adding a card, connecting inboxes the user already owns). Give those links to the user exactly as returned. Call again after each step to see what is left.

ParametersJSON Schema
NameRequiredDescriptionDefault
team_idNoTeam to check (default: the user's default team) - get from list_teams

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavior: next_steps is ordered and attributed (agent vs. user), browser links must be relayed verbatim, and the tool is meant to be re-called iteratively after each step.

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 primary instruction ('Start here...'), then progressively adds what is checked, the next_steps semantics, and the link/re-call rules. Dense but each sentence carries operational weight; minor density without waste.

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

Completeness4/5

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

With no output schema, the description must explain return values, and it does describe next_steps contents, ordering, ownership, and links. It does not describe the per-item 'set up vs. missing' result shape in detail, but for a read-only status tool the coverage is strong.

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 team_id parameter is fully documented in the schema, including its default and where to obtain it. The description adds no parameter-level meaning beyond that, so the baseline 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 ('Shows what is set up and what is still missing before campaigns can send') and enumerates exactly what it inspects: billing, inboxes/warmup, sender profiles, LinkedIn accounts, campaigns. It is clearly distinct from sibling action tools like setup_outbound_campaign or list_campaigns.

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 says when to use it ('Start here with a new or unfamiliar account') and prescribes the follow-up loop ('Call again after each step to see what is left'), plus how to handle returned links. It stops short of naming when-not-to-use or a sibling alternative, so it is clear context rather than full routing guidance.

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

list_campaignsList CampaignsA
Read-onlyIdempotent
Inspect

List campaigns in a team with status (1 = active, 2 = inactive), draft state, sequence version, category, and contact progress metrics. Returns a compact field set (sequence and schedule settings are omitted; use get_campaign or pass fields). Filter with status "active" or "inactive"; paginated, default 50, max 100.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax campaigns to return (default 50, max 100)
TeamIdYesTeam UUID - get from list_teams (required)
fieldsNoFields to return per item: an array of field names, a comma-separated string, or "all". Default (compact): id, name, status, is_draft, version, category_id, category_name, parent_campaign_id, contact_count, contact_metrics, max_per_day, track, timezone, send_to_risk_levels, createdAt, updatedAt.
offsetNoOffset for pagination
searchNoSearch by campaign name
statusNoFilter by campaign status - active (running) or inactive (paused)
include_subsequencesNoWhen true, include subsequence (linked child) campaigns in results

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds real context beyond that: the default field set, that sequence and schedule settings are omitted, and the pagination defaults (50 default, 100 max).

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?

Dense but front-loaded: the resource and scope lead, then the return-shape caveat, then filtering and pagination. Every sentence carries information, though the packed parentheticals require a careful read.

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

Completeness4/5

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

With no output schema, the description carries the return-shape burden and does so by naming the compact field set and what is omitted. Pagination and filtering are covered; only minor detail (ordering, whether contact metrics are per-send) is absent.

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%, so the baseline is 3 and the schema already documents every parameter including the compact field list and pagination limits. The description's status parenthetical ('1 = active, 2 = inactive') refers to the returned field value rather than the string enum on the parameter, which adds slight ambiguity instead of clarifying.

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 (List) and resource (campaigns) scoped to a team, and explicitly distinguishes itself from get_campaign for the full field set. An agent can tell it apart from list_conversations and the mutation siblings without opening a 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?

Gives filtering guidance (status "active"/"inactive") and names get_campaign / the fields param as the escape hatch when the compact set is insufficient. It does not state explicit when-not-to-use conditions beyond that, but the routing to the sibling is clear.

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

list_conversationsList ConversationsA
Read-onlyIdempotent
Inspect

List inbox conversations (email or LinkedIn) with the other party, last activity time, read/archive state, a preview of the latest message (trimmed to 300 characters), and triage context: the contact and their campaign, labels, and the AI category (interested, meeting_request, not_interested, out_of_office…) and sentiment. Use last_message_direction "inbound" to find replies awaiting a response; the preview can still be our own later message, so use get_conversation_messages to read the thread. Default 25 per page, max 100; while pagination.has_more is true, call again with offset = offset + limit.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax conversations per page (default 25, max 100)
fieldsNoFields to return per item: an array of field names, a comma-separated string, or "all". Default (compact): id, platform_type, title, last_activity_at, is_unread, is_archived, identity, last_message, contact, counterpart, campaign, labels, ai_category, sentiment, team_id.
folderNoInbox folder, as in the dashboard: inbox = replies from contacts (no bounces or auto-replies); other = bounces, auto-replies and people who are not contacts. Pass channel with it.
offsetNoOffset for pagination (use when has_more is true)
searchNoSearch in conversation content
statusNoArchive status filter
channelNoWhich inbox: email or linkedin. Default: email when LinkedIn unavailable; otherwise linkedin if omitted.
team_idNoTeam UUID - get from list_teams
identity_idNoFilter by identity UUID
read_statusNoRead vs unread filter
last_message_directionNoinbound = replies from contacts (need our response); outbound = our sent messages (waiting on them)

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely useful behavior beyond that: preview is trimmed to 300 characters, pagination defaults to 25/max 100, and the has_more loop semantics. Return format and preview caveat are disclosed.

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 what is listed, then triage context, then usage guidance and pagination. Dense and information-rich, though the enumeration of returned fields is long; nearly every clause earns its place.

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

Completeness4/5

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

With no output schema, the description carries the return-shape burden, and it does so by enumerating fields and the 300-char preview limit plus pagination contract. Filtering by folder/channel is left to the (fully documented) schema, so nothing critical 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%, so the baseline is 3, but the description adds meaning the schema does not: the concrete meaning of "inbound" as replies awaiting response, the offset = offset + limit pagination formula, and the preview trimming rule. This is more than restating fields.

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+resource (list inbox conversations) and enumerates the returned content fields: counterpart, last activity, read/archive state, preview, labels, ai_category and sentiment. An agent can distinguish it from the single-thread sibling get_conversation 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 Guidelines5/5

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

Gives explicit routing guidance: use last_message_direction "inbound" to find replies awaiting a response, and notes the preview caveat that it may be our own later message, directing the agent to get_conversation_messages to read the thread. It also spells out when to re-call (while pagination.has_more) and with what offset.

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

list_sender_profilesList Sender ProfilesA
Read-onlyIdempotent
Inspect

List sender profiles (warmup tags) for a team. Each profile groups one or more email senders. Use before assign_campaign_sender_profile — pass profile IDs to attach senders to a campaign.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFilter by profile name (partial match)
limitNoMax profiles to return (default 50)
offsetNoOffset for pagination
team_idYesTeam UUID - get from list_teams (required)

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds conceptual context (what a profile is, the warmup-tag concept) but says nothing about pagination behavior or result shape.

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 waste, purpose stated first followed by the entity definition and the workflow pointer. Well front-loaded.

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?

No output schema exists, but for a simple filtered list tool the description plus a fully documented schema covers what an agent needs to invoke it. The only small gap is that return shape/pagination semantics are left entirely to 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 100% and all four parameters are documented there, including the 'get from list_teams' hint on team_id and defaults for limit. The description only alludes to 'profile IDs' in the workflow sentence, adding nothing 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.

Purpose5/5

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

Specific verb+resource ('List sender profiles'), plus a clarifying gloss ('warmup tags') and a definition of what a profile contains ('groups one or more email senders'). This clearly separates it from the mutating sibling create_sender_profile.

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 states the downstream workflow: 'Use before assign_campaign_sender_profile — pass profile IDs to attach senders to a campaign.' Clear context for when to call it, though it gives no exclusions or alternatives for the read case.

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

preview_campaignPreview CampaignA
Read-onlyIdempotent
Inspect

Show the user a campaign draft before creating it: each email with the day it goes out, the schedule, which inboxes send, and anything to fix (shown as a card with a Create campaign button). Nothing is created. Call it with the same team, name, emails, sender profiles and schedule you would pass to setup_outbound_campaign, after writing the copy with the user. Then wait: the user creates it from the card or tells you to, and you call setup_outbound_campaign with create.arguments only if they ask in the conversation.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays to send, e.g. ["monday", "tuesday", "wednesday", "thursday", "friday"]
nameYesCampaign name
hoursNoSending hours in the schedule timezone, e.g. "09:00-17:00"
emailsYesThe emails in order. A follow-up without its own subject replies in the same thread.
team_idYesTeam UUID - get from list_teams
timezoneNoSchedule timezone, e.g. America/Los_Angeles
sender_profile_idsNoSender profiles it will send from — get from list_sender_profiles

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and the description reinforces this with 'Nothing is created' — no contradiction. It adds genuine behavioral context beyond the annotations: the output is rendered as a card with a Create campaign button, and the agent must pause rather than proceed. It stops short of covering persistence or repeat-call behavior, but the annotated safety profile is well corroborated.

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 and the no-side-effect guarantee, then the argument-sourcing rule, then the wait-and-confirm protocol. Dense and mostly waste-free, though the closing sentence about create.arguments is long and could be tightened.

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?

No output schema exists, and the description compensates by describing the preview payload (emails, send days, schedule, inboxes, fixes) and the card UI. Combined with the annotated safety profile and a fully documented schema, an agent has everything needed to call this correctly and know what to do next.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3, but the description adds real value by mapping the parameter set onto a sibling tool ('the same team, name, emails, sender profiles and schedule you would pass to setup_outbound_campaign'), which tells the agent how to source values without re-deriving them. No per-parameter format detail is added beyond that.

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+resource (preview a campaign draft) and enumerates exactly what the preview shows: each email, send day, schedule, sending inboxes, and issues to fix. It is immediately distinguishable from setup_outbound_campaign, which it names as the actual creation step.

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?

Gives explicit sequencing: call this after writing the copy with the user, with the same arguments you would pass to setup_outbound_campaign, then wait for the user to create from the card or tell you to. It also states the exclusion condition — only call setup_outbound_campaign with create.arguments if the user asks in the conversation.

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

send_campaign_testSend Campaign Test EmailsAInspect

Send test emails of a campaign's email steps to the user's own inbox before launch, from one of the campaign's inboxes, with {{variables}} filled from a real contact of the campaign (or contact_id). Nothing is sent to contacts. Steps are numbered as in get_campaign_review; omit step to send every email step. Reply steps use their thread's subject. Subjects get a short "test" suffix. Pass to only to send to another address the user names (for example a teammate). Ask the user to check their inbox before launching.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesCampaign UUID - get from list_campaigns
toNoRecipient (default: the signed-in user's own email)
stepNoOnly this step number (as in get_campaign_review)
variantNoA/B variant to test (default a)
sender_idNoInbox to send from (default: one of the campaign's inboxes)
contact_idNoContact whose details fill the variables (default: one of the campaign contacts)

TDQS

A4.8/5.0
Behavior5/5

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

With readOnlyHint=false and openWorldHint=true already declared, the description still adds substantial behavior: nothing is delivered to contacts, variables are filled from a real contact, reply steps inherit their thread's subject, and test subjects get a 'test' suffix. That is exactly the extra 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?

Long but dense and front-loaded — the core action, the non-delivery guarantee, and the step/sender/variable conventions come in a deliberate order with no filler sentences. Some clauses (subject suffix) are minor detail, but none are pure padding.

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?

No output schema exists, and the description adequately covers what happens (mail arrives in the user's inbox, subject suffixed 'test') plus the operational constraints. 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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning beyond the schema: 'from one of the campaign's inboxes' clarifies the sender_id default, the {{variables}} filling explains contact_id in operational terms, and the step/step-omission convention ties to get_campaign_review.

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?

Opens with a precise verb+resource+scope: sends test emails of a campaign's email steps to the user's own inbox before launch. It distinguishes itself from preview_campaign and get_campaign_review (which it references for step numbering) and explicitly rules out sending to contacts.

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?

States the when ('before launch'), the fallback behavior (omit step to send every email step), the narrow condition for using `to` ('only to send to another address the user names'), and names get_campaign_review as the source of step numbering. An agent can pick this over siblings without inference.

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

send_conversation_messageSend Conversation MessageA
Destructive
Inspect

Send a reply in an existing inbox conversation; it is delivered to the contact immediately by email or LinkedIn and cannot be unsent. Confirm the recipient and message text with the user before calling. For email, sender_id defaults to the inbox the conversation belongs to and subject to "Re: ".

ParametersJSON Schema
NameRequiredDescriptionDefault
ccNoCC recipients for email
idYesConversation UUID
bccNoBCC recipients for email
is_htmlNoWhether message body is HTML
messageYesMessage body
subjectNoEmail subject (default: "Re: <conversation title>")
sender_idNoEmail: inbox to send from (default: the conversation's inbox)

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already flag destructiveHint=true, idempotentHint=false and openWorldHint=true, but the description adds the concrete consequence: delivery is immediate by email or LinkedIn and "cannot be unsent." It also discloses that sender_id and subject fall back to the conversation's inbox/title, which is real behavioral context beyond 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.

Conciseness5/5

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

Three sentences, no filler, with the core action and its irreversible consequence front-loaded before the pre-call confirmation step and the default rules. Every sentence carries distinct information.

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

Completeness4/5

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

For an irreversible send tool with full schema coverage and annotations covering the safety profile, the description supplies the operational essentials (irreversibility, confirmation requirement, sender/subject defaults). Minor omissions remain, such as what a successful send returns or whether cc/bcc apply only to email, but nothing critical 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 seven parameters are already documented in the schema, including the defaults for sender_id and subject that the description repeats. The description adds the "Re: <conversation title>" convention but otherwise does not deepen parameter meaning, so baseline 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 ("Send a reply in an existing inbox conversation") and constrains it to an existing conversation, which cleanly separates it from send_campaign_test and the campaign setup siblings. The delivery channels (email or LinkedIn) further pin down what the tool actually does.

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 operational context: use it for an *existing* conversation, and confirm recipient and message text with the user before calling. It does not explicitly name an alternative (e.g., get_conversation or update_conversation) or state when not to use it, so it stops short of a 5.

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

setup_outbound_campaignSetup Outbound Campaign
Destructive
Inspect

Create a ready-to-use outbound email campaign in one flow: creates the campaign with its emails, assigns sender profiles, optionally imports contacts, marks it complete (not a draft), and optionally activates it. Pass emails, the emails in order: the user sees exactly those when approving the call. Use nodes and edges only for a branching (complex) sequence the user asked for. Ask for team, name, the email copy and sender profiles if not provided. When activate is true the campaign starts emailing enrolled contacts, so confirm that with the user first. Prefer this over create_campaign plus separate steps.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoDays to send, e.g. ["monday", "tuesday", "wednesday", "thursday", "friday"]
nameYesCampaign name
edgesNoOnly with nodes: sequence edges connecting them
hoursNoSending hours in the schedule timezone, e.g. "09:00-17:00"
nodesNoOnly for a branching (complex) sequence; otherwise pass emails. Sequence nodes (startNode, emailNode, waitNode, etc.). Email nodes must use subject_a/body_a.
trackNoEnable open/click tracking
emailsNoThe emails in order (a simple sequence). Each follow-up waits wait_days after the previous email and, without its own subject, replies in the same thread.
team_idYesTeam UUID - get from list_teams
versionNoOnly with nodes: 3 = simple (linear), 2 = complex (branching; permanent). With emails it is always simple.
activateNoWhen true, activate campaign after setup (starts sending to enrolled contacts)
contactsNoOptional contacts to import after campaign creation (same shape as bulk_import_contacts)
timezoneNoSchedule timezone, e.g. America/Los_Angeles
category_idNoOptional campaign category/folder UUID
mark_completeNoWhen true (default), set is_draft false after setup if validation passes
include_catch_allNoInclude catch-all addresses (default true)
sender_profile_idsYesSender profile UUIDs to assign — get from list_sender_profiles
send_to_risk_levelsNoList Health levels to send to. Omit for SAFE/LOW/MEDIUM/HIGH default (Invalid off). null = all.
update_conversationUpdate ConversationA
DestructiveIdempotent
Inspect

Mark an inbox conversation read or unread, or archive it (archived conversations leave the main inbox) or move it back. Use after handling a reply.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesConversation UUID
is_unreadNofalse = mark read, true = mark unread
is_archivedNotrue = archive, false = move back to the inbox

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safety profile (destructiveHint=true, idempotentHint=true, readOnlyHint=false), so the bar is lower. The parenthetical "archived conversations leave the main inbox" adds genuine semantic value beyond the annotations by explaining what archiving actually does.

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

Conciseness4/5

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

Two compact sentences with the actions front-loaded and no filler. The "or ... or ..." construction with an inserted parenthetical is slightly clunky but still efficient.

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?

A three-parameter mutation with full schema coverage and safety annotations; the description covers all three operations plus usage timing, which is nearly everything an agent needs. No output schema exists, so return values need not be explained, though permission/prerequisite details are absent.

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 description largely restates the schema's own boolean semantics ("read or unread", "archive it ... or move it back", "after handling a reply"). With the schema already doing the heavy lifting, the baseline of 3 is appropriate.

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 (update) and resource (conversation) and enumerates the three state changes it can perform: read/unread, archive, and unarchive. It is distinguishable from get_conversation and send_conversation_message, though it never names a sibling to sharpen the boundary.

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?

"Use after handling a reply" gives a clear situational trigger for invoking the tool. It offers no explicit exclusions or named alternatives, so it falls short of a full when/when-not rubric.

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

update_senderUpdate SenderA
DestructiveIdempotent
Inspect

Update a sender (inbox). Pass only fields to change: warm (start or stop warmup), sender_profile_id (which sender profile it sends in), disabled, max_per_day, signature, forward_to, forward_rules, forward_unsubscribes, etc. When forward_rules is null or omitted, forward_to applies; non-empty forward_rules overrides per-rule.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesSender UUID - get from list_senders
warmNotrue starts warmup (about 14 days before full campaign volume), false stops it. Starting needs the 7-day trial or a plan; if missing, the error includes add_card_url for the user.
send_asNoDisplay name for sent emails
disabledNoWhether sender is disabled
reply_toNoReply-to email address
signatureNoEmail signature (HTML or plain text)
forward_toNoLegacy single forward destination when forward_rules is empty
max_per_dayNoDaily send limit
forward_rulesNoReply forwarding rules: each rule has emails (comma-separated) and optional label_ids. label_ids=null forwards all replies to that destination; non-empty label_ids forward only when the conversation has a matching Super Inbox label.
sender_profile_idNoSender profile to put this inbox in (campaigns send from sender profiles); null removes it. Get IDs from list_sender_profiles or create_sender_profile.
forward_unsubscribesNoWhether unsubscribe replies should be forwarded to the configured sender forwarding destinations. When true, unsubscribe replies ignore label filters and forward to every configured destination.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover safety (destructiveHint=true, idempotentHint=true, openWorldHint=true), so the bar is lower. The description adds real behavior beyond that: it is a patch-style update ('pass only fields to change') and it resolves the forward_to/forward_rules precedence, which the 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?

Two sentences, front-loaded with the verb and update semantics, followed by the field list and precedence rule. Dense but every clause carries information; no redundant restatement of the title.

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 an 11-parameter mutation tool with no output schema, the description covers the main ambiguities (partial update, forward precedence) and the schema covers the rest. It omits confirmation of return shape, but no output schema exists so that is acceptable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3. The description goes beyond the schema by explaining the forward_rules-vs-forward_to interaction and the precedence rule ('non-empty forward_rules overrides per-rule'), which the schema descriptions do not state as a combined rule.

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 (Update) and resource (sender/inbox) with a clarifying parenthetical, so an agent can distinguish it from create_sender_profile and list_sender_profiles. It does not explicitly name a sibling alternative, but the purpose itself is unambiguous.

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

Usage Guidelines3/5

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

Gives partial-update guidance ('Pass only fields to change') and a rule for choosing between forward_to and forward_rules, which is genuine usage direction. However, there is no explicit when-to-use vs when-not or reference to an alternative tool for related operations.

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. 1 tool update
    • Changedsetup_outbound_campaign3 fields changed
      • changedInput schema / properties / edges / items / properties / sourceHandle / description
        Previous value: -"Branch handle for ifNode/switchNode outputs"New value: +"Branch handle for ifNode/switchNode outputs: \"true\" (yes) or \"false\" (no) for an ifNode, \"case_<id>\" for a switchNode case"
      • changedInput schema / properties / nodes / items / properties / data / description
        Previous value: -"Node settings. Email nodes use subject_a/body_a (and _b/_c/_d for A/B), wait, wait_unit."New value: +"Node settings. Email nodes use subject_a/body_a (and _b/_c/_d for A/B), wait, wait_unit. Other step types and their fields are listed in the update_campaign_sequence description and `supersend docs`."
      • changedInput schema / properties / nodes / items / properties / type / description
        Previous value: -"Node type: startNode, emailNode, waitNode, ifNode, switchNode, etc."New value: +"Node type: startNode, stopNode, emailNode, waitNode, ifNode, switchNode, httpApiRequestNode, moveToAnotherCampaignNode, taskNode, noteNode, or a linkedin*Node (profile visit, like, follow, comment, connection, connection with message, message, InMail, withdraw, wait until connected)"
  2. 1 tool update
    • Changedget_inbox_checkout_link2 fields changed
      • changedInput schema / properties / domains / description
        Previous value: -"New domains to buy, each with the inbox provider"New value: +"Domains to buy or already owned, each with the inbox provider"
      • changedInput schema / properties / domains / items / properties / domain / description
        Previous value: -"New domain to buy, e.g. tryacme.com (.com, .net or .org)"New value: +"New domain to buy (.com, .net or .org), or one the organization already has, e.g. tryacme.com"
  3. 1 tool update
    • Changedget_inbox_checkout_link6 fields changed
      • changedInput schema / properties / domains / items / properties / provider / description
        Previous value: -"Inbox provider for this domain"New value: +"Inbox provider for this domain (azure = 50 inboxes for $49/month)"
      • changedInput schema / properties / domains / items / properties / provider / enum
        Previous value: -[
        -  "smtp",
        -  "outlook",
        -  "google"
        -]New value: +[
        +  "smtp",
        +  "outlook",
        +  "google",
        +  "azure"
        +]
      • addedInput schema / properties / mailboxes / default
        Added value: +[]
      • changedInput schema / properties / mailboxes / description
        Previous value: -"Inboxes to create on those domains"New value: +"Inboxes to create on those domains (azure domains: optional, names only)"
      • removedInput schema / properties / mailboxes / minItems
        Removed value: -1
      • changedInput schema / required
        Previous value: -[
        -  "domains",
        -  "mailboxes"
        -]New value: +[
        +  "domains"
        +]
  4. 19 tool updates
    • First observedactivate_campaign
    • First observedbulk_import_contacts
    • First observedcomplete_campaign
    • First observedcreate_sender_profile
    • First observeddeactivate_campaign
    • First observedget_campaign_review
    • First observedget_campaign_stats
    • First observedget_conversation
    • First observedget_inbox_checkout_link
    • First observedget_setup_status
    • First observedlist_campaigns
    • First observedlist_conversations
    • First observedlist_sender_profiles
    • First observedpreview_campaign
    • First observedsend_campaign_test
    • First observedsend_conversation_message
    • First observedsetup_outbound_campaign
    • First observedupdate_conversation
    • First observedupdate_sender

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    A
    maintenance
    Enables AI agents to send transactional email, authenticate sending domains, track delivery, and diagnose deliverability issues programmatically.
    13
    33 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to send emails, manage campaigns, subscribers, templates, and domains via the SendCraft email API.
    26
    7 npm
    MIT
  • F
    license
    B
    quality
    Not graded
    maintenance
    Enables sending emails and managing webhooks through the SendLayer API. Supports plain text and HTML emails with attachments, CC/BCC recipients, and webhook event management for email delivery tracking.
    5
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI agents to programmatically manage email outreach campaigns, leads, domains, senders, and webhook events, as well as send emails, through the Model Context Protocol over HTTP.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources