Run multi-channel outreach: campaigns, contacts, conversations, and AI-drafted messages.
Connect Remote server
claude mcp add --transport http iris https://api.iris-ai.dev/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
{
"mcpServers": {
"iris": {
"url": "https://api.iris-ai.dev/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}
{
"servers": {
"iris": {
"type": "http",
"url": "https://api.iris-ai.dev/mcp",
"headers": {
"Authorization": "Bearer <YOUR_API_KEY>"
}
}
}
}
Settings > Connectors > Add custom connector
URL: https://api.iris-ai.dev/mcp
Replace the values in angle brackets with your own. Keys stay on your machine; we never see them.
Tools 80 found in our last check
list_campaignslist all campaigns with optional filtering by status. requires read scope.
create_campaigncreate a new outreach campaign. requires write scope.
get_campaignget a campaign by ID with stats. requires read scope.
update_campaignupdate a campaign's details. requires write scope.
delete_campaignsoft-delete a campaign (sets status to deleted). requires write scope.
list_campaign_contactslist contacts in a campaign with optional status filter. requires read scope.
add_campaign_contactsadd contacts to a campaign, by id or by creating them inline. a campaign needs at least one contact before it can be activated. requires write scope.
list_campaign_chatslist your iris chat sessions (the conversational campaign builder), most recently updated first, max 100. the live chat turn itself is a server-sent-events stream outside this tool set. requires read scope.
get_campaign_chat_messageslist the messages in a chat session, oldest first. `content` is an array of opaque blocks (text / tool_use / tool_result). requires read scope.
rename_campaign_chatrename a chat session. requires write scope.
delete_campaign_chatsoft-delete a chat session. requires write scope.
get_campaign_usageget usage limits and current counts for a campaign. requires read scope.
analyze_campaignqueue AI analysis of a campaign to generate its target profiles: from the product for product_promotion campaigns, from goal_description for any other campaign. runs asynchronously; poll get_campaign until analysis_status is completed, then search_campaign_contacts. requires wri…
list_target_profileslist target profiles for a campaign. requires read scope.
create_target_profilecreate a target profile for a campaign. requires write scope.
delete_target_profiledelete a target profile from a campaign. requires write scope.
list_contactslist all contacts with optional search. requires read scope.
create_contactcreate a new contact. requires write scope.
get_contactget a contact by ID. requires read scope.
get_contact_handlesthe contact's social handles (instagram/twitter/tiktok) - verify a handle write landed. requires read scope.
update_contactupdate a contact's details. requires write scope.
delete_contactsoft-delete a contact. requires write scope.
bulk_import_contactsimport multiple contacts at once, optionally adding them to a campaign. requires write scope.
get_contact_usageget contact usage limits and current counts for the billing period. requires read scope.
list_contact_conversationslist all conversations for a specific contact. requires read scope.
list_conversationslist conversations with optional filtering. requires read scope.
get_conversationget a conversation by ID with contact and campaign details. requires read scope.
create_conversationfind-or-create a conversation for a contact - the hub conversation by default, or the campaign-scoped thread when campaign_id is passed (contact must be in that campaign). requires write scope.
create_conversation_messagecreate a message in a conversation. status pending_approval places it in the human review queue instead of sending. requires write scope.
get_conversation_messagesget all messages in a conversation. requires read scope.
mark_conversation_readmark a conversation as read. requires write scope.
update_conversationupdate a conversation's status: active, archived, or closed. requires write scope.
get_engagement_metricsget overall engagement metrics across all conversations. requires read scope.
list_pending_messageslist messages awaiting approval before sending. requires read scope.
approve_messageapprove a pending message for sending. requires send scope.
reject_messagereject a pending message with an optional reason. requires send scope.
retry_messageretry sending a failed message. requires send scope.
mark_message_sentmark a pending manual-channel draft (tiktok, or instagram cold first-touch) as sent outside the platform. API-sendable drafts must use approve_message instead. requires write scope.
submit_message_feedbacksubmit feedback on an AI-generated message to improve future generations. requires send scope.
bulk_message_actionapprove or reject multiple messages at once. requires send scope.
generate_contentgenerate AI outreach content (email or DM draft) for a contact/campaign. the contact's tags + enrichment_data feed the generation context automatically. requires generate scope.
generate_campaign_contentgenerate campaign-level outreach content (email sequence, templates) from a campaign brief. content-first: takes the strategy inline, not a campaign id. requires generate scope.
analyze_responseanalyze an inbound message using AI to determine sentiment, intent, and suggested actions. requires generate scope.
get_ai_usageget AI generation usage limits and current counts for the billing period. requires read scope.
search_contactskick off a multi-source contact discovery job (Apify-backed). returns a job_id and contacts when ready (waits up to 90s; if status=queued, poll get_discovery_job). closed source list: google_maps, instagram, twitter, tiktok, reddit. requires generate scope.
search_campaign_contactssearch for contacts matching a campaign's target profiles. requires generate scope.
get_discovery_jobget the status, progress, and contacts of a discovery job. status values: pending, running, completed, failed. contacts populated only when status=completed. requires read scope.
list_discovery_sourceslist available discovery data sources and their status. requires read scope.
get_analytics_overviewget a high-level overview of all campaign analytics. requires read scope.
get_campaign_analyticsget detailed analytics for a specific campaign. requires read scope.
get_performance_metricsget email performance metrics over time. requires read scope.
get_response_timeget average response time analytics. requires read scope.
get_contact_typesget breakdown of contacts by type/source. requires read scope.
get_billing_plansget all available billing plans with pricing and feature limits. requires read scope.
list_connected_accountslist all connected social media accounts. requires read scope.
check_channel_availabilitycheck which outreach channels are available and configured. requires read scope.
send_channel_messagesend a message through a specific channel in a conversation. requires send scope.
list_notificationslist user notifications. requires read scope.
update_notificationupdate a notification (e.g., mark as read). requires write scope.
delete_notificationdelete a notification. requires write scope.
mark_all_notifications_readmark all notifications as read. requires write scope.
get_usageget your current plan, quota usage (campaigns used/remaining this period), and billing period (requires read scope)
get_changelogmachine-readable release history (public) - version, date, type, summary, migration notes on breaking entries. the X-Notice header's structured backstory.
get_autopilot_statusget autopilot status: whether it's configured, the current config, the pending-review count for the standing campaign, and the latest run's step results. requires read scope.
configure_autopilotcreate or update the autopilot config (merge: only the fields you send change; first call creates the config with defaults). autopilot is review-only - drafts wait in the approval queue, nothing sends without approval. requires write scope.
run_autopilot_nowqueue a manual autopilot run immediately (insights refresh + discovery top-up on the standing campaign). steps that already completed today are skipped. rate limited to 2 per hour. requires generate scope.
get_responderget responder status: whether it's configured, the current config, connection and pause status, and activity counts for the last 30 days. requires read scope.
configure_respondercreate or update the responder config (merge: only the fields you send change; the first call creates the config). with auto_reply on, replies are sent without review. Instagram only allows a reply within 24 hours of the person's last message, and only to someone who wrote first…
list_responder_activitylist the responder's activity log (replies sent, handoffs, skips, and failures), newest first. requires read scope.
get_conversation_responderget the responder's status for a single conversation: active, paused, handed off, or never seen, plus the reason and reply counts. requires read scope.
set_conversation_responderpause or resume the responder for a single conversation. pausing works on any conversation; resuming is refused after the person asked iris to stop. requires write scope.
list_responder_comment_triggerslist the account's comment triggers. a comment trigger watches for a keyword in instagram comments and sends the commenter one automatic DM. requires read scope.
create_responder_comment_triggercreate a comment trigger. when someone comments the keyword on the account's instagram post, iris sends that person one direct message: the owner's message as written, followed by the notice that it is automated. instagram allows one such message per comment, within 7 days of th…
update_responder_comment_triggerupdate a comment trigger's keyword, message, media_id, or enabled state. give at least one field besides id. someone else's trigger, or an id that isn't a comment trigger on this account, is a 404. requires write scope.
delete_responder_comment_triggerdelete a comment trigger. requires write scope.
list_responder_postslist the account's recent instagram posts with their media ids, for limiting a comment trigger to one post. requires read scope.
list_audienceslist the audience library - reusable target profiles created once and attachable to any campaign. requires read scope.
create_audiencecreate a library audience profile manually. names are unique per library (case-insensitive). requires write scope.
generate_audiencesAI-generate audience profiles from a product (scrape + analysis) into the library. generated names already in the library are skipped, not overwritten. rate limited to 5 per hour. requires generate scope.
attach_audience_to_campaigncopy a library audience into a campaign. the response is the campaign's own copy (a target profile) - editing it never touches the library master. if the campaign already has a same-named profile, the existing copy is returned. requires write scope.
Headers
| Name | Description |
|---|---|
AuthorizationRequired, secret | Iris API key, sent as a Bearer token. Its scopes apply. |
Details
| Endpoint | https://api.iris-ai.dev/mcp (Streamable HTTP) |
| Package | @jclvsh/[email protected] (NPM, stdio) |
| First published | 12 Nov 2026 |
| Last updated | 12 Nov 2026 |
| Registry name | io.github.JCLVSH/iris |
More communication servers See all
Listing data from the official MCP registry. Status and tools from NestDaddy's daily check. Browse all MCP servers.
