iris
Registry code: 803fe3b65bd29c99
Run multi-channel outreach: campaigns, contacts, conversations, and AI-drafted messages.
from a public catalogue that lists it, not from the operator
- endpoint
- https://api.iris-ai.dev/mcp
- protocol
- streamable-http ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is iris live?
- Yes — it answered the hub's last check (checked 4h ago). It answered 100% of checks over the last 30 days.
- Is iris free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does iris have?
- 81 tools: list_target_profiles, get_contact_handles, get_engagement_metrics, get_contact_types, run_autopilot_now, get_responder, configure_responder, list_campaigns, ….
- Is iris safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 81 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
check_channel_availability auth-required 4h ago
check which outreach channels are available and configured. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 lineslist_target_profiles unknown never probed
list target profiles for a campaign. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" } }, "additionalProperties": false }arguments 15 linesget_contact_handles unknown never probed
the contact's social handles (instagram/twitter/tiktok) - verify a handle write landed. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "contact ID" } }, "additionalProperties": false }arguments 15 linesget_engagement_metrics unknown never probed
get overall engagement metrics across all conversations. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_contact_types unknown never probed
get breakdown of contacts by type/source. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesrun_autopilot_now unknown never probed
queue 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_responder unknown never probed
get responder status: whether it's configured, the current config, connection and pause status, and activity counts for the last 30 days. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesconfigure_responder unknown never probed
create 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. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "enabled": { "type": "boolean", "description": "thread Instagram DMs from anyone into the inbox. turning it off also turns auto_reply off. true clears any pause state." }, "auto_reply": { "type": "boolean", "description": "let iris send replies itself, with no review. requires enabled, and either instructions or a profile background to answer from." }, "disclosure": { "anyOf": [ { "type": "string", "maxLength": 200, "minLength": 10 }, { "type": "null" } ], "description": "the line that says the reply is automated, sent once per conversation with the first reply; null uses the default" }, "booking_url": { "anyOf": [ { "type": "string", "format": "uri", "maxLength": 500 }, { "type": "null" } ], "description": "shared when someone asks to talk or book (https url); null to unset" }, "instructions": { "anyOf": [ { "type": "string", "maxLength": 4000 }, { "type": "null" } ], "description": "what you offer, prices, answers to common questions, tone; null to unset" }, "qualifying_questions": { "type": "array", "items": { "type": "string", "maxLength": 200 }, "maxItems": 5, "description": "asked one per message, in order, before the booking link is shared (max 5 items)" }, "max_replies_per_conversation": { "type": "integer", "maximum": 30, "minimum": 1, "description": "after this many automatic replies the conversation is handed to you (default 8)" } }, "additionalProperties": false }arguments 68 lineslist_campaigns unknown never probed
list all campaigns with optional filtering by status. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "page": { "type": "integer", "description": "page number (default 1)", "exclusiveMinimum": 0 }, "status": { "enum": [ "draft", "active", "paused", "completed", "deleted" ], "type": "string", "description": "filter by campaign status" }, "page_size": { "type": "integer", "maximum": 100, "minimum": 1, "description": "items per page (default 50, max 100)" } }, "additionalProperties": false }arguments 29 lineslist_pending_messages unknown never probed
list messages awaiting approval before sending. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "page": { "type": "integer", "description": "page number (default 1)", "exclusiveMinimum": 0 }, "page_size": { "type": "integer", "maximum": 100, "minimum": 1, "description": "items per page (default 50, max 100)" }, "campaign_id": { "type": "string", "format": "uuid", "description": "filter by campaign ID" } }, "additionalProperties": false }arguments 23 linescreate_campaign unknown never probed
create a new outreach campaign. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "name", "objective_type" ], "properties": { "name": { "type": "string", "maxLength": 100, "minLength": 1, "description": "campaign name" }, "product_url": { "type": "string", "format": "uri", "description": "product URL (for product_promotion objective)" }, "product_name": { "type": "string", "maxLength": 200, "description": "product name (for product_promotion objective)" }, "objective_type": { "enum": [ "venue_dj", "venue_host", "product_promotion", "custom" ], "type": "string", "description": "campaign objective type" }, "product_description": { "type": "string", "maxLength": 2000, "description": "product description (for product_promotion objective)" } }, "additionalProperties": false }arguments 42 linesget_campaign unknown never probed
get a campaign by ID with stats. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" } }, "additionalProperties": false }arguments 15 linesupdate_campaign unknown never probed
update a campaign's details. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" }, "name": { "type": "string", "maxLength": 100, "minLength": 1, "description": "new campaign name" }, "status": { "enum": [ "draft", "active", "paused", "completed", "deleted" ], "type": "string", "description": "new campaign status" }, "follow_up_enabled": { "type": "boolean", "description": "enable follow-up emails" }, "follow_up_max_count": { "type": "integer", "maximum": 10, "minimum": 0, "description": "max follow-up count" }, "follow_up_delay_days": { "type": "integer", "maximum": 30, "minimum": 1, "description": "days between follow-ups" } }, "additionalProperties": false }arguments 48 linesdelete_campaign unknown never probed
soft-delete a campaign (sets status to deleted). requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" } }, "additionalProperties": false }arguments 15 lineslist_campaign_contacts unknown never probed
list contacts in a campaign with optional status filter. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" }, "page": { "type": "integer", "description": "page number (default 1)", "exclusiveMinimum": 0 }, "status": { "enum": [ "pending", "queued", "contacted", "responded", "converted", "bounced", "opted_out" ], "type": "string", "description": "filter by contact status" }, "page_size": { "type": "integer", "maximum": 100, "minimum": 1, "description": "items per page (default 50, max 100)" } }, "additionalProperties": false }arguments 39 linesadd_campaign_contacts unknown never probed
add 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" }, "contacts": { "type": "array", "items": { "type": "object", "additionalProperties": {} }, "description": "new contacts to create and link (same shape as create_contact)" }, "contact_ids": { "type": "array", "items": { "type": "string", "format": "uuid" }, "description": "ids of existing contacts to link" }, "deduplicate": { "type": "boolean", "description": "skip contacts already linked (default true)" } }, "additionalProperties": false }arguments 35 lineslist_campaign_chats unknown never probed
list 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_campaign_chat_messages unknown never probed
list the messages in a chat session, oldest first. `content` is an array of opaque blocks (text / tool_use / tool_result). requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "chat_id" ], "properties": { "chat_id": { "type": "string", "format": "uuid", "description": "chat session ID" } }, "additionalProperties": false }arguments 15 linesrename_campaign_chat unknown never probed
rename a chat session. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "chat_id", "title" ], "properties": { "title": { "type": "string", "maxLength": 200, "minLength": 1, "description": "new title" }, "chat_id": { "type": "string", "format": "uuid", "description": "chat session ID" } }, "additionalProperties": false }arguments 22 linesdelete_campaign_chat unknown never probed
soft-delete a chat session. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "chat_id" ], "properties": { "chat_id": { "type": "string", "format": "uuid", "description": "chat session ID" } }, "additionalProperties": false }arguments 15 linesget_campaign_usage unknown never probed
get usage limits and current counts for a campaign. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" } }, "additionalProperties": false }arguments 15 linesanalyze_campaign unknown never probed
queue 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 write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" } }, "additionalProperties": false }arguments 15 linescreate_target_profile unknown never probed
create a target profile for a campaign. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id", "name", "profile_type" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" }, "name": { "type": "string", "maxLength": 200, "minLength": 1, "description": "profile name" }, "industries": { "type": "array", "items": { "type": "string" }, "description": "target industries" }, "job_titles": { "type": "array", "items": { "type": "string" }, "description": "target job titles" }, "profile_type": { "enum": [ "local_business", "content_creator", "influencer", "b2b_professional", "ecommerce", "saas_company", "agency", "freelancer", "other" ], "type": "string", "description": "type of target profile" }, "discovery_keywords": { "type": "array", "items": { "type": "string" }, "description": "keywords for contact discovery" }, "recommended_channels": { "type": "array", "items": { "enum": [ "email", "instagram", "twitter" ], "type": "string" }, "description": "recommended outreach channels" } }, "additionalProperties": false }arguments 71 linesdelete_target_profile unknown never probed
delete a target profile from a campaign. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id", "profile_id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" }, "profile_id": { "type": "string", "format": "uuid", "description": "target profile ID" } }, "additionalProperties": false }arguments 21 lineslist_contacts unknown never probed
list all contacts with optional search. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "page": { "type": "integer", "description": "page number (default 1)", "exclusiveMinimum": 0 }, "search": { "type": "string", "description": "search by name, email, or company" }, "page_size": { "type": "integer", "maximum": 100, "minimum": 1, "description": "items per page (default 50, max 100)" } }, "additionalProperties": false }arguments 22 linescreate_contact unknown never probed
create a new contact. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "email" ], "properties": { "tags": { "type": "array", "items": { "type": "string" }, "description": "tags for categorization" }, "email": { "type": "string", "format": "email", "description": "contact email address" }, "phone": { "type": "string", "maxLength": 50, "description": "phone number" }, "website": { "type": "string", "format": "uri", "description": "website URL" }, "job_title": { "type": "string", "maxLength": 200, "description": "job title" }, "last_name": { "type": "string", "maxLength": 100, "description": "last name" }, "first_name": { "type": "string", "maxLength": 100, "description": "first name" }, "company_name": { "type": "string", "maxLength": 200, "description": "company name" } }, "additionalProperties": false }arguments 52 linesget_contact unknown never probed
get a contact by ID. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "contact ID" } }, "additionalProperties": false }arguments 15 linesupdate_contact unknown never probed
update a contact's details. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "contact ID" }, "tags": { "type": "array", "items": { "type": "string" }, "description": "tags for categorization" }, "email": { "type": "string", "format": "email", "description": "email address" }, "phone": { "type": "string", "maxLength": 50, "description": "phone number" }, "website": { "type": "string", "format": "uri", "description": "website URL" }, "job_title": { "type": "string", "maxLength": 200, "description": "job title" }, "last_name": { "type": "string", "maxLength": 100, "description": "last name" }, "first_name": { "type": "string", "maxLength": 100, "description": "first name" }, "company_name": { "type": "string", "maxLength": 200, "description": "company name" } }, "additionalProperties": false }arguments 57 linesdelete_contact unknown never probed
soft-delete a contact. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "contact ID" } }, "additionalProperties": false }arguments 15 linesbulk_import_contacts unknown never probed
import multiple contacts at once, optionally adding them to a campaign. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "contacts" ], "properties": { "contacts": { "type": "array", "items": { "type": "object", "required": [ "email" ], "properties": { "tags": { "type": "array", "items": { "type": "string" }, "description": "tags" }, "email": { "type": "string", "format": "email", "description": "contact email" }, "job_title": { "type": "string", "description": "job title" }, "last_name": { "type": "string", "description": "last name" }, "first_name": { "type": "string", "description": "first name" }, "company_name": { "type": "string", "description": "company name" } }, "additionalProperties": false }, "maxItems": 500, "minItems": 1, "description": "array of contacts to import" }, "campaign_id": { "type": "string", "format": "uuid", "description": "campaign ID to add contacts to" } }, "additionalProperties": false }arguments 58 linesget_contact_usage unknown never probed
get contact usage limits and current counts for the billing period. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 lineslist_contact_conversations unknown never probed
list all conversations for a specific contact. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "contact ID" } }, "additionalProperties": false }arguments 15 lineslist_conversations unknown never probed
list conversations with optional filtering. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "page": { "type": "integer", "description": "page number (default 1)", "exclusiveMinimum": 0 }, "status": { "enum": [ "active", "completed", "failed", "human_review" ], "type": "string", "description": "filter by conversation status" }, "page_size": { "type": "integer", "maximum": 100, "minimum": 1, "description": "items per page (default 50, max 100)" }, "campaign_id": { "type": "string", "format": "uuid", "description": "filter by campaign ID" } }, "additionalProperties": false }arguments 33 linesget_conversation unknown never probed
get a conversation by ID with contact and campaign details. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "conversation ID" } }, "additionalProperties": false }arguments 15 linescreate_conversation unknown never probed
find-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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "contact_id" ], "properties": { "contact_id": { "type": "string", "format": "uuid", "description": "contact ID to converse with" }, "campaign_id": { "type": "string", "format": "uuid", "description": "scope to a campaign the contact belongs to" } }, "additionalProperties": false }arguments 20 linescreate_conversation_message unknown never probed
create a message in a conversation. status pending_approval places it in the human review queue instead of sending. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id", "content", "direction", "status", "channel" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "conversation ID" }, "status": { "enum": [ "draft", "queued", "sending", "pending_approval", "sent", "delivered", "failed", "bounced", "rejected" ], "type": "string", "description": "initial message status" }, "channel": { "enum": [ "email", "twitter", "instagram", "tiktok" ], "type": "string", "description": "delivery channel (tiktok is manual-send: record only)" }, "content": { "type": "string", "minLength": 1, "description": "message content" }, "direction": { "enum": [ "inbound", "outbound" ], "type": "string", "description": "message direction" }, "platform_recipient_id": { "type": "string", "description": "platform recipient id (twitter/instagram channels)" } }, "additionalProperties": false }arguments 61 linesget_conversation_messages unknown never probed
get all messages in a conversation. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "conversation ID" } }, "additionalProperties": false }arguments 15 linesmark_conversation_read unknown never probed
mark a conversation as read. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "conversation ID" } }, "additionalProperties": false }arguments 15 linesupdate_conversation unknown never probed
update a conversation's status: active, archived, or closed. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id", "status" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "conversation ID" }, "status": { "enum": [ "active", "archived", "closed" ], "type": "string", "description": "new conversation status" } }, "additionalProperties": false }arguments 25 linesapprove_message unknown never probed
approve a pending message for sending. requires send scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "message ID" } }, "additionalProperties": false }arguments 15 linesreject_message unknown never probed
reject a pending message with an optional reason. requires send scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "message ID" }, "reason": { "type": "string", "maxLength": 500, "description": "reason for rejection" } }, "additionalProperties": false }arguments 20 linesretry_message unknown never probed
retry sending a failed message. requires send scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "message ID" } }, "additionalProperties": false }arguments 15 linesmark_message_sent unknown never probed
mark 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "approval queue item ID, or the message ID for drafts created via create_message (they have no approval item)" } }, "additionalProperties": false }arguments 15 linessubmit_message_feedback unknown never probed
submit feedback on an AI-generated message to improve future generations. requires send scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id", "feedback" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "message ID" }, "feedback": { "type": "string", "maxLength": 2000, "minLength": 1, "description": "feedback text" } }, "additionalProperties": false }arguments 22 linesbulk_message_action unknown never probed
approve or reject multiple messages at once. requires send scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "action", "message_ids" ], "properties": { "action": { "enum": [ "approve", "reject" ], "type": "string", "description": "action to perform" }, "message_ids": { "type": "array", "items": { "type": "string", "format": "uuid" }, "maxItems": 100, "minItems": 1, "description": "message IDs to act on" } }, "additionalProperties": false }arguments 29 linesgenerate_content unknown never probed
generate 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "generation_type", "tone" ], "properties": { "tone": { "type": "string", "minLength": 1, "description": "tone (e.g. professional, friendly, casual, formal, persuasive, informative)" }, "format": { "enum": [ "email", "dm" ], "type": "string", "description": "dm = short platform-native message text with empty subject. defaults to email" }, "prompt": { "type": "string", "description": "additional freeform instructions" }, "contact_id": { "type": "string", "format": "uuid", "description": "target contact - its tags + enrichment_data are used automatically" }, "campaign_id": { "type": "string", "format": "uuid", "description": "campaign to scope the generation to" }, "include_cta": { "type": "boolean", "description": "include a clear call-to-action" }, "generation_type": { "enum": [ "initial_outreach", "follow_up", "response_negotiation", "meeting_request", "closing" ], "type": "string", "description": "type of content to generate" } }, "additionalProperties": false }arguments 53 linesgenerate_campaign_content unknown never probed
generate campaign-level outreach content (email sequence, templates) from a campaign brief. content-first: takes the strategy inline, not a campaign id. requires generate scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "campaign_name", "objective", "target_audience", "key_benefits", "tone" ], "properties": { "tone": { "type": "string", "minLength": 1, "description": "tone (e.g. professional, casual, warm-direct)" }, "objective": { "type": "string", "minLength": 1, "description": "campaign objective (e.g. 'book DJ gigs', 'sell SaaS to VPs of Eng')" }, "key_benefits": { "type": "array", "items": { "type": "string", "minLength": 1 }, "minItems": 1, "description": "non-empty list of key benefits to emphasise" }, "campaign_name": { "type": "string", "minLength": 1, "description": "campaign name (used as the brief title)" }, "target_audience": { "type": "string", "minLength": 1, "description": "target audience description" } }, "additionalProperties": false }arguments 43 linesanalyze_response unknown never probed
analyze an inbound message using AI to determine sentiment, intent, and suggested actions. requires generate scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "conversation_id", "message_content" ], "properties": { "conversation_id": { "type": "string", "format": "uuid", "description": "conversation ID" }, "message_content": { "type": "string", "maxLength": 10000, "minLength": 1, "description": "message content to analyze" } }, "additionalProperties": false }arguments 22 linesget_ai_usage unknown never probed
get AI generation usage limits and current counts for the billing period. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linessearch_contacts unknown never probed
kick 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "keywords" ], "properties": { "sources": { "type": "array", "items": { "enum": [ "google_maps", "instagram", "twitter", "tiktok", "reddit" ], "type": "string" }, "description": "override the default per-profile_type source mix. valid: google_maps, instagram, twitter, tiktok, reddit. omit to let the orchestrator pick." }, "keywords": { "type": "array", "items": { "type": "string", "minLength": 1 }, "minItems": 1, "description": "non-empty array of search keywords (e.g. ['boutique hotel', 'rooftop venue'])" }, "location": { "type": "string", "description": "location for geo-scoped goals (local_business / venue / brick-and-mortar). omit for global goals (creators, b2b, saas)." }, "campaign_id": { "type": "string", "format": "uuid", "description": "campaign to attach discovered contacts to on finalize" }, "max_results": { "type": "integer", "maximum": 500, "minimum": 10, "description": "max contacts to return (10-500, default 50; server clamps to plan cap)" }, "profile_type": { "enum": [ "local_business", "content_creator", "influencer", "b2b_professional", "ecommerce", "saas_company", "agency", "freelancer", "other" ], "type": "string", "description": "ICP profile type — drives default source mix when sources is omitted" }, "radius_miles": { "type": "number", "default": 25, "description": "search radius in miles (default 25)", "exclusiveMinimum": 0 }, "enrich_emails": { "type": "boolean", "default": true, "description": "run waterfall email enrichment (BetterContact → FullEnrich → ZeroBounce). default true." } }, "additionalProperties": false }arguments 74 linessearch_campaign_contacts unknown never probed
search for contacts matching a campaign's target profiles. requires generate scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "campaign_id" ], "properties": { "campaign_id": { "type": "string", "format": "uuid", "description": "campaign ID" }, "target_profile_id": { "type": "string", "format": "uuid", "description": "specific target profile to search for" } }, "additionalProperties": false }arguments 20 linesget_discovery_job unknown never probed
get the status, progress, and contacts of a discovery job. status values: pending, running, completed, failed. contacts populated only when status=completed. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "discovery job ID" } }, "additionalProperties": false }arguments 15 lineslist_discovery_sources unknown never probed
list available discovery data sources and their status. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_analytics_overview unknown never probed
get a high-level overview of all campaign analytics. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_campaign_analytics unknown never probed
get detailed analytics for a specific campaign. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "campaign ID" } }, "additionalProperties": false }arguments 15 linesget_performance_metrics unknown never probed
get email performance metrics over time. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "days": { "type": "integer", "maximum": 90, "minimum": 1, "description": "time window in days (1–90, default 30)" }, "campaign_id": { "type": "string", "format": "uuid", "description": "filter by campaign ID" } }, "additionalProperties": false }arguments 18 linesget_response_time unknown never probed
get average response time analytics. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "campaign_id": { "type": "string", "format": "uuid", "description": "filter by campaign ID" } }, "additionalProperties": false }arguments 12 linesget_billing_plans unknown never probed
get all available billing plans with pricing and feature limits. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 lineslist_connected_accounts unknown never probed
list all connected social media accounts. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linessend_channel_message unknown never probed
send a message through a specific channel in a conversation. requires send scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "channel", "conversation_id", "recipient_id", "content" ], "properties": { "channel": { "enum": [ "email", "instagram", "twitter" ], "type": "string", "description": "outreach channel to use" }, "content": { "type": "string", "maxLength": 10000, "minLength": 1, "description": "message content" }, "subject": { "type": "string", "description": "subject (email channel only)" }, "recipient_id": { "type": "string", "minLength": 1, "description": "recipient (email address for email channel; platform handle/ID for social channels)" }, "conversation_id": { "type": "string", "format": "uuid", "description": "conversation ID" } }, "additionalProperties": false }arguments 42 lineslist_notifications unknown never probed
list user notifications. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "page": { "type": "integer", "description": "page number (default 1)", "exclusiveMinimum": 0 }, "page_size": { "type": "integer", "maximum": 100, "minimum": 1, "description": "items per page (default 50, max 100)" } }, "additionalProperties": false }arguments 18 linesupdate_notification unknown never probed
update a notification (e.g., mark as read). requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "notification ID" }, "read": { "type": "boolean", "description": "mark as read or unread" } }, "additionalProperties": false }arguments 19 linesdelete_notification unknown never probed
delete a notification. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "notification ID" } }, "additionalProperties": false }arguments 15 linesmark_all_notifications_read unknown never probed
mark all notifications as read. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_usage unknown never probed
get your current plan, quota usage (campaigns used/remaining this period), and billing period (requires read scope)
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_changelog unknown never probed
machine-readable release history (public) - version, date, type, summary, migration notes on breaking entries. the X-Notice header's structured backstory.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesget_autopilot_status unknown never probed
get 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linesconfigure_autopilot unknown never probed
create 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "enabled": { "type": "boolean", "description": "turn the nightly loop on or off (enabling requires a campaign_id and clears pause state)" }, "run_hour": { "type": "integer", "maximum": 23, "minimum": 0, "description": "local hour the nightly run fires (default 2)" }, "timezone": { "type": "string", "maxLength": 64, "minLength": 1, "description": "IANA timezone for run_hour (default America/New_York)" }, "campaign_id": { "anyOf": [ { "type": "string", "format": "uuid" }, { "type": "null" } ], "description": "the ONE standing campaign autopilot tends (draft, scheduled, or active); null to unset" }, "max_pending_reviews": { "type": "integer", "maximum": 200, "minimum": 5, "description": "skip discovery while this many drafts sit unreviewed (default 25)" }, "max_new_contacts_per_run": { "type": "integer", "maximum": 50, "minimum": 10, "description": "discovery batch size per nightly run (default 10)" } }, "additionalProperties": false }arguments 47 lineslist_responder_activity unknown never probed
list the responder's activity log (replies sent, handoffs, skips, and failures), newest first. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "page": { "type": "integer", "description": "page number (default 1)", "exclusiveMinimum": 0 }, "page_size": { "type": "integer", "maximum": 100, "minimum": 1, "description": "items per page (default 50, max 100)" } }, "additionalProperties": false }arguments 18 linesget_conversation_responder unknown never probed
get the responder's status for a single conversation: active, paused, handed off, or never seen, plus the reason and reply counts. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "conversation_id" ], "properties": { "conversation_id": { "type": "string", "format": "uuid", "description": "conversation ID" } }, "additionalProperties": false }arguments 15 linesset_conversation_responder unknown never probed
pause 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "conversation_id", "status" ], "properties": { "status": { "enum": [ "active", "paused" ], "type": "string", "description": "new responder status for this conversation" }, "conversation_id": { "type": "string", "format": "uuid", "description": "conversation ID" } }, "additionalProperties": false }arguments 24 lineslist_responder_comment_triggers unknown never probed
list 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linescreate_responder_comment_trigger unknown never probed
create 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 the comment, and nothing more unless the person replies. it only sends while status.comment_triggers on get_responder is ready; needs_permission means the owner has to reconnect instagram from the responder settings page in the iris web app, unavailable means the feature isn't offered on the account yet. each message sent counts as a message against the plan. needs an API key and a connected instagram account; x402 and MPP identities cannot use it. at most 20 triggers per account, and a second trigger with the same keyword on the same post is refused. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "keyword", "message" ], "properties": { "enabled": { "type": "boolean", "description": "whether the trigger is active (default true)" }, "keyword": { "type": "string", "maxLength": 50, "minLength": 1, "description": "matched as a whole word or phrase in the comment, case-insensitive (1-50 characters)" }, "message": { "type": "string", "maxLength": 900, "minLength": 1, "description": "the DM sent to the commenter, before the automated notice (1-900 characters, and at most 700 bytes)" }, "media_id": { "anyOf": [ { "type": "string", "pattern": "^\\d{5,40}$" }, { "type": "null" } ], "description": "the numeric instagram media id to limit the trigger to one post (5-40 digits; get it from list_responder_posts); omit or send null to match every post" } }, "additionalProperties": false }arguments 39 linesupdate_responder_comment_trigger unknown never probed
update 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "comment trigger ID" }, "enabled": { "type": "boolean", "description": "whether the trigger is active" }, "keyword": { "type": "string", "maxLength": 50, "minLength": 1, "description": "matched as a whole word or phrase in the comment, case-insensitive (1-50 characters)" }, "message": { "type": "string", "maxLength": 900, "minLength": 1, "description": "the DM sent to the commenter, before the automated notice (1-900 characters, and at most 700 bytes)" }, "media_id": { "anyOf": [ { "type": "string", "pattern": "^\\d{5,40}$" }, { "type": "null" } ], "description": "the numeric instagram media id to limit the trigger to one post (5-40 digits; get it from list_responder_posts); null matches every post" } }, "additionalProperties": false }arguments 43 linesdelete_responder_comment_trigger unknown never probed
delete a comment trigger. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "comment trigger ID" } }, "additionalProperties": false }arguments 15 lineslist_responder_posts unknown never probed
list the account's recent instagram posts with their media ids, for limiting a comment trigger to one post. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 lineslist_audiences unknown never probed
list the audience library - reusable target profiles created once and attachable to any campaign. requires read scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "page": { "type": "integer", "description": "page number (default 1)", "exclusiveMinimum": 0 }, "page_size": { "type": "integer", "maximum": 100, "minimum": 1, "description": "items per page (default 50, max 100)" } }, "additionalProperties": false }arguments 18 linescreate_audience unknown never probed
create a library audience profile manually. names are unique per library (case-insensitive). requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "name", "profile_type" ], "properties": { "name": { "type": "string", "maxLength": 100, "minLength": 1, "description": "audience name" }, "fit_score": { "type": "integer", "maximum": 100, "minimum": 0, "description": "how well this audience fits (0-100)" }, "industries": { "type": "array", "items": { "type": "string", "maxLength": 100 }, "maxItems": 10, "description": "target industries" }, "job_titles": { "type": "array", "items": { "type": "string", "maxLength": 100 }, "maxItems": 10, "description": "target job titles" }, "description": { "type": "string", "maxLength": 500, "description": "who this audience is" }, "pain_points": { "type": "array", "items": { "type": "string", "maxLength": 100 }, "maxItems": 10, "description": "problems they feel" }, "profile_type": { "enum": [ "local_business", "content_creator", "influencer", "b2b_professional", "ecommerce", "saas_company", "agency", "freelancer", "other" ], "type": "string", "description": "target profile type" }, "buying_signals": { "type": "array", "items": { "type": "string", "maxLength": 100 }, "maxItems": 10, "description": "signals they're ready to buy" }, "outreach_angle": { "type": "string", "maxLength": 500, "description": "the hook messages should lead with" }, "discovery_keywords": { "type": "array", "items": { "type": "string", "maxLength": 100 }, "maxItems": 10, "description": "keywords for contact discovery" } }, "additionalProperties": false }arguments 93 linesgenerate_audiences unknown never probed
AI-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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "product_name" ], "properties": { "product_url": { "type": "string", "format": "uri", "description": "product website - scraped for extra context" }, "product_name": { "type": "string", "maxLength": 200, "minLength": 1, "description": "product name" }, "product_description": { "type": "string", "maxLength": 2000, "description": "what it does and who it's for" } }, "additionalProperties": false }arguments 26 linesattach_audience_to_campaign unknown never probed
copy 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.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id", "campaign_id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "audience (library profile) ID" }, "campaign_id": { "type": "string", "format": "uuid", "description": "campaign to attach to (must be yours and not completed or deleted)" } }, "additionalProperties": false }arguments 21 linesdelete_audience unknown never probed
delete a library audience profile. campaigns it was attached to keep their copy. requires write scope.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "id" ], "properties": { "id": { "type": "string", "format": "uuid", "description": "audience (library profile) ID" } }, "additionalProperties": false }arguments 15 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id803fe3b65bd29c99.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/803fe3b65bd29c99/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/803fe3b65bd29c99?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.