SendsetsDocs

Agent tools

Call the SendSets tool registry over REST without an MCP client.

The REST tool surface is the same focused registry served by MCP:

GET /v1/ai/tools
POST /v1/ai/tools/:name/call
Authorization: Bearer ssk_...

Discovery only returns tools allowed by the credential's scopes. Send tools are included and return executed, awaiting_approval, or blocked; policy checks are additional to API scopes.

The focused write tools are create_run, cancel_run, start_campaign, stop_campaign, compose_email, and send_reply. Read operations include get_run, list_runs, and the campaign, sequence, lead, mailbox, warmup, inbox, analytics, suppression, and webhook tools.

The acquisition tools read and shape how outreach turns into customers: events_schema, event_test (a dry run that stores nothing), goals_list, goal_create, goal_preview, prospects_search, prospect_timeline, acquisition_summary, acquisition_breakdown, attribution_summary, attribution_breakdown, attribution_explain, event_trends, and event_funnel. They follow the same scopes as their REST routes in Goals and acquisition: reads need READ_ANALYTICS (prospects and attribution explanations also READ_CONTACTS), event_test needs WRITE_EVENTS, and goal_create needs MANAGE_ACQUISITION.

The outbound insight tools read the raw send ledger: outbound_metrics (headline metrics with the previous period and a daily series), outbound_breakdown (by campaign, mailbox, step, variant, weekday, hour, offer, angle, CTA, or a copy tag such as subject_type), and mailbox_scorecard (every mailbox ranked against similar-volume peers in the workspace and on the instance). All three need READ_ANALYTICS, like their REST routes in Analytics and audit.

The lead database tools read every contact with its outreach status across campaigns, role, and company: lead_database_search, lead_database_companies, and audience_coverage (how much of an ICP has been contacted and how many fresh, reachable leads remain). They take segment conditions and need READ_CONTACTS, like their REST routes in Lead database.

The SQL tools let an agent write its own read-only queries over the workspace: sql_schema, sql_examples, sql_estimate, and sql_query. They need both READ_ANALYTICS and READ_CONTACTS; what they can reach and how they are bounded is in Query your data with SQL.

Reading and changing each table

Every table the SQL tools read can also be changed where people change it, through a typed tool that calls the same service as its REST route, under the same permission, and is written to the audit log (so teammates' dashboards update live). SQL itself never writes. Tables the platform records on its own (sends, the send ledger, link clicks, warmup statistics, campaign logs, conversions) are read-only for agents as they are for people.

TableChange it with
contactsadd_contact, update_contact_fields, delete_contact, bulk_edit_contacts, sql_bulk_contacts
campaigns, campaign_stepscreate_campaign_draft, update_campaign, start_campaign, stop_campaign, delete_campaign, add_campaign_step, update_campaign_step, delete_campaign_step
ab_variantslist_ab_variants, create_ab_variant, update_ab_variant, delete_ab_variant
campaign_leadsbulk_edit_contacts, sql_bulk_contacts (add_to_campaign, remove_from_campaign), add_segment_to_campaign, set_campaign_segments, set_lead_hold
mailboxesupdate_mailbox, set_mailbox_warmup, set_mailbox_tracking_domain, disconnect_mailbox (connecting one needs its credentials, so it stays in the dashboard and CLI)
warmup_healthsubmit_warmup_appeal
segmentscreate_segment, update_segment, delete_segment, set_segment_members
categories, contact_categorieslist_categories, create_category, update_category, delete_category, add_tag, remove_tag, sql_bulk_contacts (add_tag, remove_tag)
suppressionsadd_suppressions, remove_suppression, sql_bulk_contacts (suppress)
meetingslog_meeting, delete_meeting
product_eventsrecord_event (and event_test for a dry run)
goalsgoal_create, goal_update, goal_archive
peopledelete_person
attribution_creditscorrect_attribution, restore_attribution
deals, deal_stagescreate_deal, update_deal, move_deal_stage, delete_deal, create_pipeline_stage, update_pipeline_stage, delete_pipeline_stage

Campaign spend, which the cost-per-customer reports read, is set with set_campaign_spend and removed with delete_campaign_spend.

sql_bulk_contacts joins the two halves: a read-only query picks the contacts (it returns their id, plus email for suppress) and one typed action applies to all of them: add_tag, remove_tag, add_to_campaign, remove_from_campaign, subscribe, unsubscribe, suppress, or delete. Without confirm: true it is a dry run that reports how many contacts would change and a sample; at most 10,000 contacts per call. It needs READ_ANALYTICS, READ_CONTACTS, and BULK_CONTACTS.

The new write tools follow their REST routes' scopes: A/B variants need WRITE_CAMPAIGNS (manage_settings), categories and meetings WRITE_CONTACTS, record_event WRITE_EVENTS, and the goal, person, attribution and spend tools MANAGE_ACQUISITION. record_event takes an idempotency_key, so a retry records the event once.

Human approval operations are not tools. They are JWT-only REST actions under /v1/approvals, so an agent credential cannot approve its own work.

curl -sS http://localhost:8080/v1/ai/tools/create_run/call \
  -H "Authorization: Bearer $SENDSETS_TOKEN" \
  -H 'Content-Type: application/json' \
  -d '{"arguments":{"idempotency_key":"agent-42","request":{"name":"Founders","intent":"launch"}}}'

The legacy CRM, forms, automation, advisor, and web-research tools are not registered by default. SENDSETS_ENABLE_EXTENDED_SURFACES=true opts an instance back into those unsupported surfaces.

On this page