Skip to content

MCP Server (AI Integration)

PhishSpot ships an MCP (Model Context Protocol) server, so an AI client such as Claude can drive PhishSpot on your behalf — using natural language, against the same data and rules as the web app. The tool surface now mirrors most of what a human can do in the admin app: browse the template library, build and schedule campaigns, upload hosted images, manage contacts/groups/courses/domains/webhooks/autopilots, and read every result and trend.

The MCP server is available at:

https://platform.phishspot.com/mcp

It speaks JSON-RPC over HTTP. Point any MCP-capable client at that URL using the HTTP transport.

The MCP server reuses PhishSpot API tokens. A token must be explicitly granted MCP access.

  1. Go to Settings → API Tokens → New Token.
  2. Give it a name and tick Allow MCP access.
  3. Copy the token value (shown once).

For Claude Code, run (replace YOUR_TOKEN):

Terminal window
claude mcp add --transport http phishspot https://platform.phishspot.com/mcp \
--header "Authorization: Bearer YOUR_TOKEN"

For Claude Desktop or another client, add a server entry:

{
"mcpServers": {
"phishspot": {
"type": "http",
"url": "https://platform.phishspot.com/mcp",
"headers": { "Authorization": "Bearer YOUR_TOKEN" }
}
}
}

29.4 Safety: what sends and what doesn’t

Section titled “29.4 Safety: what sends and what doesn’t”

Almost everything the AI can do is read-only or build-only. The build_*, create_* and set_* campaign tools prepare a campaign up to the review step and never send email to recipients — a person launches each campaign from the PhishSpot UI.

A small, clearly-labelled set of action tools can trigger real email, so an AI can run a campaign end-to-end when you ask it to. Their descriptions open with a warning, and they require an admin/editor role:

Action toolEffect
schedule_campaignSends real email — schedules a ready campaign to actually launch at a given time.
reschedule_campaignSends real email — moves a scheduled campaign to a new send time.
start_autopilotStarts a live program — activates an autopilot that generates and sends recurring campaigns on a schedule.

cancel_schedule, pause_autopilot and stop_autopilot are the safe counterparts — they stop sends. Adding a sending domain provisions it and returns nameservers to set at your registrar; it does not register or buy the domain.

Almost every account-scoped tool takes an account_id (acct_…). Call whoami first to discover the accounts and roles your token can use. Tools are grouped below by capability.

