MCP API Reference
This page documents MCP tools, required inputs, and what they return. All tools are invoked via the JSON-RPC gateway using tools/call.
Authentication can be either Authorization: Bearer ... via OAuth or X-API-Key for direct script access.
Download the LLM quick reference: mcp-llm.md.
General Request Envelope
{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "TOOL_NAME",
"arguments": { }
}
}Tool Reference
list_products
- Arguments: none
- Returns: list of products (id, name, description)
create_product
- Required: name
- Optional: url, description, features, proof_points, coaching_points, insights, documentation_urls, metadata
- Returns: created product id and name
list_personas
- Arguments: none
- Returns: list of personas (id, name, description)
create_persona
- Required: name
- Optional: description, traits, voice_tone, insights
- Returns: created persona id and name
list_senders
- Arguments: none
- Returns: email account IDs and LinkedIn sender usernames
search_targeting
- Required: query, type
- type values: location, title, industry, function, seniority
- Returns: list of matching labels and IDs
preview_leads
- Optional: locations, job_titles, functions, seniority, industries, companies, keywords, company_size_min, company_size_max, qualifiers
- Returns: estimated total and sample leads
preview_email
- Required: product_id, persona_id
- Optional: sample_lead (required fields: name, title, company — optional: email, linkedin_url, notes), step (default 1), instructions, outreach (language, framework), signature
- Returns: subject and generated HTML email body
- Tip: pass a lead from preview_leads as sample_lead for a realistic preview
create_campaign
- Required: name, product_id, persona_id
- Optional: targeting fields (locations, job_titles, functions, seniority, industries, companies, keywords, company_size_min, company_size_max, qualifiers)
- Optional: sender_ids, sender_emails, sender_usernames, sender_signatures
- Optional: workflow, settings, outreach, max_leads, autopilot
- Optional (CSV campaigns): type=csv, csv_content, csv_filename, csv_url
- Defaults: max_leads=200, workflow=4 emails, framework=classic
create_campaign_draft
- All fields optional; partial config allowed
- Optional (CSV): type=csv, csv_content, csv_filename, csv_url
- Optional: sender_signatures for per-sender custom signatures
- Returns: draft campaign id
finalize_campaign_draft
- Required: campaign_id, name, product_id, persona_id
- Optional: same targeting/setting fields as create_campaign, sender_signatures, csv_url
- Returns: finalized campaign id
get_csv_upload_url
- Optional: filename
- Returns: uploadUrl, uploadMethod=POST, formFields, gcsUrl (pass as csv_url), maxSizeBytes=2097152
- Enforcement: filename is sanitized to .csv and upload size is capped at 2 MB
list_campaigns
- Arguments: none
- Returns: campaigns with metrics summary (sent, opened, clicked, responses, meetings, rates, leads)
get_campaign
- Required: campaign_id
- Returns: campaign config and detailed metrics
Signatures
Two mutually exclusive modes:
- Campaign-level: set
outreach.signaturewith structured fields (fullName, title, organization, website). Applied to all senders. - Per-sender: pass
sender_signatures— an object keyed by sender ID or email, mapping to a plain-text signature string. Automatically enables custom signatures. All resolved senders must have an entry (partial config is rejected).
CSV Campaigns
Intended for small, programmatically generated lists. Use either inline csv_content or stateless pre-upload: call get_csv_upload_url, POST your CSV to uploadUrl using the returned formFields, then pass gcsUrl as csv_url. For large CRM exports or bulk imports, use the web UI.
Notes
- max_leads must be between 1 and 2500 (defaults to 200 if omitted)
- Targeting resolution is strict for resolvable fields (locations, job_titles, industries, functions, seniority)
- Senders can be passed as IDs, resolved from emails, or resolved from LinkedIn usernames
- Rate limits: preview_leads 20/day, campaign creation 10/day