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.
| Table | Change it with |
|---|---|
contacts | add_contact, update_contact_fields, delete_contact, bulk_edit_contacts, sql_bulk_contacts |
campaigns, campaign_steps | create_campaign_draft, update_campaign, start_campaign, stop_campaign, delete_campaign, add_campaign_step, update_campaign_step, delete_campaign_step |
ab_variants | list_ab_variants, create_ab_variant, update_ab_variant, delete_ab_variant |
campaign_leads | bulk_edit_contacts, sql_bulk_contacts (add_to_campaign, remove_from_campaign), add_segment_to_campaign, set_campaign_segments, set_lead_hold |
mailboxes | update_mailbox, set_mailbox_warmup, set_mailbox_tracking_domain, disconnect_mailbox (connecting one needs its credentials, so it stays in the dashboard and CLI) |
warmup_health | submit_warmup_appeal |
segments | create_segment, update_segment, delete_segment, set_segment_members |
categories, contact_categories | list_categories, create_category, update_category, delete_category, add_tag, remove_tag, sql_bulk_contacts (add_tag, remove_tag) |
suppressions | add_suppressions, remove_suppression, sql_bulk_contacts (suppress) |
meetings | log_meeting, delete_meeting |
product_events | record_event (and event_test for a dry run) |
goals | goal_create, goal_update, goal_archive |
people | delete_person |
attribution_credits | correct_attribution, restore_attribution |
deals, deal_stages | create_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.