ToolWhat it does
whoamiList the authenticated user and the accounts/roles the token can act on.
list_sending_domainsList active and provisioning sending domains for an account.
provision_sending_domainAdd a BYOD sending domain and return the nameservers to set at the registrar.
check_sending_domainPoll a sending domain’s delegation, mail records, and whether it is sendable.
list_platform_domainsList every domain visible to the account (shared + BYOD) with state and sendability.
get_platform_domainFull detail for one domain: verification status, expected DNS records, diagnostics, block reason.
ToolWhat it does
list_contactsList contacts in an account (paginated).
import_contactsImport contacts from CSV or JSON; the groups column models waves/segments.
update_contactUpdate a contact’s fields and/or replace its group membership.
delete_contactsDelete contacts (skips any locked by an active campaign).
list_groupsList contact groups in an account.
create_groupCreate a new contact group.
delete_groupDelete a group (unless it is locked by an active campaign).
add_contacts_to_groupAdd contacts to a group (skips duplicates).
remove_contacts_from_groupRemove contacts from a group.
ToolWhat it does
list_phishing_templatesList curated or custom templates, filterable by category and search.
get_phishing_templateGet one template’s full email + landing HTML/CSS and post-click action.
list_phishing_categoriesList the template category tree (only leaf categories hold templates).
build_campaign_from_templateBuild a draft campaign from a template; optionally add all contacts and stop at review. Never sends.
ToolWhat it does
list_coursesList courses usable by the account (own + global) with block counts and completion stats.
get_courseGet one course’s details and an ordered summary of its blocks.
ToolWhat it does
upload_mediaUpload an image or CSS file (from a URL or base64) and get a hosted URL for emails/landings.
list_mediaList the account’s hosted media.
delete_mediaDelete a media file.
ToolWhat it does
list_campaignsList campaigns with state and wizard progress.
get_campaignFull status of one campaign, including what still blocks launch.
create_campaignCreate a draft campaign (settings).
set_campaign_emailSet the email subject and HTML body.
set_campaign_landingSet the landing page and sending/landing domain.
set_campaign_post_clickSet the post-click action (training, awareness page, or redirect).
add_campaign_recipientsAdd recipients (all, a group, or specific contacts). Leaves the campaign at review.
build_campaign_from_specBuild a whole draft campaign in one call (settings → recipients).
duplicate_campaignDuplicate a campaign into a fresh draft (with recipients). Never sends.
ToolWhat it does
schedule_campaign⚠ Sends real email — schedule a ready campaign to launch at a given time.
reschedule_campaign⚠ Sends real email — move a scheduled campaign to a new send time.
cancel_scheduleCancel a pending scheduled send, returning the campaign to draft.
ToolWhat it does
get_campaign_resultsEngagement funnel plus per-group and per-department breakdowns.
get_campaign_recipientsPer-recipient delivery stage, training status and reply flag (filterable).
get_recipient_timelineChronological event timeline for one contact in a campaign.
get_campaign_repliesReplies recipients sent back to the phishing email.
list_account_trendsPhishing-susceptibility trends across campaigns over a date range.
list_eventsRaw engagement events, filterable by campaign / contact / type.
list_reported_messagesSuspicious emails employees reported (sender/subject metadata only).
ToolWhat it does
list_webhook_endpointsList outbound webhook endpoints.
get_webhook_endpointOne endpoint plus its recent deliveries (signing secret masked).
create_webhook_endpointCreate a (disabled) endpoint; returns the signing secret once.
update_webhook_endpointUpdate an endpoint’s name, URL or event subscriptions.
delete_webhook_endpointDelete an endpoint and its delivery history.
toggle_webhook_endpointEnable or disable an endpoint.
list_webhook_event_typesList the event types you can subscribe to (no account needed).
ToolWhat it does
list_autopilotsList autopilot programs and their state/progress.
get_autopilotOne autopilot’s config, target groups and recent campaigns.
create_autopilotCreate an autopilot in draft. Does not start it.
update_autopilotUpdate an editable (non-stopped) autopilot.
delete_autopilotDelete an autopilot (not while it is running).
start_autopilot⚠ Starts a live program that sends recurring phishing campaigns on a schedule.
pause_autopilotPause a running autopilot.
stop_autopilotStop an autopilot permanently (irreversible).

To send a campaign from your own domain (for example your-org.com):

  1. Ask the AI to call provision_sending_domain with the domain.
  2. Set the returned nameservers at your domain registrar.
  3. Poll with check_sending_domain until it reports the domain is active and sendable.

Once active, the domain appears in list_sending_domains / list_platform_domains and can be used as a campaign’s sending/landing domain. See also Domains.

29.7 Example: build a campaign from a template

Section titled “29.7 Example: build a campaign from a template”

A typical AI-driven flow, all build-only until you choose to schedule:

  1. whoami → pick the account_id.
  2. list_phishing_categories and list_phishing_templates → choose a template.
  3. build_campaign_from_template (optionally quick_launch) → a draft campaign with recipients, sitting at review.
  4. get_campaign → confirm there are no readiness errors.
  5. Either launch it yourself in the UI, or ask the AI to schedule_campaign for a specific time (this sends for real).
  6. After it runs, get_campaign_results, get_campaign_recipients and list_account_trends summarize who fell for it.

Every tool ships live on the platform with each deploy — no extra setup, no migration, and no per-tool configuration is required.