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.signature with 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