Server definition
- Hash
- sha256:7e43809ab8a7257eacd89cb79790ce77660442ca1350ab9ded91b2cfb4ca77c4
- What it is
- What a remote MCP server returned when asked what it offers: 383 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "Connect an additional WhatsApp channel to a bot as a secondary number. The bot will respond to messages on this channel.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot",
"type": "string"
},
"channelId": {
"description": "Unique identifier (UUID) of the WhatsApp channel to connect",
"type": "string"
}
},
"required": [
"botId",
"channelId"
],
"type": "object"
},
"name": "neuron_add_bot_channel",
"outputSchema": null
},
{
"description": "Add members to an existing group, resolved from any combination of sources (other groups, contact lists, contacts, pasted phones, all contacts). Address the group by its id, slug, or JID.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"allContacts": {
"description": "Union the org's entire address book",
"type": "boolean"
},
"contactIds": {
"description": "Existing contact ids",
"items": {
"type": "string"
},
"type": "array"
},
"excludeListIds": {
"description": "Subtract every member of these lists",
"items": {
"type": "string"
},
"type": "array"
},
"fromGroupIds": {
"description": "Copy/combine members live from these WhatsApp group JIDs",
"items": {
"type": "string"
},
"type": "array"
},
"group": {
"description": "Group id, slug, or JID (ending in @g.us)",
"type": "string"
},
"listIds": {
"description": "Contact list ids or slugs — pulls every member",
"items": {
"type": "string"
},
"type": "array"
},
"phones": {
"description": "Raw phone numbers, e.g. pasted from a CSV",
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"description": "Keep only contacts carrying one of these tags",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"group"
],
"type": "object"
},
"name": "neuron_add_group_members",
"outputSchema": null
},
{
"description": "Add more unique codes/keys to a 'pool' code product's stock. Each buyer receives one. Returns the product with the new remaining count.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"codes": {
"description": "Unique codes/keys to append to the pool",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
},
"id": {
"description": "Product UUID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id",
"codes"
],
"type": "object"
},
"name": "neuron_add_product_codes",
"outputSchema": null
},
{
"description": "Add one or more contacts to a list by contact ID or phone number. Phone numbers without existing contacts are auto-created as minimal contact records.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"entries": {
"description": "Array of contacts to add, each identified by contactId or phone number",
"items": {
"additionalProperties": false,
"properties": {
"contactId": {
"description": "Unique identifier (UUID) of an existing contact",
"type": "string"
},
"phone": {
"description": "Phone number in E.164 format (e.g., +2348012345678). Creates a new contact if no match exists.",
"type": "string"
}
},
"type": "object"
},
"type": "array"
},
"idOrSlug": {
"description": "Unique identifier (UUID) or URL-friendly slug of the target contact list",
"type": "string"
}
},
"required": [
"idOrSlug",
"entries"
],
"type": "object"
},
"name": "neuron_add_to_contact_list",
"outputSchema": null
},
{
"description": "Store or update a secret credential (API key, token, etc.) for a custom tool integration. Secrets are encrypted at rest.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the tool to add the secret to",
"type": "string"
},
"key": {
"description": "Secret key name used in templates (e.g., 'API_KEY', 'AUTH_TOKEN')",
"type": "string"
},
"value": {
"description": "Secret value to store securely (will be encrypted)",
"type": "string"
}
},
"required": [
"id",
"key",
"value"
],
"type": "object"
},
"name": "neuron_add_tool_secret",
"outputSchema": null
},
{
"description": "Give a bot this persona's voice: merges a delimited voice block into the bot's system prompt (idempotent — re-applying or swapping personas replaces it cleanly) and tags the bot's metadata with the persona id.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Bot UUID to apply the voice to.",
"type": "string"
},
"id": {
"description": "Persona UUID",
"type": "string"
}
},
"required": [
"id",
"botId"
],
"type": "object"
},
"name": "neuron_apply_persona_to_bot",
"outputSchema": null
},
{
"description": "Apply for seller access (digital products). Requires a Pro plan or higher; a platform admin then grants access.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"pitch": {
"description": "Short note on what you plan to sell",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_apply_to_sell",
"outputSchema": null
},
{
"description": "Approve a bot-generated reflection to incorporate the learned insight into the bot's future behavior and responses.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the reflection to approve",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_approve_reflection",
"outputSchema": null
},
{
"description": "Assign a bot to handle incoming messages on a specific WhatsApp channel. Replaces any previously assigned bot.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to assign",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the channel",
"type": "string"
}
},
"required": [
"id",
"botId"
],
"type": "object"
},
"name": "neuron_assign_bot_to_channel",
"outputSchema": null
},
{
"description": "Assign a bot to handle interactions on a specific social media channel. The bot will be able to use the channel's credentials for social media actions.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to assign",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the social channel",
"type": "string"
}
},
"required": [
"id",
"botId"
],
"type": "object"
},
"name": "neuron_assign_bot_to_social_channel",
"outputSchema": null
},
{
"description": "Attach a knowledge base to a bot to enhance its responses with domain-specific knowledge. Optional priority determines retrieval order when multiple knowledge bases are attached.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the bot",
"type": "string"
},
"knowledgeBaseId": {
"description": "Unique identifier (UUID) of the knowledge base to attach",
"type": "string"
},
"priority": {
"description": "Priority level for knowledge base retrieval (higher values are checked first)",
"type": "number"
}
},
"required": [
"id",
"knowledgeBaseId"
],
"type": "object"
},
"name": "neuron_attach_knowledge_base",
"outputSchema": null
},
{
"description": "Transcribe an audio recording and extract contact information (name, phone, email, notes, tags). Automatically saves the extracted contact to the organization's address book.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"audioBase64": {
"description": "Base64-encoded audio data containing spoken contact information",
"type": "string"
},
"audioFormat": {
"default": "webm",
"description": "Audio format hint for decoding (default: 'webm')",
"type": "string"
}
},
"required": [
"audioBase64"
],
"type": "object"
},
"name": "neuron_audio_contact",
"outputSchema": null
},
{
"description": "Block a WhatsApp contact. Blocked contacts cannot message the bot or see its profile.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"jid": {
"description": "Contact JID or phone number to block (e.g. '2348012345678' or '[email protected]')",
"type": "string"
}
},
"required": [
"channelId",
"jid"
],
"type": "object"
},
"name": "neuron_block_contact",
"outputSchema": null
},
{
"description": "Send a message to a bot via the API and receive a streaming or complete AI-generated response. Requires a valid API key with 'nrn_' prefix.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
},
"contactName": {
"description": "Display name of the contact for conversation context",
"type": "string"
},
"contactPhone": {
"description": "Phone number of the contact sending the message (E.164 format, e.g., '+2348012345678')",
"type": "string"
},
"message": {
"description": "The message text to send to the bot",
"type": "string"
}
},
"required": [
"apiKey",
"message",
"contactPhone"
],
"type": "object"
},
"name": "neuron_bot_api_chat",
"outputSchema": null
},
{
"description": "Retrieve configuration and status information about the bot associated with the provided API key.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
}
},
"required": [
"apiKey"
],
"type": "object"
},
"name": "neuron_bot_api_get_bot",
"outputSchema": null
},
{
"description": "Retrieve message history for a specific conversation with cursor-based pagination. Requires a valid API key.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
},
"before": {
"description": "Cursor for pagination — retrieve messages created before this message ID or ISO 8601 timestamp",
"type": "string"
},
"conversationId": {
"description": "Unique identifier (UUID) of the conversation to retrieve messages from",
"type": "string"
},
"limit": {
"description": "Maximum number of messages to return (default: 50)",
"exclusiveMinimum": 0,
"type": "number"
}
},
"required": [
"apiKey",
"conversationId"
],
"type": "object"
},
"name": "neuron_bot_api_get_messages",
"outputSchema": null
},
{
"description": "Retrieve a paginated list of conversations managed by the bot. Supports filtering by conversation status. Requires a valid API key.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
},
"limit": {
"description": "Number of conversations per page (default: 20)",
"exclusiveMinimum": 0,
"type": "number"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "number"
},
"status": {
"description": "Filter by conversation status: 'active', 'closed', or 'pending'",
"type": "string"
}
},
"required": [
"apiKey"
],
"type": "object"
},
"name": "neuron_bot_api_list_conversations",
"outputSchema": null
},
{
"description": "Send an outbound message through the bot API to a specified phone number. Supports text and media messages. Requires a valid API key.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
},
"channelId": {
"description": "Unique identifier (UUID) of a specific WhatsApp channel to send from. Uses the bot's primary channel if omitted.",
"type": "string"
},
"mediaUrl": {
"description": "Public URL of the media file to attach (required for non-text message types)",
"type": "string"
},
"message": {
"description": "The message text to send to the recipient",
"type": "string"
},
"messageType": {
"description": "Type of message to send: 'text', 'image', 'video', 'audio', or 'document' (default: 'text')",
"type": "string"
},
"sendAt": {
"description": "ISO 8601 date-time for scheduled delivery (e.g., '2025-12-31T10:00:00Z'). Message sends immediately if omitted.",
"type": "string"
},
"to": {
"description": "Recipient's phone number (E.164 format, e.g., '+2348012345678')",
"type": "string"
}
},
"required": [
"apiKey",
"to",
"message"
],
"type": "object"
},
"name": "neuron_bot_api_send",
"outputSchema": null
},
{
"description": "Browse verified contact lists available in the shared marketplace pool. Filter by category, region, or search term.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "Filter by audience category (e.g., 'delivery', 'tech', 'consumers')",
"type": "string"
},
"limit": {
"description": "Number of items per page (default: 20)",
"type": "number"
},
"page": {
"description": "Page number for pagination (default: 1)",
"type": "number"
},
"region": {
"description": "Filter by geographic region (e.g., 'lagos', 'abuja')",
"type": "string"
},
"search": {
"description": "Search term to filter by description or category",
"type": "string"
},
"smsEnabled": {
"description": "Only return lists whose owner opted into SMS campaigns (usable as curated audiences for neuron_create_sms_campaign)",
"type": "boolean"
}
},
"type": "object"
},
"name": "neuron_browse_list_pool",
"outputSchema": null
},
{
"description": "Browse the shared marketplace pool of published bots, tools, knowledge bases, and reflections with optional filtering by type, category, tags, or search query.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "Filter by category name",
"type": "string"
},
"featured": {
"description": "When true, return only featured items",
"type": "boolean"
},
"limit": {
"description": "Number of items per page (default: 20)",
"type": "number"
},
"page": {
"description": "Page number for pagination (default: 1)",
"type": "number"
},
"query": {
"description": "Free-text search query to filter pool items by name or description",
"type": "string"
},
"tags": {
"description": "Filter by tags (comma-separated list, e.g., 'ai,chatbot')",
"type": "string"
},
"type": {
"description": "Filter by resource type",
"enum": [
"knowledge_base",
"bot_template",
"tool_template",
"reflection_pack"
],
"type": "string"
}
},
"type": "object"
},
"name": "neuron_browse_pool",
"outputSchema": null
},
{
"description": "Distill a reusable voice from a Collection of mined content: analyzes the top-engagement items and reverse-engineers a voiceProfile (tone, diction, cadence, emoji/formatting habits, themes, dos/donts) + representative exemplars. Requires the collection to have >=3 usable samples. Runs an LLM call (a few seconds).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"collectionId": {
"description": "Source Collection UUID (built by the web agent / content mining).",
"type": "string"
},
"name": {
"description": "Persona name. Defaults to '<collection name> voice'.",
"type": "string"
},
"sampleLimit": {
"description": "How many top-engagement items to analyze (default 40).",
"maximum": 200,
"minimum": 1,
"type": "integer"
}
},
"required": [
"collectionId"
],
"type": "object"
},
"name": "neuron_build_persona",
"outputSchema": null
},
{
"description": "Distill a reusable voice from an existing WhatsApp conversation's stored messages — no extension needed. `author` picks whose voice: 'me' (owner's own outgoing texts), 'contact' (the other party), 'bot', or 'any'. For a group chat, pass senderName/senderPhone to isolate one participant. Requires >=3 usable text messages. Runs an LLM call.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"author": {
"description": "Whose voice to capture. Default 'me'.",
"enum": [
"me",
"contact",
"bot",
"any"
],
"type": "string"
},
"conversationId": {
"description": "Conversation UUID (from neuron_list_conversations).",
"type": "string"
},
"limit": {
"description": "How many recent messages to read (default 200).",
"maximum": 500,
"minimum": 1,
"type": "integer"
},
"name": {
"type": "string"
},
"senderName": {
"description": "For groups: match one participant by display name.",
"type": "string"
},
"senderPhone": {
"description": "For groups: match one participant by phone.",
"type": "string"
}
},
"required": [
"conversationId"
],
"type": "object"
},
"name": "neuron_build_persona_from_conversation",
"outputSchema": null
},
{
"description": "Distill a reusable voice from raw text — no Collection or browser extension needed. Feed it pasted posts, a chat/dialogue transcript, WhatsApp-export text, or your own well-crafted writing sample, and it reverse-engineers a voiceProfile (tone, diction, cadence, emoji/formatting habits, themes, dos/donts) + exemplars. Provide `text` (auto-split into samples) and/or `samples` (already-split). Runs an LLM call (a few seconds).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"authorLabel": {
"description": "Who the voice belongs to, for a more grounded analysis.",
"type": "string"
},
"description": {
"type": "string"
},
"name": {
"description": "Persona name. Defaults to '<author> voice' or 'Custom voice'.",
"type": "string"
},
"platform": {
"description": "Optional metadata tag for the samples (e.g. 'whatsapp', 'x').",
"type": "string"
},
"samples": {
"description": "Pre-split writing samples (alternative or addition to `text`).",
"items": {
"type": "string"
},
"type": "array"
},
"speaker": {
"description": "If `text` is a chat transcript, keep only this speaker's lines (name match) — so a group chat yields one person's voice.",
"type": "string"
},
"text": {
"description": "A raw blob to distill: posts, a dialogue, a chat transcript, or a writing sample. Auto-split into samples.",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_build_persona_from_text",
"outputSchema": null
},
{
"description": "Enable or disable multiple built-in tools at once for a bot. More efficient than toggling tools individually.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to update tools for",
"type": "string"
},
"settings": {
"description": "Array of tool toggle settings to apply in bulk",
"items": {
"additionalProperties": false,
"properties": {
"enabled": {
"description": "Whether to enable (true) or disable (false) this tool",
"type": "boolean"
},
"toolId": {
"description": "Identifier of the built-in tool (e.g., 'web_search', 'send_direct_message')",
"type": "string"
}
},
"required": [
"toolId",
"enabled"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"botId",
"settings"
],
"type": "object"
},
"name": "neuron_bulk_toggle_builtin_tools",
"outputSchema": null
},
{
"description": "Browse available campaigns in the marketplace that your organization can join to earn rewards by sending messages.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Number of campaigns per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
}
},
"type": "object"
},
"name": "neuron_campaign_marketplace",
"outputSchema": null
},
{
"description": "Retrieve all participants who have joined a campaign you own, including their delivery counts and earned rewards.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the campaign you own",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_campaign_participants",
"outputSchema": null
},
{
"description": "Cancel a still-pending approval (e.g. the upstream action was aborted). Fires the approval.cancelled callback. Requires a bot API key.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
},
"approvalId": {
"description": "The approval request id (UUID) to cancel",
"type": "string"
},
"reason": {
"description": "Optional cancellation reason",
"type": "string"
}
},
"required": [
"apiKey",
"approvalId"
],
"type": "object"
},
"name": "neuron_cancel_approval",
"outputSchema": null
},
{
"description": "Cancel a confirmed or pending booking. Sends cancellation notifications to the invitee.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Booking UUID",
"type": "string"
},
"reason": {
"description": "Cancellation reason",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_cancel_booking",
"outputSchema": null
},
{
"description": "Cancel a running or waiting flow execution. Steps already completed are not rolled back.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"runId": {
"description": "UUID of the run to cancel.",
"type": "string"
}
},
"required": [
"runId"
],
"type": "object"
},
"name": "neuron_cancel_flow_run",
"outputSchema": null
},
{
"description": "Cancel a scheduled message to prevent it from being sent. Only messages with status 'scheduled' can be cancelled. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the scheduled message to cancel",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_cancel_scheduled_message",
"outputSchema": null
},
{
"description": "Cancel the current active subscription. Access continues until the end of the current billing period.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_cancel_subscription",
"outputSchema": null
},
{
"description": "Initiate a checkout session for a subscription plan upgrade. Returns a checkout URL or confirmation to complete the purchase.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"plan": {
"description": "Subscription plan to purchase: 'pro' or 'business'",
"enum": [
"pro",
"business"
],
"type": "string"
}
},
"required": [
"plan"
],
"type": "object"
},
"name": "neuron_checkout",
"outputSchema": null
},
{
"description": "Close an active conversation, marking it as completed. The bot will stop responding and the conversation is archived.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the conversation to close",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_close_conversation",
"outputSchema": null
},
{
"description": "Mark a confirmed booking as completed (e.g. after the meeting has happened).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Booking UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_complete_booking",
"outputSchema": null
},
{
"description": "Compose and send a new message to a phone number via a specific channel. Automatically creates a new conversation if one does not exist.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "Unique identifier (UUID) of the WhatsApp channel to send through",
"type": "string"
},
"contactName": {
"description": "Display name for the recipient contact",
"type": "string"
},
"mediaUrl": {
"description": "URL of media to attach (required for non-text message types)",
"type": "string"
},
"messageType": {
"description": "Type of message: 'text' (default), 'image', or 'document'",
"type": "string"
},
"sendAt": {
"description": "ISO 8601 date-time for scheduled delivery (e.g., '2025-12-31T10:00:00Z'). Message sends immediately if omitted.",
"type": "string"
},
"text": {
"description": "Message text content",
"type": "string"
},
"to": {
"description": "Recipient phone number (E.164 format, e.g., '2348012345678')",
"type": "string"
}
},
"required": [
"channelId",
"to",
"text"
],
"type": "object"
},
"name": "neuron_compose_message",
"outputSchema": null
},
{
"description": "Confirm a pending booking. Only works on bookings with status 'pending'.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Booking UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_confirm_booking",
"outputSchema": null
},
{
"description": "Promote a phone-bearing lead into a contact (so it can be messaged / added to lists). Optionally add the new contact to a list.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"addToList": {
"description": "Contact list name to add the converted contact to.",
"type": "string"
},
"id": {
"description": "Lead UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_convert_lead",
"outputSchema": null
},
{
"description": "Create an ad distribution request to send a message to contacts in pool lists matching target demographics. Deducts from wallet upon approval.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"budget": {
"description": "Total ad budget in kobo (e.g., 500000 = NGN 5,000)",
"type": "number"
},
"mediaUrl": {
"description": "Media URL for non-text messages (required when messageType is 'image', 'video', or 'document')",
"type": "string"
},
"message": {
"description": "The ad message content to distribute to matched contacts",
"type": "string"
},
"messageType": {
"description": "Message content type: 'text', 'image', 'video', or 'document' (default: 'text')",
"type": "string"
},
"targetDemographics": {
"additionalProperties": false,
"description": "Demographic criteria to match against pool list entries",
"properties": {
"categories": {
"description": "Target audience categories to match (e.g., ['delivery', 'tech'])",
"items": {
"type": "string"
},
"type": "array"
},
"regions": {
"description": "Target geographic regions to match (e.g., ['lagos', 'abuja'])",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"targetGoal": {
"description": "Target number of successful message deliveries",
"type": "number"
}
},
"required": [
"message",
"targetDemographics",
"targetGoal",
"budget"
],
"type": "object"
},
"name": "neuron_create_ad_request",
"outputSchema": null
},
{
"description": "Create a new API key for programmatic access to a specific bot. Store the key securely as it cannot be retrieved later.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to create the API key for",
"type": "string"
},
"expiresAt": {
"description": "ISO 8601 date-time when the key should expire (e.g., '2026-12-31T23:59:59Z'). Key never expires if omitted.",
"type": "string"
},
"name": {
"description": "Descriptive name for the API key to identify its purpose (e.g., 'Production CRM Integration')",
"type": "string"
}
},
"required": [
"botId",
"name"
],
"type": "object"
},
"name": "neuron_create_api_key",
"outputSchema": null
},
{
"description": "Create a new blog post. Body can be authored two ways: (1) `content` as markdown (GFM) + inline raw HTML, or (2) `blocks` — a structured array of typed layout blocks rendered as styled components (heroes, columns, callouts, code cards, embeds, CTAs, sanitized custom HTML). Prefer `blocks` for rich, magazine-style layouts; use `content` for simple prose. If both are given, `blocks` renders and `content` is kept as a fallback.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"authorType": {
"description": "Whether the post is authored by an individual user or the organization",
"enum": [
"user",
"organization"
],
"type": "string"
},
"blocks": {
"description": "Structured layout blocks, rendered top-to-bottom as styled components. Each block is an object with a `type` and its fields:\n- hero: { type:'hero', title, kicker?, subtitle?, imageUrl?, align?:'left'|'center', ctaLabel?, ctaHref? }\n- richText: { type:'richText', markdown } (full GFM markdown)\n- callout: { type:'callout', variant:'info'|'tip'|'warning'|'success'|'danger', title?, markdown }\n- columns: { type:'columns', ratio?:'1-1'|'1-2'|'2-1', columns:[ [block,...], [block,...] ] } (exactly 2 columns of leaf blocks; no nested columns)\n- codeCard: { type:'codeCard', language?, filename?, code }\n- imageGrid: { type:'imageGrid', columns?:1|2|3|4, images:[{ url, alt?, caption? }] }\n- quote: { type:'quote', quote, attribution? }\n- embed: { type:'embed', provider:'youtube'|'loom'|'vimeo'|'generic', url, title? } (paste the normal share URL)\n- cta: { type:'cta', headline, body?, buttonLabel, buttonHref, secondaryLabel?, secondaryHref?, accent?:'#hex' }\n- divider: { type:'divider' }\n- html: { type:'html', html, sandboxed?, height? } (custom HTML. Default is sanitized + indexable, no scripts. Set sandboxed:true to run scripts inside an isolated iframe — NOT indexed by search.)\nBuild magazine-style posts by composing these, e.g. a hero, then richText, then a columns block, a callout, a codeCard, and a closing cta.",
"items": {
"additionalProperties": {},
"type": "object"
},
"type": "array"
},
"content": {
"description": "Optional markdown body (GFM + inline raw HTML). Used when `blocks` is not provided, and kept as a fallback when it is. Rich options: , <video src controls>, <iframe> embeds (16:9), <details><summary>, <mark>, <kbd>.",
"type": "string"
},
"coverImageUrl": {
"description": "URL of the cover image displayed at the top of the post",
"type": "string"
},
"excerpt": {
"description": "Short summary or preview text for the blog post",
"type": "string"
},
"seoDescription": {
"description": "Meta description for search engine result snippets",
"type": "string"
},
"seoKeywords": {
"description": "List of SEO keywords for search engine optimization",
"items": {
"type": "string"
},
"type": "array"
},
"seoTitle": {
"description": "Custom SEO title override for search engine results",
"type": "string"
},
"status": {
"default": "draft",
"description": "Initial publication status of the post (default: 'draft')",
"enum": [
"draft",
"published"
],
"type": "string"
},
"tags": {
"description": "List of tag names or slugs to categorize the post",
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "Title of the blog post (max 500 characters)",
"type": "string"
}
},
"required": [
"title",
"authorType"
],
"type": "object"
},
"name": "neuron_create_blog_post",
"outputSchema": null
},
{
"description": "Create a new AI bot with specified name, model, and behavior instructions. Returns the created bot object.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"assignment": {
"description": "One-sentence role definition for the bot (max 2000 chars)",
"type": "string"
},
"escalationPrompt": {
"description": "Prompt template used when escalating to a human agent (max 5000 chars)",
"type": "string"
},
"fallbackMessage": {
"description": "Message sent when the bot cannot understand user input (max 2000 chars)",
"type": "string"
},
"greetingMessage": {
"description": "Automatic greeting sent when a new conversation starts (max 2000 chars)",
"type": "string"
},
"llmModel": {
"description": "OpenRouter model ID (e.g., 'google/gemini-2.5-flash-lite', 'openrouter/auto')",
"type": "string"
},
"llmTemperature": {
"description": "Temperature parameter controlling response randomness (0 = deterministic, 2 = creative)",
"maximum": 2,
"minimum": 0,
"type": "number"
},
"maxTokens": {
"description": "Maximum number of tokens the bot can generate per response",
"exclusiveMinimum": 0,
"type": "number"
},
"metadata": {
"additionalProperties": {},
"description": "Arbitrary metadata object stored with the bot. Known keys: 'communityExitFollowUp' (auto-DM users who leave watched groups — { enabled: boolean, groupJids: string[], message: string with {name} placeholder }), 'learningConfig' (self-learning from conversations — { enabled: boolean, folder: string, groupChats: string[], dmPhones: string[], useAdminPhones: boolean }), 'loadBalancing' (multi-channel round-robin — { enabled: boolean, strategy: string }), 'welcomeNewMembers' (fine-tune welcome behavior — { batchWindowSeconds: number, groupJids: string[] }). Additional custom keys are preserved as-is.",
"type": "object"
},
"name": {
"description": "Display name for the bot",
"type": "string"
},
"responsibilities": {
"description": "Array of responsibility descriptions defining what the bot handles",
"items": {
"type": "string"
},
"type": "array"
},
"systemPrompt": {
"description": "System prompt that defines the bot's behavior, personality, and response guidelines",
"type": "string"
},
"welcomeMessage": {
"description": "Welcome message sent to new members joining groups the bot manages. Setting this field activates the batched welcome feature — new members are accumulated over a window (default 60s) and welcomed in a single message with @mentions. Set to null to disable.",
"type": "string"
},
"whatsappChannelId": {
"description": "Unique identifier (UUID) of the WhatsApp channel to associate with the bot",
"type": "string"
}
},
"required": [
"name",
"systemPrompt"
],
"type": "object"
},
"name": "neuron_create_bot",
"outputSchema": null
},
{
"description": "Create a new broadcast message in draft status. Provide recipients directly or use recipientSources to resolve from contact lists. The WhatsApp channel is auto-resolved if not specified.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Identifier (UUID) of a bot to send through. Each recipient's channel is picked by the bot's load-balancer + sticky sessions. Takes precedence over channelId.",
"type": "string"
},
"channelId": {
"description": "Identifier (UUID) of the WhatsApp channel to send through (auto-resolved from default channel if omitted)",
"type": "string"
},
"mediaUrl": {
"description": "URL of media to attach (required for image or document message types)",
"type": "string"
},
"message": {
"description": "Message content to broadcast to recipients",
"type": "string"
},
"messageType": {
"description": "Type of message to send (e.g., 'text', 'image', 'document')",
"type": "string"
},
"name": {
"description": "Display name or label for the broadcast",
"type": "string"
},
"recipientSources": {
"additionalProperties": false,
"description": "Resolve recipients dynamically from contact lists with filtering and exclusion",
"properties": {
"excludeListIds": {
"description": "Contact list identifiers (UUIDs or slugs) to exclude from recipients",
"items": {
"type": "string"
},
"type": "array"
},
"filters": {
"additionalProperties": false,
"description": "Additional filters to narrow down recipients",
"properties": {
"tags": {
"description": "Only include contacts matching these tags",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"listIds": {
"description": "Contact list identifiers (UUIDs or slugs) to include as recipients",
"items": {
"type": "string"
},
"type": "array"
},
"phones": {
"description": "Individual phone numbers in E.164 format to include",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"recipients": {
"description": "Direct list of recipients (alternative to recipientSources)",
"items": {
"additionalProperties": false,
"properties": {
"contactName": {
"description": "Display name of the recipient contact",
"type": "string"
},
"phone": {
"description": "Recipient phone number in E.164 format (e.g., '+2348012345678')",
"type": "string"
}
},
"required": [
"phone"
],
"type": "object"
},
"type": "array"
},
"scheduledAt": {
"description": "ISO 8601 date-time for scheduled broadcast delivery (e.g., '2025-12-31T10:00:00Z'). Creates as draft if omitted.",
"type": "string"
}
},
"required": [
"name",
"message"
],
"type": "object"
},
"name": "neuron_create_broadcast",
"outputSchema": null
},
{
"description": "Create a new booking calendar with a name, timezone, and visibility setting.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"color": {
"description": "Hex color code (e.g. '#6366f1')",
"type": "string"
},
"description": {
"description": "Calendar description",
"type": "string"
},
"name": {
"description": "Calendar display name",
"type": "string"
},
"notifyEmail": {
"description": "Send email notifications for bookings",
"type": "boolean"
},
"notifyEmailAddress": {
"description": "Host email address for notifications",
"type": "string"
},
"notifyPhone": {
"description": "Host phone number for WhatsApp notifications",
"type": "string"
},
"notifyWhatsapp": {
"description": "Send WhatsApp notifications for bookings",
"type": "boolean"
},
"slug": {
"description": "URL slug (auto-generated from name if omitted)",
"type": "string"
},
"timezone": {
"description": "IANA timezone (default: Africa/Lagos)",
"type": "string"
},
"visibility": {
"description": "Visibility: 'public' for public booking page, 'org-link' for link-only, 'private' for no public access",
"enum": [
"private",
"public",
"org-link"
],
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "neuron_create_calendar",
"outputSchema": null
},
{
"description": "Create a new outreach campaign with target audience, messaging template, and schedule configuration. Requires a Pro or Business plan.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"deadline": {
"description": "Campaign deadline in ISO 8601 date format (e.g., '2025-12-31')",
"type": "string"
},
"description": {
"description": "Campaign description shown in the marketplace listing",
"type": "string"
},
"guidelines": {
"description": "Instructions and guidelines for campaign participants",
"type": "string"
},
"message": {
"description": "The WhatsApp message template to send to contacts",
"type": "string"
},
"requireMutualContact": {
"description": "Only allow sends to contacts who have previously responded (default: false)",
"type": "boolean"
},
"rewardPerDelivery": {
"description": "Reward per successful delivery in kobo (e.g., 5000 = NGN 50)",
"type": "number"
},
"title": {
"description": "Campaign title displayed in marketplace and dashboard",
"type": "string"
},
"totalBudget": {
"description": "Total campaign budget in kobo (e.g., 500000 = NGN 5,000)",
"type": "number"
}
},
"required": [
"title",
"message",
"rewardPerDelivery",
"totalBudget",
"deadline"
],
"type": "object"
},
"name": "neuron_create_campaign",
"outputSchema": null
},
{
"description": "Create a new WhatsApp channel with either Meta Cloud API or Baileys (direct WhatsApp) integration. Meta Cloud channels require metaPhoneNumberId and metaAccessToken.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"metaAccessToken": {
"description": "Meta Access Token (required for meta_cloud type)",
"type": "string"
},
"metaPhoneNumberId": {
"description": "Meta Phone Number ID (required for meta_cloud type)",
"type": "string"
},
"name": {
"description": "Display name for the channel",
"type": "string"
},
"phoneNumber": {
"description": "Phone number for the channel (E.164 format, e.g., '+2348012345678')",
"type": "string"
},
"type": {
"description": "Integration type: 'meta_cloud' for Meta Cloud API or 'baileys' for direct WhatsApp connection",
"enum": [
"meta_cloud",
"baileys"
],
"type": "string"
}
},
"required": [
"name",
"type"
],
"type": "object"
},
"name": "neuron_create_channel",
"outputSchema": null
},
{
"description": "Create a new contact in the organization's address book. If notes are provided, they are saved as a structured note entry with source tracking.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"doNotAutoRespond": {
"description": "If true, the bot will never auto-respond to this contact (manual/API and human sends still work)",
"type": "boolean"
},
"doNotBroadcast": {
"description": "If true, this contact is permanently excluded from all broadcasts",
"type": "boolean"
},
"email": {
"description": "Email address of the contact",
"type": "string"
},
"name": {
"description": "Full name of the contact",
"type": "string"
},
"notes": {
"description": "Additional notes about the contact, saved as a structured entry",
"type": "string"
},
"phone": {
"description": "Contact phone number in E.164 format (e.g., +2348012345678)",
"type": "string"
},
"tags": {
"description": "Tags to categorize the contact (e.g., ['vendor', 'lagos'])",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"name",
"phone"
],
"type": "object"
},
"name": "neuron_create_contact",
"outputSchema": null
},
{
"description": "Create a new contact list. Slug is auto-generated from name if not provided. For dynamic lists, provide criteria with rules and/or an AI prompt.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"criteria": {
"additionalProperties": {},
"description": "Dynamic list criteria object: { rules?: { operator, conditions }, aiPrompt?, aiMaxResults? }",
"type": "object"
},
"description": {
"description": "Human-readable description of the list's purpose",
"type": "string"
},
"name": {
"description": "Display name for the contact list",
"type": "string"
},
"refreshSchedule": {
"description": "Refresh schedule for dynamic lists (default: 'manual')",
"enum": [
"manual",
"daily",
"weekly",
"on_access"
],
"type": "string"
},
"slug": {
"description": "URL-friendly identifier (auto-generated from name if omitted)",
"type": "string"
},
"type": {
"description": "List type (default: 'static')",
"enum": [
"static",
"dynamic",
"merged"
],
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "neuron_create_contact_list",
"outputSchema": null
},
{
"description": "Create a host-initiated event on a calendar. Supports attendees (with WhatsApp/email invitations), location, and daily/weekly/monthly recurrence.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"attendees": {
"description": "List of attendees to invite",
"items": {
"additionalProperties": false,
"properties": {
"contactId": {
"description": "Link to existing Neuron contact UUID",
"type": "string"
},
"email": {
"description": "Attendee email",
"type": "string"
},
"name": {
"description": "Attendee name",
"type": "string"
},
"phone": {
"description": "Attendee phone (for WhatsApp invitations)",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"type": "array"
},
"calendarId": {
"description": "Calendar UUID",
"type": "string"
},
"description": {
"description": "Event description",
"type": "string"
},
"endTime": {
"description": "End time (ISO 8601)",
"type": "string"
},
"locationType": {
"description": "Location type",
"enum": [
"video",
"phone",
"in_person",
"whatsapp",
"custom"
],
"type": "string"
},
"locationValue": {
"description": "Location details",
"type": "string"
},
"recurrenceRule": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"count": {
"description": "Max occurrences",
"type": "number"
},
"endAt": {
"description": "Stop generating after this ISO date",
"type": "string"
},
"interval": {
"description": "Every N days (default: 1)",
"type": "number"
},
"kind": {
"const": "daily",
"type": "string"
}
},
"required": [
"kind"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"count": {
"description": "Max occurrences",
"type": "number"
},
"days": {
"description": "Days of week: 0=Sun, 1=Mon, ..., 6=Sat",
"items": {
"type": "number"
},
"type": "array"
},
"endAt": {
"description": "Stop generating after this ISO date",
"type": "string"
},
"interval": {
"description": "Every N weeks (default: 1)",
"type": "number"
},
"kind": {
"const": "weekly",
"type": "string"
}
},
"required": [
"kind",
"days"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"count": {
"description": "Max occurrences",
"type": "number"
},
"dayOfMonth": {
"description": "Day of month (1-31)",
"type": "number"
},
"endAt": {
"description": "Stop generating after this ISO date",
"type": "string"
},
"interval": {
"description": "Every N months (default: 1)",
"type": "number"
},
"kind": {
"const": "monthly",
"type": "string"
}
},
"required": [
"kind",
"dayOfMonth"
],
"type": "object"
}
],
"description": "Recurrence rule — generates instances 12 weeks ahead"
},
"startTime": {
"description": "Start time (ISO 8601, e.g. '2025-03-15T09:00:00Z')",
"type": "string"
},
"title": {
"description": "Event title",
"type": "string"
}
},
"required": [
"calendarId",
"title",
"startTime",
"endTime"
],
"type": "object"
},
"name": "neuron_create_event",
"outputSchema": null
},
{
"description": "Create a bookable event type on a calendar (e.g. '30-min consultation').",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"bufferAfter": {
"description": "Buffer minutes after each booking",
"type": "number"
},
"bufferBefore": {
"description": "Buffer minutes before each booking",
"type": "number"
},
"calendarId": {
"description": "Calendar UUID to add the event type to",
"type": "string"
},
"color": {
"description": "Hex color code",
"type": "string"
},
"currency": {
"description": "3-letter currency code (e.g. 'NGN')",
"type": "string"
},
"description": {
"description": "Description shown on the booking page",
"type": "string"
},
"duration": {
"description": "Duration in minutes (default: 30)",
"type": "number"
},
"locationType": {
"description": "Meeting location type",
"enum": [
"video",
"phone",
"in_person",
"whatsapp",
"custom"
],
"type": "string"
},
"locationValue": {
"description": "Location details (URL, address, phone)",
"type": "string"
},
"maxAdvance": {
"description": "Maximum advance booking in minutes",
"type": "number"
},
"minNotice": {
"description": "Minimum notice in minutes before booking",
"type": "number"
},
"name": {
"description": "Event type name (e.g. 'Discovery Call')",
"type": "string"
},
"price": {
"description": "Price for paid bookings",
"type": "number"
},
"reminderMinutes": {
"description": "Array of reminder times in minutes before event (e.g. [1440, 60])",
"items": {
"type": "number"
},
"type": "array"
},
"requireConfirmation": {
"description": "Require host confirmation for new bookings",
"type": "boolean"
},
"slotInterval": {
"description": "Slot interval in minutes (default: 15)",
"type": "number"
}
},
"required": [
"calendarId",
"name"
],
"type": "object"
},
"name": "neuron_create_event_type",
"outputSchema": null
},
{
"description": "Create a new automation flow. A flow is a directed graph of nodes connected by edges. The graph MUST start with at least one trigger node (entry point). Edges connect nodes via output handles.\n\nBEFORE BUILDING: call neuron_get_flow_catalog and read its `reference` — it carries the JSON shapes you cannot guess: the ConditionGroup + operator list for branch/filter/switch conditions, the `cases`/`assignments`/`weekdays` composite shapes, the handle wiring map, and copy-ready `examples`. Condition `field` on a logic node must be a {{template}} (e.g. '{{trigger.text}}'); on a trigger's config.conditions it is a raw payload path (e.g. 'text').\n\nAFTER SAVING: the flow always saves, but the response includes a `warnings` array flagging likely bugs (unknown node type, missing required field, malformed conditions/cases/assignments, edges wired to a handle a node never emits, missing trigger). Always check it and fix any warnings — a warning means that part will silently no-op at run time.\n\nTEMPLATE RESOLUTION: Node config values support {{…}} templates resolved at runtime:\n {{trigger.text}} — the triggering message text\n {{trigger.contactPhone}} — the sender's phone\n {{trigger.senderName}} — the sender's name\n {{vars.myVar}} — a variable set by logic.set_variable\n {{nodes.n_abc.output.text}} — output from a previous node\n {{= amount * 1.1 }} — inline expression (arithmetic, comparisons, ternary)\n\nERROR HANDLING: Any node's config can include __errorHandling: { continueOnFail: true, retryCount: 3, retryDelayMs: 1000 } to retry on failure with exponential backoff and/or continue on the 'error' handle instead of failing the run.\n\nWIRING RULES:\n - logic.branch: 'true' and 'false' handles\n - logic.switch / logic.ai_router: one handle per case id, plus 'default'\n - logic.wait_for_reply: 'default' (replied) and 'timeout'\n - logic.wait_for_approval: 'approved', 'rejected', 'timeout'\n - logic.wait_first_of: 'reply', 'event', 'timeout'\n - logic.loop: 'loop' (body) and 'done'\n - action.lookup_contact: 'found' and 'not_found'\n - action.call_flow: 'default' (returned), 'timeout', 'error'\n - All other nodes: 'default' handle (or 'error' when continueOnFail is on)",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"description": {
"description": "Optional description of what the flow does.",
"type": "string"
},
"enabled": {
"description": "Whether the flow should be active immediately (default: false).",
"type": "boolean"
},
"graph": {
"additionalProperties": false,
"description": "The flow graph — nodes and edges. Omit to create an empty flow (edit later in the UI).",
"properties": {
"edges": {
"description": "Array of edges connecting nodes. Each edge fires when its source node emits on the matching sourceHandle.",
"items": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique edge id, e.g. 'e_msg_reply'.",
"type": "string"
},
"source": {
"description": "Source node id.",
"type": "string"
},
"sourceHandle": {
"description": "Which output port of the source node this edge leaves from. Branch nodes use 'true'/'false', switch/router use case ids, wait nodes use 'default'/'timeout', lookup uses 'found'/'not_found'. Defaults to 'default'.",
"type": "string"
},
"target": {
"description": "Target node id.",
"type": "string"
}
},
"required": [
"id",
"source",
"target"
],
"type": "object"
},
"type": "array"
},
"nodes": {
"description": "Array of flow nodes.",
"items": {
"additionalProperties": false,
"properties": {
"config": {
"additionalProperties": {},
"default": {},
"description": "Node-specific configuration. Values may contain {{…}} templates resolved at runtime against trigger, vars, and nodes.",
"type": "object"
},
"id": {
"description": "Stable node id unique within the flow, e.g. 'n_a1b2' or 't_msg'.",
"type": "string"
},
"label": {
"description": "Human label overriding the registry default.",
"type": "string"
},
"position": {
"additionalProperties": false,
"description": "Canvas position (UI layout). Use x=300 as center, space nodes ~160px apart vertically.",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"type": "object"
},
"type": {
"description": "Registry key — e.g. 'trigger.message_received', 'logic.branch', 'action.send_message'. Use neuron_get_flow_catalog to see all available types.",
"type": "string"
}
},
"required": [
"id",
"type"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"nodes",
"edges"
],
"type": "object"
},
"name": {
"description": "Human-readable name for the flow.",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "neuron_create_flow",
"outputSchema": null
},
{
"description": "Create a new WhatsApp group and seed its members from any combination of sources: other groups (combine/copy), contact lists, individual contacts, pasted phone numbers, or the whole address book. Optionally pass a unique `slug` to address the group later without its JID. Members blocked by privacy come back in the failed list. Uses the org's default connected session unless `channelId` is given.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"allContacts": {
"description": "Union the org's entire address book",
"type": "boolean"
},
"channelId": {
"description": "Session (connected WhatsApp number) UUID. Omit to use the default.",
"type": "string"
},
"contactIds": {
"description": "Existing contact ids",
"items": {
"type": "string"
},
"type": "array"
},
"description": {
"description": "Optional group description",
"type": "string"
},
"excludeListIds": {
"description": "Subtract every member of these lists",
"items": {
"type": "string"
},
"type": "array"
},
"fromGroupIds": {
"description": "Copy/combine members live from these WhatsApp group JIDs",
"items": {
"type": "string"
},
"type": "array"
},
"ifExists": {
"description": "When the slug is already taken: 'error' (default) fails, 'return' returns the existing group and adds any given members to it (idempotent create).",
"enum": [
"return",
"error"
],
"type": "string"
},
"listIds": {
"description": "Contact list ids or slugs — pulls every member",
"items": {
"type": "string"
},
"type": "array"
},
"phones": {
"description": "Raw phone numbers, e.g. pasted from a CSV",
"items": {
"type": "string"
},
"type": "array"
},
"slug": {
"description": "Optional org-unique handle (lowercase letters, numbers, hyphens)",
"type": "string"
},
"subject": {
"description": "Group name",
"maxLength": 100,
"minLength": 1,
"type": "string"
},
"tags": {
"description": "Keep only contacts carrying one of these tags",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"subject"
],
"type": "object"
},
"name": "neuron_create_group",
"outputSchema": null
},
{
"description": "Add a new entry (note, document, or information piece) to a knowledge base.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"content": {
"description": "Content or body of the entry",
"type": "string"
},
"folder": {
"description": "Folder to organize the entry: 'general', 'skills', 'contexts', 'documents', or 'faqs' (default: general)",
"type": "string"
},
"id": {
"description": "Unique identifier of the knowledge base",
"type": "string"
},
"metadata": {
"additionalProperties": {},
"description": "Optional metadata key-value pairs for the entry",
"type": "object"
},
"source": {
"description": "Source type of the entry (default: manual)",
"enum": [
"manual",
"document",
"url"
],
"type": "string"
},
"title": {
"description": "Title of the entry",
"type": "string"
}
},
"required": [
"id",
"title",
"content"
],
"type": "object"
},
"name": "neuron_create_kb_entry",
"outputSchema": null
},
{
"description": "Create a new knowledge base to store and organize information, documents, and entries.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"description": {
"description": "Optional description of the knowledge base purpose",
"type": "string"
},
"name": {
"description": "Name of the knowledge base",
"type": "string"
},
"rootInstruction": {
"description": "Optional root instruction or context for the knowledge base",
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"name": "neuron_create_knowledge_base",
"outputSchema": null
},
{
"description": "Create a lead source. `config` depends on type: text_paste {text}; web_scrape {url|urls[]}; document {mediaUrl,mimeType}; tool_output {toolId,args?}; instagram/x {channelId, query?|hashtag?, limit?}; csv {rows[]}; stream {triggerTaskId?} (fed by the ingest endpoint). Set scheduleKind cron/interval/once for recurring (schedule: cron {time,days?} / interval {everyMinutes} / once {runAt}).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"config": {
"additionalProperties": {},
"type": "object"
},
"enabled": {
"type": "boolean"
},
"name": {
"type": "string"
},
"schedule": {
"additionalProperties": {},
"type": "object"
},
"scheduleKind": {
"enum": [
"cron",
"interval",
"once",
"manual"
],
"type": "string"
},
"timezone": {
"type": "string"
},
"type": {
"description": "Lead source type. facebook = Meta Ads Library advertisers; web/IG/X/FB scraping needs DeepAPI configured; TikTok has no native provider (use tool_output).",
"enum": [
"csv",
"text_paste",
"document",
"web_scrape",
"tool_output",
"instagram",
"x",
"facebook",
"tiktok",
"stream"
],
"type": "string"
}
},
"required": [
"name",
"type"
],
"type": "object"
},
"name": "neuron_create_lead_source",
"outputSchema": null
},
{
"description": "Create a paced campaign that messages the next N un-reached members of a contact list on a schedule. The cursor follows the LIVE list — as members are added or removed, only current members get reached, and nobody is messaged twice per cycle. Multiple campaigns can run on the same or different lists concurrently. On exhaust, either stop or loop (start over after a cooldown).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"batchSize": {
"description": "How many contacts to message per run (default: 20)",
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"botId": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"description": "Bot to send through when sendMode='bot'; its channel is used"
},
"channelId": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"description": "WhatsApp channel to send from; falls back to the org default / first connected channel"
},
"listId": {
"description": "The contact list to run the campaign over",
"format": "uuid",
"type": "string"
},
"loopCooldownMs": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
],
"description": "Milliseconds to wait before looping (default: 24h)"
},
"messageSource": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "static",
"type": "string"
},
"text": {
"description": "The message body sent to each contact in the batch",
"minLength": 1,
"type": "string"
}
},
"required": [
"kind",
"text"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "rotation",
"type": "string"
},
"messages": {
"description": "Pool of messages",
"items": {
"minLength": 1,
"type": "string"
},
"minItems": 1,
"type": "array"
},
"mode": {
"description": "Rotate in order (default) or pick randomly per run",
"enum": [
"sequential",
"random"
],
"type": "string"
}
},
"required": [
"kind",
"messages"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "content",
"type": "string"
},
"ref": {
"description": "A Neuron Note ID; its content becomes the message, fetched live at each run",
"minLength": 1,
"type": "string"
}
},
"required": [
"kind",
"ref"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "AI-written message generated live at each run (BYOK-aware)",
"properties": {
"botId": {
"description": "Bot whose system prompt supplies business context",
"format": "uuid",
"type": "string"
},
"kind": {
"const": "ai",
"type": "string"
},
"perContact": {
"description": "Generate a distinct message per recipient (slower, more tokens). Default false = one message for the whole batch",
"type": "boolean"
},
"personaId": {
"description": "Persona whose voice the message is written in",
"format": "uuid",
"type": "string"
},
"prompt": {
"description": "Instruction for the message the AI should write",
"minLength": 1,
"type": "string"
}
},
"required": [
"kind",
"prompt"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Message fetched from your webhook at each run",
"properties": {
"kind": {
"const": "webhook",
"type": "string"
},
"perContact": {
"description": "Call once per recipient with the contact in the payload. Default false = one call per batch",
"type": "boolean"
},
"url": {
"description": "POSTed { campaignId, listId, contact? }; returns { message } or a bare string",
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"url"
],
"type": "object"
}
],
"description": "How the message is resolved live at each batch run: 'static' (fixed), 'rotation' (cycle through several), 'ai' (AI-written), 'webhook' (from your service), or 'content' (a saved Neuron Note)."
},
"name": {
"description": "Campaign name (default: 'Campaign')",
"maxLength": 255,
"type": "string"
},
"onExhaust": {
"description": "When the whole list has been reached: 'stop' (default) completes the campaign; 'loop' starts a new cycle after loopCooldownMs",
"enum": [
"stop",
"loop"
],
"type": "string"
},
"schedule": {
"allOf": [
{
"anyOf": [
{
"additionalProperties": false,
"properties": {
"everyMs": {
"description": "Milliseconds between runs, e.g. 86400000 for daily",
"minimum": 60000,
"type": "integer"
},
"kind": {
"const": "interval",
"type": "string"
}
},
"required": [
"kind",
"everyMs"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"hour": {
"description": "UTC hour",
"maximum": 23,
"minimum": 0,
"type": "integer"
},
"kind": {
"const": "daily",
"type": "string"
},
"minute": {
"maximum": 59,
"minimum": 0,
"type": "integer"
}
},
"required": [
"kind",
"hour"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"days": {
"description": "Days of week, 0=Sun … 6=Sat",
"items": {
"maximum": 6,
"minimum": 0,
"type": "integer"
},
"minItems": 1,
"type": "array"
},
"hour": {
"description": "UTC hour",
"maximum": 23,
"minimum": 0,
"type": "integer"
},
"kind": {
"const": "weekly",
"type": "string"
},
"minute": {
"maximum": 59,
"minimum": 0,
"type": "integer"
}
},
"required": [
"kind",
"days",
"hour"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"dayOfMonth": {
"maximum": 31,
"minimum": 1,
"type": "integer"
},
"hour": {
"description": "UTC hour",
"maximum": 23,
"minimum": 0,
"type": "integer"
},
"kind": {
"const": "monthly",
"type": "string"
},
"minute": {
"maximum": 59,
"minimum": 0,
"type": "integer"
}
},
"required": [
"kind",
"dayOfMonth",
"hour"
],
"type": "object"
}
]
},
{
"properties": {
"endAt": {
"description": "ISO date; the campaign completes after this",
"type": "string"
},
"maxRuns": {
"description": "Stop after this many runs",
"minimum": 1,
"type": "integer"
},
"timezone": {
"description": "IANA timezone the daily/weekly/monthly time is interpreted in, e.g. 'Africa/Lagos'. Defaults to UTC. Ignored for 'interval'. The schedule holds its local wall-clock time across DST.",
"type": "string"
}
},
"type": "object"
}
],
"description": "When each batch fires. e.g. daily at 9am in Africa/Lagos, or every weekend."
},
"sendMode": {
"description": "'message' sends a plain broadcast; 'bot' initiates the conversation through a bot (default: 'message')",
"enum": [
"message",
"bot"
],
"type": "string"
},
"startImmediately": {
"description": "Fire the first batch right away (default: true). Set false to wait for the first scheduled slot",
"type": "boolean"
}
},
"required": [
"listId",
"messageSource",
"schedule"
],
"type": "object"
},
"name": "neuron_create_list_campaign",
"outputSchema": null
},
{
"description": "Create a new WhatsApp Channel newsletter for one-way broadcast updates. Requires a connected Baileys session on the specified channel.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "Identifier (UUID) of the WhatsApp session channel to create the newsletter on",
"type": "string"
},
"description": {
"description": "Description of the newsletter's purpose and content",
"type": "string"
},
"name": {
"description": "Display name of the newsletter visible to subscribers",
"type": "string"
}
},
"required": [
"channelId",
"name"
],
"type": "object"
},
"name": "neuron_create_newsletter",
"outputSchema": null
},
{
"description": "Register a new outbound webhook that sends HTTP POST requests to an external URL when specified bot events occur. Supported events: message.created, message.assistant, conversation.created, conversation.escalated, conversation.closed, bot.paused, bot.resumed.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to create the outbound webhook for",
"type": "string"
},
"eventTypes": {
"description": "Array of event types that should trigger this webhook",
"items": {
"enum": [
"message.created",
"message.assistant",
"conversation.created",
"conversation.escalated",
"conversation.closed",
"bot.paused",
"bot.resumed"
],
"type": "string"
},
"type": "array"
},
"filterPrompt": {
"description": "Optional LLM prompt to selectively filter which events are forwarded (e.g., 'only forward escalations about billing')",
"type": "string"
},
"name": {
"description": "Human-readable name for the outbound webhook",
"type": "string"
},
"url": {
"description": "Destination URL that will receive webhook event payloads (HTTPS recommended)",
"type": "string"
}
},
"required": [
"botId",
"name",
"url",
"eventTypes"
],
"type": "object"
},
"name": "neuron_create_outbound_webhook",
"outputSchema": null
},
{
"description": "Create a digital product/service with a public checkout link. Amount in kobo (minor units): ₦1 = 100. Minimum ₦500 = 50000. For 'file' delivery, upload the file first (neuron_upload_media) and pass its URL as deliveryFileUrl. On payment, Neuron confirms it and delivers the product to the buyer's WhatsApp automatically.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "Category label e.g. 'Productivity'",
"type": [
"string",
"null"
]
},
"channelId": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"description": "WhatsApp session UUID used to deliver the product (defaults to the org default channel)"
},
"checkoutFields": {
"description": "Custom checkout questions the buyer answers (name, address, specs/customisations…). Their answers are attached to the order and sent to the seller.",
"items": {
"additionalProperties": false,
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"options": {
"items": {
"type": "string"
},
"type": "array"
},
"placeholder": {
"type": "string"
},
"required": {
"type": "boolean"
},
"type": {
"enum": [
"text",
"textarea",
"number",
"email",
"phone",
"select"
],
"type": "string"
}
},
"required": [
"key",
"label",
"type"
],
"type": "object"
},
"type": "array"
},
"codeMode": {
"description": "For deliveryType 'code': 'shared' (same text to every buyer), 'pool' (a unique code per sale from codes you upload — sells out when empty), or 'generated' (auto-mint a unique license key per sale)",
"enum": [
"shared",
"pool",
"generated"
],
"type": "string"
},
"codes": {
"description": "For codeMode 'pool': the unique codes/keys to add (one gets sent per buyer). Appended to any existing pool.",
"items": {
"type": "string"
},
"type": "array"
},
"content": {
"description": "Rich product-page content blocks. Ordered array of {type, ...}: heading {text,level}, text {markdown}, image {url,caption}, video {url}, callout {emoji,text}, collapsible {title,blocks[]}, divider {}, button {label,url}, embed {url}, spacer {}",
"type": "array"
},
"coverColor": {
"description": "Cover colour (hex) for 'color'/'gradient' cover types",
"type": [
"string",
"null"
]
},
"coverColor2": {
"description": "Second colour (hex) for 'gradient' cover",
"type": [
"string",
"null"
]
},
"coverEmoji": {
"description": "Emoji used as a cover fallback (e.g. 📓)",
"type": [
"string",
"null"
]
},
"coverImageUrl": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
],
"description": "Cover image URL"
},
"coverType": {
"description": "How the cover renders",
"enum": [
"none",
"emoji",
"image",
"color",
"gradient"
],
"type": "string"
},
"currency": {
"description": "ISO currency (default NGN)",
"type": "string"
},
"deliveryFileName": {
"description": "Filename shown in the WhatsApp document",
"type": [
"string",
"null"
]
},
"deliveryFileUrl": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
],
"description": "For deliveryType 'file': the uploaded file URL (upload first with neuron_upload_media)"
},
"deliveryText": {
"description": "For 'link'/'code': the link or code the buyer receives. Optional note for 'file'.",
"type": [
"string",
"null"
]
},
"deliveryType": {
"description": "How the product is delivered: 'file' (uploaded file), 'link' (URL), or 'code' (text/code)",
"enum": [
"file",
"link",
"code"
],
"type": "string"
},
"description": {
"description": "Rich description / what the buyer gets",
"type": "string"
},
"enabled": {
"description": "Whether the product is live",
"type": "boolean"
},
"feePayer": {
"description": "'buyer' (fee added on top, seller gets full price — default) or 'seller' (fee deducted)",
"enum": [
"buyer",
"seller"
],
"type": "string"
},
"kind": {
"description": "Short label e.g. 'E-book', 'Presets', 'Service'",
"type": [
"string",
"null"
]
},
"membership": {
"description": "Make this a recurring subscription/membership: it tracks a paid period per buyer, renews from their Neuron wallet when possible (else emails a reminder — no card auto-charge), and marks them lapsed when the period + grace passes. React to membership.started/renewed/lapsed in Flows to deliver whatever the membership grants.",
"type": "boolean"
},
"membershipGraceDays": {
"description": "Days after the period ends before an unpaid member lapses (and, if a group is attached, is removed from it). Default 1.",
"minimum": 0,
"type": "integer"
},
"membershipGroupName": {
"description": "Group subject used when the attached group is auto-created (defaults to the product title). Only relevant with membershipGroupSlug.",
"type": [
"string",
"null"
]
},
"membershipGroupSlug": {
"description": "OPTIONAL: attach a WhatsApp group as a membership perk. Org-unique handle (lowercase letters, numbers, hyphens); the group is created on the first sale, buyers are added on renewal and removed on lapse. Your connected number must be a group admin. Omit for a membership that isn't group-based.",
"type": [
"string",
"null"
]
},
"membershipInterval": {
"anyOf": [
{
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing period. Required when membership is true."
},
"originalPriceMinor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Optional compare-at / 'was' price (kobo), shown struck through. Must be ≥ current price."
},
"priceMinor": {
"description": "Current price (charged). Amount in kobo (minor units): ₦1 = 100. Minimum ₦500 = 50000. Set 0 for a free product (no payment).",
"type": "integer"
},
"theme": {
"additionalProperties": {
"type": "string"
},
"description": "Per-product theme: { bg, accent, text (hex), mode: 'light'|'dark', layout: 'hero'|'side', coverAspect: '16/10'|'3/2'|'1/1'|'4/5', cta: buy-button label e.g. 'Reserve your hour' }",
"type": "object"
},
"title": {
"description": "Product title shown to buyers",
"type": "string"
}
},
"required": [
"title",
"priceMinor",
"deliveryType"
],
"type": "object"
},
"name": "neuron_create_product",
"outputSchema": null
},
{
"description": "Create a draft SMS campaign. Choose the audience via sourceType: 'all_contacts' or 'contact_list' (your own contacts), 'phones' (bring your own list — raw numbers you pass in), 'platform' (the wider Neuron audience — budget required, sent over the bulk campaign route), or 'curated' (SMS-opted-in marketplace lists via poolEntryIds; the list owner earns ₦2/contact). After creating, call neuron_estimate_sms_campaign to price it, then neuron_send_sms_campaign. Requires SMS to be enabled by an admin and a configured provider.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"budget": {
"description": "Budget in kobo (required for sourceType 'platform'; caps how many messages send)",
"type": "number"
},
"countryCodes": {
"description": "Restrict to these country calling codes (e.g. ['234']). Omit for all.",
"items": {
"type": "string"
},
"type": "array"
},
"message": {
"description": "The SMS text to send. Include an opt-out (e.g. 'Reply STOP').",
"type": "string"
},
"phones": {
"description": "Raw phone numbers to text (required when sourceType is 'phones'); normalized + de-duplicated server-side, invalid ones dropped",
"items": {
"type": "string"
},
"type": "array"
},
"poolEntryIds": {
"description": "SMS-enabled list-pool entry UUIDs (required when sourceType is 'curated'; find them with neuron_browse_list_pool { smsEnabled: true })",
"items": {
"type": "string"
},
"type": "array"
},
"smsChannelId": {
"description": "BYOK SMS channel UUID to send through instead of the platform provider",
"type": "string"
},
"sourceListIds": {
"description": "Contact list UUIDs (required when sourceType is 'contact_list')",
"items": {
"type": "string"
},
"type": "array"
},
"sourceType": {
"description": "Audience source",
"enum": [
"all_contacts",
"contact_list",
"phones",
"platform",
"curated"
],
"type": "string"
},
"title": {
"description": "Internal campaign title",
"type": "string"
},
"type": {
"description": "'blast' sends to everyone at once (default); 'drip' sends in scheduled batches",
"enum": [
"blast",
"drip"
],
"type": "string"
}
},
"required": [
"title",
"message",
"sourceType"
],
"type": "object"
},
"name": "neuron_create_sms_campaign",
"outputSchema": null
},
{
"description": "Create a new social media channel with platform credentials. Supports Instagram and Twitter/X. Credentials should be the full session JSON including account, cookies, headers, and platform-specific tokens.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"credentials": {
"description": "Session credentials as JSON string with account, session.cookies, session.headers, etc.",
"type": "string"
},
"label": {
"description": "Display name for the channel (e.g., 'Brand IG Account')",
"type": "string"
},
"platform": {
"description": "Social media platform: 'instagram' or 'twitter'",
"enum": [
"instagram",
"twitter"
],
"type": "string"
},
"username": {
"description": "Social media username (without @)",
"type": "string"
}
},
"required": [
"platform",
"label"
],
"type": "object"
},
"name": "neuron_create_social_channel",
"outputSchema": null
},
{
"description": "Create a scheduled autonomous task for a bot. The instruction is a self-contained, natural-language directive the bot executes with its tools (find stale conversations, message contacts, schedule follow-ups, etc.). Sends are always screened against Do-Not-Contact, a per-run cap, and a no-repeat window.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "UUID of the bot",
"type": "string"
},
"config": {
"additionalProperties": false,
"description": "Safety / execution config for the task.",
"properties": {
"approvalPhone": {
"description": "Admin phone (international format) to send the approval prompt to.",
"type": "string"
},
"channelId": {
"description": "WhatsApp channel UUID to act on (defaults to the bot's primary).",
"type": "string"
},
"dryRun": {
"description": "Simulate the run without actually sending messages.",
"type": "boolean"
},
"maxActions": {
"description": "Hard cap on outbound actions per run (default 25).",
"type": "integer"
},
"noRepeatDays": {
"description": "Never re-message the same contact within this many days (default 14).",
"type": "integer"
},
"requiresApproval": {
"description": "Ask an admin on WhatsApp to approve before the task sends.",
"type": "boolean"
}
},
"type": "object"
},
"enabled": {
"description": "Whether the task is active (default true).",
"type": "boolean"
},
"instruction": {
"description": "What the task should do, in natural language (self-contained; preserve any exact message copy verbatim).",
"type": "string"
},
"schedule": {
"additionalProperties": {},
"description": "Schedule payload matching scheduleKind. cron: { time: 'HH:MM', days?: number[] } (0=Sunday..6=Saturday; empty/omitted = every day). interval: { everyMinutes: number }. once: { runAt: ISO8601 string }. manual: {}.",
"type": "object"
},
"scheduleKind": {
"description": "cron = recurring at a clock time (slot); interval = every N minutes; once = a single future moment; manual = only runs on demand.",
"enum": [
"cron",
"interval",
"once",
"manual"
],
"type": "string"
},
"timezone": {
"description": "IANA timezone (e.g. Africa/Lagos). Defaults to UTC.",
"type": "string"
},
"title": {
"description": "Short title for the task",
"type": "string"
}
},
"required": [
"botId",
"title",
"instruction",
"scheduleKind"
],
"type": "object"
},
"name": "neuron_create_task",
"outputSchema": null
},
{
"description": "Create a custom API tool that the bot can invoke during conversations to fetch external data or trigger actions.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"authType": {
"description": "Authentication type for the endpoint",
"enum": [
"none",
"api_key",
"bearer",
"basic",
"oauth2"
],
"type": "string"
},
"botId": {
"description": "Unique identifier (UUID) of the bot to create the tool for",
"type": "string"
},
"config": {
"additionalProperties": false,
"description": "Tool configuration specifying the endpoint and request details",
"properties": {
"asyncConfig": {
"additionalProperties": false,
"description": "Configuration for async submit-poll-download APIs like fal.ai and Replicate",
"properties": {
"completedStatuses": {
"description": "Status values indicating completion (e.g. ['COMPLETED', 'succeeded'])",
"items": {
"type": "string"
},
"type": "array"
},
"failedStatuses": {
"description": "Status values indicating failure (e.g. ['FAILED', 'failed', 'canceled'])",
"items": {
"type": "string"
},
"type": "array"
},
"jobIdPath": {
"description": "Dot-notation path to extract job ID from initial response (e.g. 'id', 'request_id')",
"type": "string"
},
"maxPollingMs": {
"description": "Maximum time to poll before timeout (default: 120000)",
"maximum": 300000,
"minimum": 5000,
"type": "number"
},
"pollingEndpoint": {
"description": "URL template with {{jobId}} placeholder for polling job status",
"type": "string"
},
"pollingIntervalMs": {
"description": "Milliseconds between poll requests (default: 2000)",
"maximum": 30000,
"minimum": 500,
"type": "number"
},
"resultPath": {
"description": "Dot-notation path to extract final result from completed response (e.g. 'output')",
"type": "string"
},
"statusPath": {
"description": "Dot-notation path to status field in poll response (e.g. 'status')",
"type": "string"
}
},
"type": "object"
},
"bodyTemplate": {
"description": "Handlebars template for the request body, populated with conversation context",
"type": "string"
},
"endpoint": {
"description": "Target HTTP endpoint URL for http_api tools",
"type": "string"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"description": "HTTP headers to include with each request as key-value pairs",
"type": "object"
},
"mcpServerUrl": {
"description": "MCP server URL for mcp-type tools",
"type": "string"
},
"method": {
"description": "HTTP method to use",
"enum": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE"
],
"type": "string"
},
"parametersSchema": {
"additionalProperties": {},
"description": "JSON Schema describing the parameters the tool accepts",
"type": "object"
},
"webhookUrl": {
"description": "Webhook URL for webhook-type tools",
"type": "string"
}
},
"type": "object"
},
"description": {
"description": "Description of what the tool does and when the bot should use it",
"maxLength": 1000,
"minLength": 1,
"type": "string"
},
"name": {
"description": "Human-readable name for the tool",
"type": "string"
},
"rateLimit": {
"description": "Maximum number of requests per minute allowed for this tool",
"type": "number"
},
"timeoutMs": {
"description": "Request timeout in milliseconds (default: 30000)",
"type": "number"
},
"type": {
"description": "Type of the tool integration",
"enum": [
"http_api",
"webhook",
"mcp"
],
"type": "string"
}
},
"required": [
"botId",
"name",
"description",
"type",
"config"
],
"type": "object"
},
"name": "neuron_create_tool",
"outputSchema": null
},
{
"description": "Register a new inbound webhook endpoint that triggers bot actions when called by an external service.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to create the webhook for",
"type": "string"
},
"eventType": {
"description": "Type of event this webhook handles (e.g., 'order.created', 'payment.received')",
"type": "string"
},
"isActive": {
"description": "Whether the webhook is active and accepting requests (default: true)",
"type": "boolean"
},
"name": {
"description": "Human-readable name for the webhook",
"type": "string"
},
"processingPrompt": {
"description": "Prompt instructions to guide bot processing of incoming webhook data",
"type": "string"
},
"slug": {
"description": "URL-friendly slug for the webhook endpoint (auto-generated if omitted)",
"type": "string"
}
},
"required": [
"botId",
"name"
],
"type": "object"
},
"name": "neuron_create_webhook",
"outputSchema": null
},
{
"description": "Permanently delete a draft ad request. Only ad requests in draft status can be deleted.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adRequestId": {
"description": "Unique identifier (UUID) of the draft ad request to delete",
"type": "string"
}
},
"required": [
"adRequestId"
],
"type": "object"
},
"name": "neuron_delete_ad_request",
"outputSchema": null
},
{
"description": "Permanently delete a blog post by its ID. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the blog post to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_blog_post",
"outputSchema": null
},
{
"description": "Permanently delete a bot and all its associated data. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the bot to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_bot",
"outputSchema": null
},
{
"description": "Permanently delete a broadcast and its recipient data. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the broadcast to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_broadcast",
"outputSchema": null
},
{
"description": "Permanently delete a calendar and all its event types, bookings, and availability data.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Calendar UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_calendar",
"outputSchema": null
},
{
"description": "Permanently delete a campaign that is in 'draft' status. Active or funded campaigns cannot be deleted.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the draft campaign to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_campaign",
"outputSchema": null
},
{
"description": "Permanently delete a WhatsApp channel and disconnect any active sessions. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the channel to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_channel",
"outputSchema": null
},
{
"description": "Permanently delete a contact and remove them from all contact lists. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the contact to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_contact",
"outputSchema": null
},
{
"description": "Permanently delete a contact list. System-protected lists (e.g., 'Do Not Contact') cannot be deleted.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"idOrSlug": {
"description": "Unique identifier (UUID) or URL-friendly slug of the contact list to delete",
"type": "string"
}
},
"required": [
"idOrSlug"
],
"type": "object"
},
"name": "neuron_delete_contact_list",
"outputSchema": null
},
{
"description": "Delete a host-created event. For recurring events, use scope to control what gets deleted: 'single' (just this one), 'future' (this and all future), or 'all' (entire series).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Event (booking) UUID",
"type": "string"
},
"scope": {
"description": "Delete scope for recurring events (default: 'single')",
"enum": [
"single",
"future",
"all"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_event",
"outputSchema": null
},
{
"description": "Permanently delete an event type and all its bookings.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Event type UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_event_type",
"outputSchema": null
},
{
"description": "Soft-delete a flow. It stops running but can be restored. Running executions are not cancelled.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "UUID of the flow to delete.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_flow",
"outputSchema": null
},
{
"description": "Permanently delete a completed, failed, or cancelled flow run and all its step data.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"runId": {
"description": "UUID of the run to delete.",
"type": "string"
}
},
"required": [
"runId"
],
"type": "object"
},
"name": "neuron_delete_flow_run",
"outputSchema": null
},
{
"description": "Permanently delete a specific entry from a knowledge base.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"entryId": {
"description": "Unique identifier of the entry to delete",
"type": "string"
},
"kbId": {
"description": "Unique identifier of the knowledge base",
"type": "string"
}
},
"required": [
"kbId",
"entryId"
],
"type": "object"
},
"name": "neuron_delete_kb_entry",
"outputSchema": null
},
{
"description": "Permanently delete a knowledge base and all its associated entries and documents.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier of the knowledge base to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_knowledge_base",
"outputSchema": null
},
{
"description": "Permanently delete a paced list campaign and its reached-set. Does not delete the contacts or the list.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Campaign ID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_list_campaign",
"outputSchema": null
},
{
"description": "Permanently delete a specific message from a conversation. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the conversation",
"type": "string"
},
"msgId": {
"description": "Unique identifier (UUID) of the message to delete",
"type": "string"
}
},
"required": [
"id",
"msgId"
],
"type": "object"
},
"name": "neuron_delete_message",
"outputSchema": null
},
{
"description": "Permanently delete a WhatsApp Channel newsletter and remove it from WhatsApp. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the newsletter to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_newsletter",
"outputSchema": null
},
{
"description": "Permanently remove an outbound webhook. The external endpoint will no longer receive event notifications from this bot.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the outbound webhook to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_outbound_webhook",
"outputSchema": null
},
{
"description": "Remove a date-specific availability override, reverting to the default weekly hours.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"overrideId": {
"description": "Override UUID",
"type": "string"
}
},
"required": [
"overrideId"
],
"type": "object"
},
"name": "neuron_delete_override",
"outputSchema": null
},
{
"description": "Delete a voice persona.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Persona UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_persona",
"outputSchema": null
},
{
"description": "Permanently delete a product. Existing orders are retained.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Product UUID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_product",
"outputSchema": null
},
{
"description": "Delete a draft SMS campaign. Only draft campaigns can be deleted.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "UUID of the draft SMS campaign to delete",
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "neuron_delete_sms_campaign",
"outputSchema": null
},
{
"description": "Permanently delete a social media channel and disconnect any active sessions. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the social channel to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_social_channel",
"outputSchema": null
},
{
"description": "Delete a scheduled task. This is a soft delete — the task stops running immediately.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "UUID of the task",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_task",
"outputSchema": null
},
{
"description": "Permanently remove a custom API tool integration from a bot. The bot will no longer be able to invoke this tool in conversations.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the tool to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_tool",
"outputSchema": null
},
{
"description": "Permanently remove an inbound webhook from a bot. External services will no longer be able to trigger this endpoint.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the webhook to delete",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_delete_webhook",
"outputSchema": null
},
{
"description": "Re-send a paid-but-undelivered order to the buyer over WhatsApp/email. Use when a sale settled while no WhatsApp session was connected; connect one first, then deliver.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Order UUID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_deliver_order",
"outputSchema": null
},
{
"description": "Remove a knowledge base from a bot. The bot will no longer reference this knowledge base when generating responses.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the bot",
"type": "string"
},
"kbId": {
"description": "Unique identifier (UUID) of the knowledge base to detach",
"type": "string"
}
},
"required": [
"id",
"kbId"
],
"type": "object"
},
"name": "neuron_detach_knowledge_base",
"outputSchema": null
},
{
"description": "Turn a plain-English description into a structured task spec (title, instruction, scheduleKind, schedule, timezone, config) WITHOUT creating it. Use the returned draft as input to neuron_create_task after any edits.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "UUID of the bot",
"type": "string"
},
"prompt": {
"description": "Plain-English description of the task, e.g. 'every morning at 8am, message 10 people we haven't heard from in 10+ days with our intro offer'.",
"type": "string"
},
"timezone": {
"description": "IANA timezone to assume (e.g. Africa/Lagos).",
"type": "string"
}
},
"required": [
"botId",
"prompt"
],
"type": "object"
},
"name": "neuron_draft_task",
"outputSchema": null
},
{
"description": "Clone an existing product into a hidden draft copy (new checkout link, '(copy)' title, reset counters). A 'pool' code product is cloned with an empty pool — restock codes before enabling. Edit the copy with neuron_update_product, then set enabled: true to publish.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Product UUID to clone",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_duplicate_product",
"outputSchema": null
},
{
"description": "Edit the content of a previously sent message in a conversation. Only the message sender can edit their messages.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"content": {
"description": "New text content to replace the existing message",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the conversation",
"type": "string"
},
"msgId": {
"description": "Unique identifier (UUID) of the message to edit",
"type": "string"
}
},
"required": [
"id",
"msgId",
"content"
],
"type": "object"
},
"name": "neuron_edit_message",
"outputSchema": null
},
{
"description": "Manually enroll existing / off-platform people into a membership product WITHOUT a payment. Use this to backfill members who were already in the WhatsApp group before you switched membership on, so the renewal + eviction cycle applies to them too. No order or revenue is booked. Each enrolled member gets a free first period (firstPeriodDays, or one normal interval by default), then renews like everyone else — reminder-only until they connect a Neuron account (no auto-charge). Existing members are left untouched (counted as skipped). Returns { enrolled, skipped, total }.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"addToGroup": {
"description": "Also add each phone to the attached WhatsApp group (for people not yet in it). Default false = assume they're already in.",
"type": "boolean"
},
"firstPeriodDays": {
"description": "Free days before their first renewal. Omit to grant one normal interval (daily/weekly/monthly).",
"maximum": 3650,
"minimum": 0,
"type": "integer"
},
"fromGroup": {
"description": "Pull every current participant of the product's attached group and enroll them all.",
"type": "boolean"
},
"id": {
"description": "Product UUID (must be a membership product)",
"format": "uuid",
"type": "string"
},
"members": {
"description": "People to enroll. Omit when using fromGroup.",
"items": {
"additionalProperties": false,
"properties": {
"name": {
"description": "Display name (optional)",
"type": "string"
},
"phone": {
"description": "Phone number (any format; non-digits stripped)",
"type": "string"
}
},
"required": [
"phone"
],
"type": "object"
},
"type": "array"
},
"silent": {
"description": "Suppress the membership.started event so welcome/onboarding flows don't fire — recommended for a bulk backfill of people who are already in.",
"type": "boolean"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_enroll_members",
"outputSchema": null
},
{
"description": "Price a draft SMS campaign before sending: returns recipient count, SMS provider cost, curated owner payout (₦2/contact), and the total in kobo. Call this before neuron_send_sms_campaign.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "UUID of the draft SMS campaign",
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "neuron_estimate_sms_campaign",
"outputSchema": null
},
{
"description": "Export all contacts as a downloadable dataset for the current organization.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_export_contacts",
"outputSchema": null
},
{
"description": "Run a one-off extraction WITHOUT creating a persistent source, saving the results to the lead pool. Great for pasted text or a web page. `type` + `config` as in neuron_create_lead_source (e.g. type='text_paste', config={text}).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"config": {
"additionalProperties": {},
"type": "object"
},
"type": {
"description": "Lead source type. facebook = Meta Ads Library advertisers; web/IG/X/FB scraping needs DeepAPI configured; TikTok has no native provider (use tool_output).",
"enum": [
"csv",
"text_paste",
"document",
"web_scrape",
"tool_output",
"instagram",
"x",
"facebook",
"tiktok",
"stream"
],
"type": "string"
}
},
"required": [
"type",
"config"
],
"type": "object"
},
"name": "neuron_extract_leads",
"outputSchema": null
},
{
"description": "Retrieve all contact lists that a specific contact belongs to.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"contactId": {
"description": "Unique identifier (UUID) of the contact to look up",
"type": "string"
}
},
"required": [
"contactId"
],
"type": "object"
},
"name": "neuron_find_contact_lists_for_contact",
"outputSchema": null
},
{
"description": "Forward a WhatsApp message from one chat to another. Uses copy-send approach — the message content is re-sent to the destination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"from": {
"description": "Source chat JID",
"type": "string"
},
"messageId": {
"description": "WhatsApp message ID to forward",
"type": "string"
},
"to": {
"description": "Destination chat JID",
"type": "string"
}
},
"required": [
"channelId",
"messageId",
"from",
"to"
],
"type": "object"
},
"name": "neuron_forward_message",
"outputSchema": null
},
{
"description": "Fund an approved ad request from the organization wallet. This debits the budget amount and activates the campaign for distribution. If wallet balance is insufficient, returns shortfall information instead of an error.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adRequestId": {
"description": "Unique identifier (UUID) of the approved ad request to fund",
"type": "string"
}
},
"required": [
"adRequestId"
],
"type": "object"
},
"name": "neuron_fund_ad_request",
"outputSchema": null
},
{
"description": "Fund an approved campaign by deducting the total budget from the organization's wallet balance. Requires sufficient wallet funds.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the approved campaign to fund",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_fund_campaign",
"outputSchema": null
},
{
"description": "Initialize a wallet funding transaction via Paystack. Returns a checkout URL to complete the payment in a browser.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"amount": {
"description": "Amount to fund in the smallest currency unit — kobo for NGN (e.g., 500000 = NGN 5,000)",
"exclusiveMinimum": 0,
"type": "integer"
},
"email": {
"description": "Email address to receive the payment receipt",
"format": "email",
"type": "string"
}
},
"required": [
"amount",
"email"
],
"type": "object"
},
"name": "neuron_fund_wallet",
"outputSchema": null
},
{
"description": "Generate content written in the persona's voice for a topic/brief. Returns N variations. Stateless — nothing is persisted.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"count": {
"description": "Number of variations (1-10, default 1).",
"maximum": 10,
"minimum": 1,
"type": "integer"
},
"extraInstructions": {
"type": "string"
},
"format": {
"description": "Desired format (post, reply, caption, thread, DM...).",
"type": "string"
},
"id": {
"description": "Persona UUID",
"type": "string"
},
"platform": {
"description": "Target platform (instagram/x/tiktok/linkedin/facebook/whatsapp...).",
"type": "string"
},
"topic": {
"description": "What to write about.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_generate_from_persona",
"outputSchema": null
},
{
"description": "Get detailed information about a specific ad request, including pool selections if targeting mode is manual.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adRequestId": {
"description": "Unique identifier (UUID) of the ad request",
"type": "string"
}
},
"required": [
"adRequestId"
],
"type": "object"
},
"name": "neuron_get_ad_request",
"outputSchema": null
},
{
"description": "Retrieve delivery analytics and performance breakdown for a specific ad request, including delivery rates and cost metrics.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adRequestId": {
"description": "Unique identifier (UUID) of the ad request to get analytics for",
"type": "string"
}
},
"required": [
"adRequestId"
],
"type": "object"
},
"name": "neuron_get_ad_request_analytics",
"outputSchema": null
},
{
"description": "Fetch a single approval request by id, including its decision once resolved. Set waitSeconds (1–60) to long-poll until it resolves. Requires a bot API key.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
},
"approvalId": {
"description": "The approval request id (UUID)",
"type": "string"
},
"waitSeconds": {
"description": "Long-poll up to N seconds for resolution",
"maximum": 60,
"minimum": 1,
"type": "integer"
}
},
"required": [
"apiKey",
"approvalId"
],
"type": "object"
},
"name": "neuron_get_approval",
"outputSchema": null
},
{
"description": "Retrieve the default availability schedule (weekly hours + timezone) for a calendar.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"calendarId": {
"description": "Calendar UUID",
"type": "string"
}
},
"required": [
"calendarId"
],
"type": "object"
},
"name": "neuron_get_availability",
"outputSchema": null
},
{
"description": "Compute available time slots for an event type over a date range, accounting for availability, existing bookings, buffers, and Google Calendar busy times.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"eventTypeId": {
"description": "Event type UUID",
"type": "string"
},
"from": {
"description": "Start date (YYYY-MM-DD)",
"type": "string"
},
"timezone": {
"description": "Invitee timezone for display",
"type": "string"
},
"to": {
"description": "End date (YYYY-MM-DD)",
"type": "string"
}
},
"required": [
"eventTypeId",
"from",
"to"
],
"type": "object"
},
"name": "neuron_get_available_slots",
"outputSchema": null
},
{
"description": "Retrieve the saved bank account details currently configured as the organization's payout destination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_get_bank_account",
"outputSchema": null
},
{
"description": "Retrieve the current billing information, subscription plan, and usage details for the organization.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_get_billing",
"outputSchema": null
},
{
"description": "Fetch the list of all blocked WhatsApp contacts for the bot on the given channel.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
}
},
"required": [
"channelId"
],
"type": "object"
},
"name": "neuron_get_blocklist",
"outputSchema": null
},
{
"description": "Retrieve a single blog post by its URL-friendly slug, including full content and metadata.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"slug": {
"description": "URL-friendly slug of the blog post (e.g., 'my-first-post')",
"type": "string"
}
},
"required": [
"slug"
],
"type": "object"
},
"name": "neuron_get_blog_post",
"outputSchema": null
},
{
"description": "Retrieve details of a specific booking.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Booking UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_booking",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific bot including its configuration, status, and associated resources.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the bot",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_bot",
"outputSchema": null
},
{
"description": "Retrieve analytics and usage statistics for a specific bot, including message counts, response times, and conversation metrics.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the bot to retrieve analytics for",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_bot_analytics",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific broadcast, including its status, message content, and recipient summary.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the broadcast to retrieve",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_broadcast",
"outputSchema": null
},
{
"description": "Retrieve the paginated list of recipients for a specific broadcast with their individual delivery status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the broadcast",
"type": "string"
},
"limit": {
"description": "Number of recipients per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"status": {
"description": "Filter recipients by delivery status (e.g., 'delivered', 'failed', 'pending')",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_broadcast_recipients",
"outputSchema": null
},
{
"description": "Fetch the WhatsApp Business profile of an external contact, including description, website, category, and business hours.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"jid": {
"description": "Contact JID or phone number to look up (e.g. '2348012345678' or '[email protected]')",
"type": "string"
}
},
"required": [
"channelId",
"jid"
],
"type": "object"
},
"name": "neuron_get_business_profile",
"outputSchema": null
},
{
"description": "Retrieve details of a specific calendar by its ID.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Calendar UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_calendar",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific campaign including its status, budget, participants, and delivery metrics.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the campaign",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_campaign",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific WhatsApp channel, including its configuration, type, and connection status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the channel",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_channel",
"outputSchema": null
},
{
"description": "Retrieve the event log for a channel, including connection events, message events, and errors. Supports pagination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the channel",
"type": "string"
},
"limit": {
"description": "Number of events to return per page",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (starts at 1)",
"exclusiveMinimum": 0,
"type": "integer"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_channel_events",
"outputSchema": null
},
{
"description": "Retrieve the current QR code for pairing a Baileys channel with WhatsApp. A session must be started first.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the Baileys channel",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_channel_qr",
"outputSchema": null
},
{
"description": "Retrieve the current connection status and session details for a specific channel (e.g., connected, disconnected, qr_pending).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the channel",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_channel_status",
"outputSchema": null
},
{
"description": "Fetch a collection's metadata by id.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"collectionId": {
"description": "The collection id.",
"type": "string"
}
},
"required": [
"collectionId"
],
"type": "object"
},
"name": "neuron_get_collection",
"outputSchema": null
},
{
"description": "Browse the mined content in a collection — posts/comments/profiles with author, content, engagement and engagementScore. sort 'top' ranks by engagement (great for picking the best clips/posts to reuse or distill into a persona).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"collectionId": {
"description": "The collection id.",
"type": "string"
},
"limit": {
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"page": {
"minimum": 1,
"type": "integer"
},
"sort": {
"description": "top = highest engagement first (default recent).",
"enum": [
"top",
"recent"
],
"type": "string"
},
"type": {
"description": "Filter by item type (post|comment|profile|page|custom).",
"type": "string"
}
},
"required": [
"collectionId"
],
"type": "object"
},
"name": "neuron_get_collection_items",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific contact including their tags, notes, and associated lists.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the contact",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_contact",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific contact list, including member count and configuration.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"idOrSlug": {
"description": "Unique identifier (UUID) or URL-friendly slug of the contact list",
"type": "string"
}
},
"required": [
"idOrSlug"
],
"type": "object"
},
"name": "neuron_get_contact_list",
"outputSchema": null
},
{
"description": "Retrieve the members of a specific contact list with optional search filtering and pagination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"idOrSlug": {
"description": "Unique identifier (UUID) or URL-friendly slug of the contact list",
"type": "string"
},
"limit": {
"description": "Number of items per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"search": {
"description": "Search term to filter members by name or phone number",
"type": "string"
}
},
"required": [
"idOrSlug"
],
"type": "object"
},
"name": "neuron_get_contact_list_members",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific conversation, including its status, participants, and metadata.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the conversation",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_conversation",
"outputSchema": null
},
{
"description": "Retrieve contacts eligible to receive a campaign message. Respects deduplication rules and mutual contact requirements.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the campaign to check eligibility for",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_eligible_contacts",
"outputSchema": null
},
{
"description": "Retrieve details of a specific event type.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Event type UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_event_type",
"outputSchema": null
},
{
"description": "Retrieve a single flow by id, including its full graph (nodes and edges), enabled status, and run stats.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "UUID of the flow.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_flow",
"outputSchema": null
},
{
"description": "Retrieve the COMPLETE catalog for authoring flows. ALWAYS call this first when building or editing a flow — do not rely on memory, the full node set changes. The response has two parts:\n • `data`: every node type (all triggers, logic, and actions) with its config `fields` (including `options` enums and `required`), output `handles`, and `dynamicHandles`.\n • `reference`: the authoring guide you need for anything non-trivial —\n - `conditions`: the ConditionGroup JSON shape + the full operator vocabulary (used by branch/filter/switch/loop and trigger filters). Note: on LOGIC nodes a rule's `field` is a {{template}}; on a TRIGGER's config.conditions it is a raw payload path.\n - `compositeFields`: the exact JSON for field kinds the flat schema can't express — `cases` (switch), `assignments` (set_fields), `weekdays`, and the delay amount/unit note.\n - `triggerConditions`: every trigger also accepts an optional config.conditions AND/OR filter over the raw event payload.\n - `templating`, `errorHandling` (__errorHandling), `handles` (wiring map), and `examples` (simple, branching AND/OR, and complex switch+set_fields+expression graphs to imitate).\nThe catalog is grouped by kind: trigger (entry points), logic (routing/waits/data), action (side effects). There are dozens of node types — read `data` for the authoritative list rather than assuming.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_get_flow_catalog",
"outputSchema": null
},
{
"description": "Get a single flow run with its full step-by-step execution trace. Each step shows the node type, input/output, status (ok/error/skipped/wait), duration, and which handle fired. Use this to debug flows — see exactly what happened at each step.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"runId": {
"description": "UUID of the run.",
"type": "string"
}
},
"required": [
"runId"
],
"type": "object"
},
"name": "neuron_get_flow_run",
"outputSchema": null
},
{
"description": "Get the invite link for a WhatsApp group. Only supported on Baileys channels where the bot is a group admin.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"groupJid": {
"description": "Group JID (ending in @g.us)",
"type": "string"
}
},
"required": [
"channelId",
"groupJid"
],
"type": "object"
},
"name": "neuron_get_group_invite_link",
"outputSchema": null
},
{
"description": "Retrieve the list of participants in a specific WhatsApp group accessible through a channel.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"groupJid": {
"description": "JID (Jabber ID) of the WhatsApp group (e.g., '[email protected]')",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the channel",
"type": "string"
}
},
"required": [
"id",
"groupJid"
],
"type": "object"
},
"name": "neuron_get_group_participants",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific knowledge base by its ID.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier of the knowledge base",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_knowledge_base",
"outputSchema": null
},
{
"description": "Get a paced list campaign with live progress: how many members have been reached this cycle, the current list size, and how many remain.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Campaign ID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_list_campaign",
"outputSchema": null
},
{
"description": "Retrieve messages from a specific conversation in chronological order, with optional cursor-based pagination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"cursor": {
"description": "Opaque pagination cursor from a previous response for retrieving the next page",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the conversation",
"type": "string"
},
"limit": {
"description": "Maximum number of messages to return per page",
"exclusiveMinimum": 0,
"type": "integer"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_messages",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific WhatsApp Channel newsletter, including subscriber count and metadata.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the newsletter to retrieve",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_newsletter",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific organization, including its name, settings, and configuration.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"orgId": {
"description": "Unique identifier (UUID) of the organization to retrieve",
"type": "string"
}
},
"required": [
"orgId"
],
"type": "object"
},
"name": "neuron_get_organization",
"outputSchema": null
},
{
"description": "Retrieve delivery logs for an outbound webhook to monitor event dispatch history and debug delivery failures.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the outbound webhook to get logs for",
"type": "string"
},
"limit": {
"description": "Number of log entries per page (default: 20)",
"type": "number"
},
"page": {
"description": "Page number for pagination (default: 1)",
"type": "number"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_outbound_webhook_logs",
"outputSchema": null
},
{
"description": "Get one voice persona (full voiceProfile + exemplars).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Persona UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_persona",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific item in the marketplace pool, including its description, category, tags, and install count.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the pool item to retrieve",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_pool_item",
"outputSchema": null
},
{
"description": "Fetch the bot's current WhatsApp privacy settings (last seen, online, profile picture, status, read receipts, groups add).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
}
},
"required": [
"channelId"
],
"type": "object"
},
"name": "neuron_get_privacy_settings",
"outputSchema": null
},
{
"description": "Get a single product by id, with its public URL and fee breakdown.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Product UUID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_product",
"outputSchema": null
},
{
"description": "Retrieve the authenticated user's profile information including name, email, role, and current organization.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_get_profile",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific scheduled message, including its status, send time, and message content.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the scheduled message",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_scheduled_message",
"outputSchema": null
},
{
"description": "Retrieve a single SMS campaign with its status and delivery counters.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "UUID of the SMS campaign",
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "neuron_get_sms_campaign",
"outputSchema": null
},
{
"description": "Retrieve detailed information about a specific social media channel, including its platform, credentials status, and connection state.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the social channel",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_social_channel",
"outputSchema": null
},
{
"description": "Retrieve the current session status for a social media channel (e.g., connected, disconnected, error).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the social channel",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_social_channel_status",
"outputSchema": null
},
{
"description": "Get this seller's storefront profile (handle, display name, bio, branding) and its public URL.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_get_storefront",
"outputSchema": null
},
{
"description": "Retrieve the paginated execution history for a task — each run's status, AI summary, tool steps, and stats (messages sent, contacts processed).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "UUID of the task",
"type": "string"
},
"limit": {
"description": "Items per page (default 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number (default 1)",
"exclusiveMinimum": 0,
"type": "integer"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_task_runs",
"outputSchema": null
},
{
"description": "Retrieve execution logs for an inbound webhook to monitor incoming requests and debug processing issues.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the webhook to get logs for",
"type": "string"
},
"limit": {
"description": "Number of log entries per page (default: 20)",
"type": "number"
},
"page": {
"description": "Page number for pagination (default: 1)",
"type": "number"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_get_webhook_logs",
"outputSchema": null
},
{
"description": "Disconnect a calendar from Google Calendar sync.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"calendarId": {
"description": "Calendar UUID",
"type": "string"
}
},
"required": [
"calendarId"
],
"type": "object"
},
"name": "neuron_google_calendar_disconnect",
"outputSchema": null
},
{
"description": "Check whether a calendar is connected to Google Calendar and when it last synced.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"calendarId": {
"description": "Calendar UUID",
"type": "string"
}
},
"required": [
"calendarId"
],
"type": "object"
},
"name": "neuron_google_calendar_status",
"outputSchema": null
},
{
"description": "Approve or reject pending join requests for a WhatsApp group. Requires admin privileges.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"action": {
"description": "Whether to approve or reject the join requests",
"enum": [
"approve",
"reject"
],
"type": "string"
},
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"groupJid": {
"description": "Group JID (ending in @g.us)",
"type": "string"
},
"participants": {
"description": "Array of phone numbers or JIDs of requesters",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"channelId",
"groupJid",
"participants",
"action"
],
"type": "object"
},
"name": "neuron_handle_join_requests",
"outputSchema": null
},
{
"description": "Bulk import multiple contacts into the organization's address book. Accepts an array of contact objects with name, phone, and optional fields.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"contacts": {
"description": "Array of contact objects to import into the organization",
"items": {
"additionalProperties": false,
"properties": {
"email": {
"description": "Email address of the contact",
"type": "string"
},
"name": {
"description": "Full name of the contact",
"type": "string"
},
"notes": {
"description": "Additional notes about the contact",
"type": "string"
},
"phone": {
"description": "Contact phone number in E.164 format (e.g., +2348012345678)",
"type": "string"
},
"tags": {
"description": "Tags to categorize the contact",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"name",
"phone"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"contacts"
],
"type": "object"
},
"name": "neuron_import_contacts",
"outputSchema": null
},
{
"description": "Ingest content into a knowledge base. Supports deduplication via externalId and optional LLM processing (summarize, extract_facts, or custom instruction).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"content": {
"description": "Content to ingest",
"type": "string"
},
"externalId": {
"description": "Unique external ID for deduplication (e.g. file path, URL)",
"type": "string"
},
"folder": {
"description": "Folder: 'general', 'skills', 'contexts', 'documents', or 'faqs' (default: general)",
"type": "string"
},
"knowledgeBaseId": {
"description": "Knowledge base ID to ingest into",
"type": "string"
},
"processing": {
"additionalProperties": false,
"description": "Optional LLM processing before storage",
"properties": {
"instruction": {
"description": "Custom instruction (only used with 'custom' mode)",
"type": "string"
},
"mode": {
"default": "raw",
"description": "Processing mode",
"enum": [
"raw",
"summarize",
"extract_facts",
"custom"
],
"type": "string"
}
},
"type": "object"
},
"source": {
"default": "mcp",
"description": "Source type (default: mcp)",
"enum": [
"api",
"mcp"
],
"type": "string"
},
"sourceUrl": {
"description": "Source URL for reference",
"type": "string"
},
"title": {
"description": "Title for the knowledge entry",
"type": "string"
}
},
"required": [
"knowledgeBaseId",
"title",
"content"
],
"type": "object"
},
"name": "neuron_ingest_knowledge",
"outputSchema": null
},
{
"description": "Install a resource from the marketplace pool into the current organization. Choose 'fork' for an independent copy or 'subscribe' to receive future updates from the publisher.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the pool item to install",
"type": "string"
},
"mode": {
"description": "Installation mode: 'fork' creates an independent copy, 'subscribe' links to publisher updates",
"enum": [
"fork",
"subscribe"
],
"type": "string"
},
"targetBotId": {
"description": "UUID of the bot to attach the installed resource to (for tool_template or knowledge_base types)",
"type": "string"
},
"targetKbId": {
"description": "UUID of the knowledge base to install into (for knowledge_base types)",
"type": "string"
}
},
"required": [
"id",
"mode"
],
"type": "object"
},
"name": "neuron_install_from_pool",
"outputSchema": null
},
{
"description": "Send an invitation to a new member to join the organization. The invitee receives an email with a link to accept.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"canViewConversations": {
"description": "Whether the invited member can view conversations (default: true)",
"type": "boolean"
},
"email": {
"description": "Email address of the person to invite",
"format": "email",
"type": "string"
},
"name": {
"description": "Full name of the person being invited",
"type": "string"
},
"orgId": {
"description": "Unique identifier (UUID) of the organization",
"type": "string"
},
"role": {
"description": "Role to assign to the member (e.g., 'admin', 'agent', 'viewer')",
"type": "string"
}
},
"required": [
"orgId",
"email",
"name"
],
"type": "object"
},
"name": "neuron_invite_member",
"outputSchema": null
},
{
"description": "Join a marketplace campaign as a participant to earn rewards by sending messages through your WhatsApp channel.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "Unique identifier (UUID) of your WhatsApp channel to send messages from",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the campaign to join",
"type": "string"
}
},
"required": [
"id",
"channelId"
],
"type": "object"
},
"name": "neuron_join_campaign",
"outputSchema": null
},
{
"description": "Counts of leads by status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_lead_stats",
"outputSchema": null
},
{
"description": "Make the bot leave a WhatsApp group. This action is irreversible — the bot will need to be re-added by an admin.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"groupJid": {
"description": "Group JID (ending in @g.us)",
"type": "string"
}
},
"required": [
"channelId",
"groupJid"
],
"type": "object"
},
"name": "neuron_leave_group",
"outputSchema": null
},
{
"description": "Retrieve all ad requests for the current organization with optional status filtering and pagination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Number of items per page (default: 20)",
"type": "number"
},
"page": {
"description": "Page number for pagination (default: 1)",
"type": "number"
},
"status": {
"description": "Filter by request status: 'draft', 'pending_review', 'approved', 'active', 'paused', 'completed', or 'rejected'",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_ad_requests",
"outputSchema": null
},
{
"description": "Retrieve all API keys associated with a specific bot, including their names, creation dates, expiration status, and revocation status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot whose API keys to retrieve",
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_list_api_keys",
"outputSchema": null
},
{
"description": "List approval requests for the organization, newest first. Filter by status (pending/approved/rejected/expired/cancelled). Requires a bot API key.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
},
"channelId": {
"description": "Filter by WhatsApp channel (UUID)",
"type": "string"
},
"limit": {
"description": "Items per page (default 25, max 100)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number (default 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"status": {
"description": "Filter: pending | approved | rejected | expired | cancelled",
"type": "string"
}
},
"required": [
"apiKey"
],
"type": "object"
},
"name": "neuron_list_approvals",
"outputSchema": null
},
{
"description": "Retrieve audit logs for the organization, showing a chronological record of actions performed by members. Supports filtering by action type and resource.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"action": {
"description": "Filter by action type (e.g., 'CREATE', 'UPDATE', 'DELETE')",
"type": "string"
},
"limit": {
"description": "Number of log entries per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"resourceType": {
"description": "Filter by resource type (e.g., 'USER', 'ORGANIZATION', 'BOT', 'CAMPAIGN')",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_audit_logs",
"outputSchema": null
},
{
"description": "Retrieve a paginated list of blog posts with optional filtering by status, author type, author ID, or tag.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"authorId": {
"description": "Filter posts by author identifier (UUID)",
"type": "string"
},
"authorType": {
"description": "Filter posts by author type",
"enum": [
"user",
"organization"
],
"type": "string"
},
"limit": {
"default": 20,
"description": "Number of results per page (default: 20)",
"type": "number"
},
"page": {
"default": 1,
"description": "Page number for pagination (default: 1)",
"type": "number"
},
"status": {
"description": "Filter posts by publication status",
"enum": [
"draft",
"published",
"hidden"
],
"type": "string"
},
"tag": {
"description": "Filter posts by tag slug (e.g., 'announcements')",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_blog_posts",
"outputSchema": null
},
{
"description": "List bookings (inbound and host-created) with optional filters for calendar, status, date range, and source.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"calendarId": {
"description": "Filter by calendar UUID",
"type": "string"
},
"from": {
"description": "Start date filter (ISO)",
"type": "string"
},
"limit": {
"description": "Items per page",
"type": "number"
},
"page": {
"description": "Page number",
"type": "number"
},
"source": {
"description": "Filter by source: 'host', 'link', 'public_link'",
"type": "string"
},
"status": {
"description": "Filter by status: confirmed, pending, cancelled, rescheduled, completed, no_show",
"type": "string"
},
"to": {
"description": "End date filter (ISO)",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_bookings",
"outputSchema": null
},
{
"description": "Retrieve all WhatsApp channels connected to a specific bot, including primary and secondary connections.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot",
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_list_bot_channels",
"outputSchema": null
},
{
"description": "Retrieve all knowledge bases attached to a specific bot, including their priorities and metadata.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the bot",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_list_bot_knowledge_bases",
"outputSchema": null
},
{
"description": "Retrieve all bots accessible to the current user, including their configurations and status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_bots",
"outputSchema": null
},
{
"description": "Retrieve a paginated list of all broadcasts with optional filtering by status such as draft, sent, or scheduled.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Number of broadcasts per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"status": {
"description": "Filter by broadcast status (e.g., 'draft', 'sent', 'scheduled')",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_broadcasts",
"outputSchema": null
},
{
"description": "Retrieve all available built-in tools with their enabled/disabled status for a specific bot. Built-in tools include WhatsApp actions (send messages, delete messages, post status), utility functions (web search, QR codes, weather), scheduling, knowledge base search, and more.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to list built-in tools for",
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_list_builtin_tools",
"outputSchema": null
},
{
"description": "Retrieve all booking calendars for the current organization.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_calendars",
"outputSchema": null
},
{
"description": "Retrieve all campaigns for the current organization with optional status filtering and pagination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Number of campaigns per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"status": {
"description": "Filter by campaign status: 'draft', 'active', 'paused', 'completed', 'stopped', or 'rejected'",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_campaigns",
"outputSchema": null
},
{
"description": "Retrieve all WhatsApp groups that the channel is participating in, including group metadata.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the channel",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_list_channel_groups",
"outputSchema": null
},
{
"description": "Retrieve all WhatsApp channels configured in the current organization, including their type and connection status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_channels",
"outputSchema": null
},
{
"description": "List content collections (where web-agent missions and captures land). Returns each collection's item count, kind and source.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_collections",
"outputSchema": null
},
{
"description": "Retrieve all contact lists for the current organization with optional filtering by search term, type, and pagination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Number of items per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"search": {
"description": "Search term to filter lists by name or slug",
"type": "string"
},
"type": {
"description": "Filter by list type: 'static', 'dynamic', or 'merged'",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_contact_lists",
"outputSchema": null
},
{
"description": "Retrieve all contacts for the current organization with optional filtering by search term, tag, and pagination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"doNotAutoRespond": {
"description": "Filter to contacts the bot will never (true) / may (false) auto-respond to",
"type": "boolean"
},
"doNotBroadcast": {
"description": "Filter to contacts that are (true) or are not (false) excluded from broadcasts",
"type": "boolean"
},
"limit": {
"description": "Number of contacts per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"search": {
"description": "Search term to filter contacts by name, phone number, or email address",
"type": "string"
},
"tag": {
"description": "Tag name to filter contacts by category",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_contacts",
"outputSchema": null
},
{
"description": "Retrieve a paginated list of conversations for a specific bot, with optional filtering by status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot whose conversations to list",
"type": "string"
},
"cursor": {
"description": "Opaque pagination cursor from a previous response for retrieving the next page",
"type": "string"
},
"limit": {
"description": "Maximum number of conversations to return per page",
"exclusiveMinimum": 0,
"type": "integer"
},
"status": {
"description": "Filter by conversation status (e.g., 'active', 'closed')",
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_list_conversations",
"outputSchema": null
},
{
"description": "Retrieve all event types, optionally filtered by calendar.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"calendarId": {
"description": "Filter by calendar UUID",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_event_types",
"outputSchema": null
},
{
"description": "List host-created events, optionally filtered by calendar and date range.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"calendarId": {
"description": "Filter by calendar UUID",
"type": "string"
},
"from": {
"description": "Start date filter (ISO)",
"type": "string"
},
"limit": {
"description": "Items per page (default: 50)",
"type": "number"
},
"page": {
"description": "Page number (default: 1)",
"type": "number"
},
"to": {
"description": "End date filter (ISO)",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_events",
"outputSchema": null
},
{
"description": "List execution runs for a flow, newest first. Each run shows status (running/waiting/completed/failed/cancelled), trigger type, step count, and timing.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "UUID of the flow.",
"type": "string"
},
"limit": {
"description": "Items per page (default: 20, max: 100).",
"type": "integer"
},
"page": {
"description": "Page number (default: 1).",
"type": "integer"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_list_flow_runs",
"outputSchema": null
},
{
"description": "List all automation flows in the organization. Returns each flow's id, name, description, enabled status, trigger events, run count, and last run time.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_flows",
"outputSchema": null
},
{
"description": "List all items the current organization has installed from the marketplace pool.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_installed",
"outputSchema": null
},
{
"description": "Retrieve a list of all pending invitations for the organization that have not yet been accepted or revoked.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"orgId": {
"description": "Unique identifier (UUID) of the organization",
"type": "string"
}
},
"required": [
"orgId"
],
"type": "object"
},
"name": "neuron_list_invitations",
"outputSchema": null
},
{
"description": "Retrieve all bots that are connected to or using a specific knowledge base.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier of the knowledge base",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_list_kb_bots",
"outputSchema": null
},
{
"description": "Retrieve entries from a knowledge base with optional filtering and pagination.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"folder": {
"description": "Filter entries by folder ('general', 'skills', 'contexts', 'documents', 'faqs')",
"type": "string"
},
"id": {
"description": "Unique identifier of the knowledge base",
"type": "string"
},
"limit": {
"description": "Maximum number of entries to return per page",
"type": "number"
},
"page": {
"description": "Page number for pagination (starts at 1)",
"type": "number"
},
"source": {
"description": "Filter entries by source type ('manual', 'document', 'url')",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_list_kb_entries",
"outputSchema": null
},
{
"description": "Retrieve all knowledge bases accessible to the current user.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_knowledge_bases",
"outputSchema": null
},
{
"description": "List configured lead sources for the org.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_lead_sources",
"outputSchema": null
},
{
"description": "List leads from the pool, filterable by status (new/enriched/contacted/converted/rejected), sourceId, and search.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"exclusiveMinimum": 0,
"type": "integer"
},
"search": {
"type": "string"
},
"sourceId": {
"type": "string"
},
"status": {
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_leads",
"outputSchema": null
},
{
"description": "List all paced list campaigns for the organization, optionally filtered to a single contact list.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"listId": {
"description": "Filter to campaigns on this contact list",
"format": "uuid",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_list_campaigns",
"outputSchema": null
},
{
"description": "Retrieve a list of all members in the organization, including their roles and permissions.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"orgId": {
"description": "Unique identifier (UUID) of the organization",
"type": "string"
}
},
"required": [
"orgId"
],
"type": "object"
},
"name": "neuron_list_members",
"outputSchema": null
},
{
"description": "Retrieve a paginated list of all WhatsApp Channel newsletters for the organization, with optional filtering by WhatsApp session channel.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "Filter newsletters by WhatsApp session channel identifier (UUID)",
"type": "string"
},
"limit": {
"description": "Number of items per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
}
},
"type": "object"
},
"name": "neuron_list_newsletters",
"outputSchema": null
},
{
"description": "List recent product orders (sales) for this seller, with buyer, amount, fee breakdown, and status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_orders",
"outputSchema": null
},
{
"description": "Retrieve all organizations the authenticated user belongs to, including their roles in each.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_organizations",
"outputSchema": null
},
{
"description": "Retrieve all outbound webhooks configured for a specific bot, including their target URLs and subscribed event types.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to list outbound webhooks for",
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_list_outbound_webhooks",
"outputSchema": null
},
{
"description": "List date-specific availability overrides for a calendar (e.g. holidays, special hours).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"calendarId": {
"description": "Calendar UUID",
"type": "string"
},
"from": {
"description": "Start date filter (YYYY-MM-DD)",
"type": "string"
},
"to": {
"description": "End date filter (YYYY-MM-DD)",
"type": "string"
}
},
"required": [
"calendarId"
],
"type": "object"
},
"name": "neuron_list_overrides",
"outputSchema": null
},
{
"description": "Retrieve the payout history for the organization, including amounts, statuses, and timestamps.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Number of payout records per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
}
},
"type": "object"
},
"name": "neuron_list_payouts",
"outputSchema": null
},
{
"description": "List voice personas for the org. Each persona holds a voiceProfile (tone/style/themes/dos/donts) + exemplars distilled from a Collection of mined content.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_personas",
"outputSchema": null
},
{
"description": "List all products for this seller, each with its public checkout URL and price breakdown.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_products",
"outputSchema": null
},
{
"description": "List all items the current organization has published to the marketplace pool.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_published",
"outputSchema": null
},
{
"description": "Retrieve pending reflections that the bot has generated from conversations, awaiting human review. Optionally filter by approval status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to list reflections for",
"type": "string"
},
"status": {
"description": "Filter reflections by approval status (default: all statuses)",
"enum": [
"pending",
"approved",
"rejected"
],
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_list_reflections",
"outputSchema": null
},
{
"description": "List verified-purchase reviews across this seller's products (rating, text, buyer, status).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_reviews",
"outputSchema": null
},
{
"description": "Retrieve a paginated list of scheduled messages for the current organization, with optional filtering by status (scheduled, sent, failed, cancelled).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Number of items per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"status": {
"description": "Filter by status: 'scheduled', 'sent', 'failed', or 'cancelled'",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_scheduled_messages",
"outputSchema": null
},
{
"description": "List the organization's SMS campaigns, optionally filtered by status or type.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Items per page (default: 50)",
"type": "number"
},
"page": {
"description": "Page number (default: 1)",
"type": "number"
},
"status": {
"description": "Filter by status: 'draft', 'sending', 'paused', 'completed', or 'failed'",
"type": "string"
},
"type": {
"description": "Filter by type: 'blast' or 'drip'",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_list_sms_campaigns",
"outputSchema": null
},
{
"description": "Retrieve all social media channels (Instagram, Twitter/X) configured in the current organization.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_list_social_channels",
"outputSchema": null
},
{
"description": "List all scheduled tasks for a bot. A task is a natural-language instruction the bot carries out autonomously on a schedule (e.g. 're-engage stale contacts every morning at 8am').",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "UUID of the bot",
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_list_tasks",
"outputSchema": null
},
{
"description": "Retrieve all custom API tool integrations configured for a specific bot, including their endpoints and configuration.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to list tools for",
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_list_tools",
"outputSchema": null
},
{
"description": "Retrieve all inbound webhooks configured for a specific bot, including their status and configuration.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to list webhooks for",
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_list_webhooks",
"outputSchema": null
},
{
"description": "Retrieve contacts from the WhatsApp account connected to this channel, with optional search filtering.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the channel",
"type": "string"
},
"q": {
"description": "Search query to filter contacts by name or phone number",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_list_whatsapp_contacts",
"outputSchema": null
},
{
"description": "Authenticate with Neuron. Three modes:\n1. No args: Opens a browser URL for secure authorization (recommended — no credentials shared with AI)\n2. token: Paste an MCP token from the Neuron dashboard\n3. email+password: Legacy login (credentials visible to AI)",
"inputSchema": {
"properties": {},
"type": "object"
},
"name": "neuron_login",
"outputSchema": null
},
{
"description": "Clear the current auth token locally. Does NOT revoke server-side MCP tokens — revoke from the Neuron dashboard (Settings > MCP Tokens) for full invalidation.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_logout",
"outputSchema": null
},
{
"description": "Mark a WhatsApp message as read, sending read receipts to the sender.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"chatJid": {
"description": "Chat JID the message belongs to",
"type": "string"
},
"messageId": {
"description": "WhatsApp message ID to mark as read",
"type": "string"
}
},
"required": [
"channelId",
"chatJid",
"messageId"
],
"type": "object"
},
"name": "neuron_mark_as_read",
"outputSchema": null
},
{
"description": "Mark a booking as no-show when the invitee did not attend.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Booking UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_mark_no_show",
"outputSchema": null
},
{
"description": "Merge two or more contact lists into a single unified list, deduplicating entries. Window merge creates a virtual union; materialized merge creates a static copy.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"mergeType": {
"description": "Merge strategy: 'window' (virtual union, stays in sync) or 'materialized' (static copy at merge time)",
"enum": [
"window",
"materialized"
],
"type": "string"
},
"name": {
"description": "Display name for the resulting merged list",
"type": "string"
},
"slug": {
"description": "URL-friendly slug for the merged list (auto-generated if omitted)",
"type": "string"
},
"sourceListIds": {
"description": "UUIDs or slugs of the source lists to merge (minimum 2)",
"items": {
"type": "string"
},
"minItems": 2,
"type": "array"
}
},
"required": [
"name",
"sourceListIds",
"mergeType"
],
"type": "object"
},
"name": "neuron_merge_contact_lists",
"outputSchema": null
},
{
"description": "Retrieve all campaigns the current organization has joined as a participant, including earnings and delivery stats.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Number of participations per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
}
},
"type": "object"
},
"name": "neuron_my_participations",
"outputSchema": null
},
{
"description": "Pause an active ad request campaign. Distribution stops until resumed. Only active ad requests can be paused.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adRequestId": {
"description": "Unique identifier (UUID) of the active ad request to pause",
"type": "string"
}
},
"required": [
"adRequestId"
],
"type": "object"
},
"name": "neuron_pause_ad_request",
"outputSchema": null
},
{
"description": "Pause a bot to temporarily stop it from processing new messages. The bot retains its configuration and can be resumed later.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the bot to pause",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_pause_bot",
"outputSchema": null
},
{
"description": "Pause an active campaign to temporarily stop message delivery. Can be resumed later with the resume action.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the active campaign to pause",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_pause_campaign",
"outputSchema": null
},
{
"description": "Pause a paced list campaign. No further batches run until resumed. The cursor is preserved.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Campaign ID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_pause_list_campaign",
"outputSchema": null
},
{
"description": "Pause a sending drip SMS campaign. Only drip campaigns in the 'sending' state can be paused.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "UUID of the SMS campaign to pause",
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "neuron_pause_sms_campaign",
"outputSchema": null
},
{
"description": "Enrich existing contacts with additional data from connected messaging channels. Syncs profile information from linked platforms.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_populate_contacts",
"outputSchema": null
},
{
"description": "Post a message to a WhatsApp Channel newsletter. All subscribers receive the message. Provide at least one of text or mediaUrl. This triggers delivery and cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the newsletter to post to",
"type": "string"
},
"mediaUrl": {
"description": "URL of the media file to attach (required for image, video, or document types)",
"type": "string"
},
"messageType": {
"default": "text",
"description": "Type of message to send (default: 'text')",
"enum": [
"text",
"image",
"video",
"document"
],
"type": "string"
},
"text": {
"description": "Message text or caption to post to the newsletter",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_post_to_newsletter",
"outputSchema": null
},
{
"description": "Post a WhatsApp Status / Story from a connected direct (Baileys) WhatsApp number. Visible to the account's synced contacts for 24 hours — you do NOT specify recipients (the contact list is built automatically; pass statusJidList only to target a subset). Provide at least one of text or mediaUrl. channelId is optional and auto-resolves to the default connected number. This triggers delivery and cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"backgroundColor": {
"description": "Text-status background colour as hex, e.g. '#315575'",
"type": "string"
},
"channelId": {
"description": "WhatsApp session channel UUID to post from. Omit to auto-resolve.",
"type": "string"
},
"font": {
"description": "Text-status font index (0–9)",
"maximum": 9,
"minimum": 0,
"type": "integer"
},
"mediaUrl": {
"description": "URL of the image/video/audio to post (required for non-text statuses)",
"type": "string"
},
"messageType": {
"default": "text",
"description": "Type of status (default: 'text')",
"enum": [
"text",
"image",
"video",
"audio"
],
"type": "string"
},
"text": {
"description": "Status text (for a text story) or caption (for media)",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_post_to_status",
"outputSchema": null
},
{
"description": "List the members of a membership product: current (paid-up) or all. Returns each buyer's status (active / lapsed / cancelled), when their period renews, whether they're in the attached WhatsApp group (if one is attached), plus totals.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Product UUID (must be a membership product)",
"format": "uuid",
"type": "string"
},
"status": {
"description": "'active' (current members, default) or 'all' (every member ever)",
"enum": [
"active",
"all"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_product_members",
"outputSchema": null
},
{
"description": "Publish a blog post, making it publicly visible. The post must be in 'draft' status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the blog post to publish",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_publish_blog_post",
"outputSchema": null
},
{
"description": "Publish a bot, tool, knowledge base, or reflection to the shared marketplace pool for other organizations to discover and install.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "Category name for organizing the resource in the pool",
"type": "string"
},
"defaultSecrets": {
"additionalProperties": {
"type": "string"
},
"description": "Pre-filled secrets auto-populated on install, e.g. { OAUTH2_TOKEN_URL: 'https://...' }",
"type": "object"
},
"description": {
"description": "Detailed description of the resource for the pool listing",
"type": "string"
},
"name": {
"description": "Display name for the pool listing",
"type": "string"
},
"setupInstructions": {
"description": "Step-by-step setup guide shown after installation (tool_template only, max 5000 chars)",
"type": "string"
},
"sourceId": {
"description": "Unique identifier (UUID) of the source resource to publish",
"type": "string"
},
"tags": {
"description": "List of tags for improved discoverability (e.g., ['ai', 'customer-support'])",
"items": {
"type": "string"
},
"type": "array"
},
"type": {
"description": "Type of resource to publish to the pool",
"enum": [
"knowledge_base",
"bot_template",
"tool_template",
"reflection_pack"
],
"type": "string"
}
},
"required": [
"type",
"sourceId",
"name"
],
"type": "object"
},
"name": "neuron_publish_to_pool",
"outputSchema": null
},
{
"description": "Pull the latest updates for a subscribed pool resource to sync with the publisher's changes. Only applies to items installed with 'subscribe' mode.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"installId": {
"description": "Unique identifier (UUID) of the installed resource to pull updates for",
"type": "string"
}
},
"required": [
"installId"
],
"type": "object"
},
"name": "neuron_pull_pool_update",
"outputSchema": null
},
{
"description": "Trigger a refresh of a dynamic contact list. Re-evaluates criteria rules and/or AI prompt and materializes updated members.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"idOrSlug": {
"description": "Unique identifier (UUID) or URL-friendly slug of the dynamic list to refresh",
"type": "string"
}
},
"required": [
"idOrSlug"
],
"type": "object"
},
"name": "neuron_refresh_contact_list",
"outputSchema": null
},
{
"description": "Re-fetch metadata (name, description, subscriber count) for a WhatsApp Channel newsletter from WhatsApp to synchronize local data.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the newsletter to refresh",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_refresh_newsletter",
"outputSchema": null
},
{
"description": "Refresh the access token using a refresh token. Automatically sets the new access token for subsequent API calls.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"refreshToken": {
"description": "Refresh token obtained from the initial login response",
"type": "string"
}
},
"required": [
"refreshToken"
],
"type": "object"
},
"name": "neuron_refresh_token",
"outputSchema": null
},
{
"description": "Refund a paid order via Paystack. The buyer is refunded and the sale amount is reversed from your wallet.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Order UUID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_refund_order",
"outputSchema": null
},
{
"description": "Register a new user account with name, email, password, and organization name. Creates both the user and an initial organization.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"email": {
"description": "Email address for the new account",
"format": "email",
"type": "string"
},
"name": {
"description": "Full name of the user",
"type": "string"
},
"orgName": {
"description": "Name of the organization to create for this user",
"type": "string"
},
"password": {
"description": "Password for the account (minimum 8 characters)",
"minLength": 8,
"type": "string"
}
},
"required": [
"name",
"email",
"password",
"orgName"
],
"type": "object"
},
"name": "neuron_register",
"outputSchema": null
},
{
"description": "Reject a bot-generated reflection to prevent it from being incorporated into the bot's learned behavior.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the reflection to reject",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_reject_reflection",
"outputSchema": null
},
{
"description": "Release a conversation back to the bot, returning control from a human agent. The bot will resume auto-responding.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the conversation to release",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_release_conversation",
"outputSchema": null
},
{
"description": "Disconnect a WhatsApp channel from a bot. The bot will no longer respond to messages on this channel.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot",
"type": "string"
},
"channelId": {
"description": "Unique identifier (UUID) of the WhatsApp channel to disconnect",
"type": "string"
}
},
"required": [
"botId",
"channelId"
],
"type": "object"
},
"name": "neuron_remove_bot_channel",
"outputSchema": null
},
{
"description": "Remove one or more contacts from a list by their contact IDs. Does not delete the contacts themselves.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"contactIds": {
"description": "Array of contact UUIDs to remove from the list",
"items": {
"type": "string"
},
"type": "array"
},
"idOrSlug": {
"description": "Unique identifier (UUID) or URL-friendly slug of the contact list",
"type": "string"
}
},
"required": [
"idOrSlug",
"contactIds"
],
"type": "object"
},
"name": "neuron_remove_from_contact_list",
"outputSchema": null
},
{
"description": "Remove members from a group, resolved from any combination of sources — e.g. remove everyone on a contact list. Address the group by its id, slug, or JID.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"allContacts": {
"description": "Union the org's entire address book",
"type": "boolean"
},
"contactIds": {
"description": "Existing contact ids",
"items": {
"type": "string"
},
"type": "array"
},
"excludeListIds": {
"description": "Subtract every member of these lists",
"items": {
"type": "string"
},
"type": "array"
},
"fromGroupIds": {
"description": "Copy/combine members live from these WhatsApp group JIDs",
"items": {
"type": "string"
},
"type": "array"
},
"group": {
"description": "Group id, slug, or JID (ending in @g.us)",
"type": "string"
},
"listIds": {
"description": "Contact list ids or slugs — pulls every member",
"items": {
"type": "string"
},
"type": "array"
},
"phones": {
"description": "Raw phone numbers, e.g. pasted from a CSV",
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"description": "Keep only contacts carrying one of these tags",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"group"
],
"type": "object"
},
"name": "neuron_remove_group_members",
"outputSchema": null
},
{
"description": "Permanently remove a member from the organization. The member loses all access immediately. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"orgId": {
"description": "Unique identifier (UUID) of the organization",
"type": "string"
},
"userId": {
"description": "Unique identifier (UUID) of the member to remove",
"type": "string"
}
},
"required": [
"orgId",
"userId"
],
"type": "object"
},
"name": "neuron_remove_member",
"outputSchema": null
},
{
"description": "Remove the bot's WhatsApp profile picture, reverting to the default.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
}
},
"required": [
"channelId"
],
"type": "object"
},
"name": "neuron_remove_profile_picture",
"outputSchema": null
},
{
"description": "Permanently delete a stored secret from a custom tool integration. The tool will lose access to this credential.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the tool to remove the secret from",
"type": "string"
},
"key": {
"description": "Secret key name to remove (e.g., 'API_KEY', 'AUTH_TOKEN')",
"type": "string"
}
},
"required": [
"id",
"key"
],
"type": "object"
},
"name": "neuron_remove_tool_secret",
"outputSchema": null
},
{
"description": "Ask a human to approve or reject an action over WhatsApp and get the decision back. The recipient replies approve/reject (optionally with a reason) or quotes the message. Use this to gate any action needing human sign-off (refunds, deploys, spend, publishing). Returns an approvalId; poll neuron_get_approval / neuron_list_approvals for the outcome, or supply a webhook in `callback` to be notified. Requires a bot API key ('nrn_' prefix).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
},
"callback": {
"additionalProperties": false,
"description": "Callback config. Omit for a poll-only flow (delivery scheme 'none').",
"properties": {
"await": {
"description": "Hold the request until resolved (long-poll)",
"type": "boolean"
},
"awaitTimeoutSec": {
"maximum": 60,
"minimum": 1,
"type": "integer"
},
"delivery": {
"additionalProperties": false,
"properties": {
"config": {
"additionalProperties": {},
"description": "Scheme config: {url,secret} or {webhookId}; {targetJid,channelId}; {toolId}; {method}",
"type": "object"
},
"scheme": {
"description": "How the decision reaches the caller",
"enum": [
"webhook_signed",
"webhook_simple",
"neuron_message",
"neuron_tool",
"none"
],
"type": "string"
}
},
"required": [
"scheme"
],
"type": "object"
},
"response": {
"additionalProperties": false,
"properties": {
"code": {
"description": "One-time confirmation code — enables the 'code' scheme",
"type": "string"
},
"schemes": {
"description": "Ordered fallback for turning a reply into a decision (default: ['keyword'])",
"items": {
"enum": [
"interactive",
"keyword",
"code",
"llm"
],
"type": "string"
},
"type": "array"
}
},
"type": "object"
}
},
"type": "object"
},
"channelId": {
"description": "Optional WhatsApp channel override (UUID)",
"type": "string"
},
"context": {
"description": "Optional long-form details — stored in a shareable Neuron Note and linked from the WhatsApp message",
"type": "string"
},
"expiresInSeconds": {
"description": "Time to live before auto-expiry (default 86400, 60–604800)",
"exclusiveMinimum": 0,
"type": "integer"
},
"idempotencyKey": {
"description": "Dedupe key — returns the existing approval on repeat",
"type": "string"
},
"metadata": {
"additionalProperties": {},
"description": "Opaque data echoed back verbatim in the result/callback",
"type": "object"
},
"prompt": {
"description": "The approval question shown to the human",
"type": "string"
},
"to": {
"description": "Recipient phone number (E.164/digits) or WhatsApp group JID",
"type": "string"
}
},
"required": [
"apiKey",
"to",
"prompt"
],
"type": "object"
},
"name": "neuron_request_approval",
"outputSchema": null
},
{
"description": "Request a numeric pairing code for a Baileys channel as an alternative to QR code scanning. Requires the phone number to pair with.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the Baileys channel",
"type": "string"
},
"phoneNumber": {
"description": "Phone number to generate the pair code for (E.164 format, e.g., '+2348012345678')",
"type": "string"
}
},
"required": [
"id",
"phoneNumber"
],
"type": "object"
},
"name": "neuron_request_pair_code",
"outputSchema": null
},
{
"description": "Request a payout to transfer funds from the organization wallet to the linked bank account. A bank account must be saved first.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"amount": {
"description": "Amount to transfer in the smallest currency unit — kobo for NGN (e.g., 100000 = NGN 1,000)",
"exclusiveMinimum": 0,
"type": "integer"
}
},
"required": [
"amount"
],
"type": "object"
},
"name": "neuron_request_payout",
"outputSchema": null
},
{
"description": "Reschedule a booking to a new time. Creates a new booking and marks the old one as rescheduled.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Booking UUID to reschedule",
"type": "string"
},
"startTime": {
"description": "New start time (ISO 8601)",
"type": "string"
}
},
"required": [
"id",
"startTime"
],
"type": "object"
},
"name": "neuron_reschedule_booking",
"outputSchema": null
},
{
"description": "Approve or reject a pending approval programmatically — the decision surface for an authorized operator acting via MCP instead of replying on WhatsApp. Fires the configured callback and posts the outcome to the WhatsApp chat. Exactly-once: the first responder (here or on WhatsApp) wins; later responses return 410. Requires a bot API key.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"apiKey": {
"description": "Bot API key with 'nrn_' prefix for authentication",
"type": "string"
},
"approvalId": {
"description": "The approval request id (UUID)",
"type": "string"
},
"decision": {
"description": "The decision to record",
"enum": [
"approve",
"reject"
],
"type": "string"
},
"reason": {
"description": "Optional reason (recommended for rejections)",
"type": "string"
},
"responderName": {
"description": "Optional display name of the operator making the decision",
"type": "string"
}
},
"required": [
"apiKey",
"approvalId",
"decision"
],
"type": "object"
},
"name": "neuron_respond_approval",
"outputSchema": null
},
{
"description": "Resume a paused ad request campaign. Distribution resumes from where it left off. Only paused ad requests can be resumed.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adRequestId": {
"description": "Unique identifier (UUID) of the paused ad request to resume",
"type": "string"
}
},
"required": [
"adRequestId"
],
"type": "object"
},
"name": "neuron_resume_ad_request",
"outputSchema": null
},
{
"description": "Resume a previously paused bot so it begins processing new messages again.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the bot to resume",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_resume_bot",
"outputSchema": null
},
{
"description": "Resume a previously paused campaign to restart message delivery.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the paused campaign to resume",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_resume_campaign",
"outputSchema": null
},
{
"description": "Resume a paused paced list campaign. It picks up from where the cursor left off.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Campaign ID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_resume_list_campaign",
"outputSchema": null
},
{
"description": "Resume a paused drip SMS campaign.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "UUID of the paused SMS campaign to resume",
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "neuron_resume_sms_campaign",
"outputSchema": null
},
{
"description": "Permanently revoke an API key to immediately invalidate it and prevent further programmatic access. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot that owns the API key",
"type": "string"
},
"keyId": {
"description": "Unique identifier (UUID) of the API key to revoke",
"type": "string"
}
},
"required": [
"botId",
"keyId"
],
"type": "object"
},
"name": "neuron_revoke_api_key",
"outputSchema": null
},
{
"description": "Revoke the current group invite link and generate a new one. The old link will stop working. Requires admin.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"groupJid": {
"description": "Group JID (ending in @g.us)",
"type": "string"
}
},
"required": [
"channelId",
"groupJid"
],
"type": "object"
},
"name": "neuron_revoke_group_invite",
"outputSchema": null
},
{
"description": "Revoke a pending organization invitation so it can no longer be accepted. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"invitationId": {
"description": "Unique identifier (UUID) of the invitation to revoke",
"type": "string"
},
"orgId": {
"description": "Unique identifier (UUID) of the organization",
"type": "string"
}
},
"required": [
"orgId",
"invitationId"
],
"type": "object"
},
"name": "neuron_revoke_invitation",
"outputSchema": null
},
{
"description": "Rewrite or rephrase text using AI with specified tone, style, or instructions (e.g., make it more formal, translate, summarize).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"instruction": {
"description": "Instructions for how to rewrite the text (e.g., 'make it more professional', 'translate to Spanish', 'summarize in 2 sentences')",
"type": "string"
},
"text": {
"description": "The original text to rewrite or transform",
"type": "string"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "neuron_rewrite_text",
"outputSchema": null
},
{
"description": "Manually trigger a flow run for testing. Starts at the 'trigger.manual' node if present, otherwise the first trigger node. Optionally provide a payload object that becomes {{trigger.*}} in the flow.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "UUID of the flow to run.",
"type": "string"
},
"nodeId": {
"description": "Specific trigger node id to start from (for flows with multiple triggers).",
"type": "string"
},
"payload": {
"additionalProperties": {},
"description": "Test payload available as {{trigger.*}} in the flow — e.g. { text: 'hello', contactPhone: '2348012345678', senderName: 'Test User' }.",
"type": "object"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_run_flow",
"outputSchema": null
},
{
"description": "Run a lead source now to pull new leads into the pool (queues the extraction).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Lead source UUID",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_run_lead_source",
"outputSchema": null
},
{
"description": "Fire the next batch of a paced list campaign immediately (on the next worker tick, ~30s), regardless of its schedule. The schedule continues normally afterward.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Campaign ID",
"format": "uuid",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_run_list_campaign_now",
"outputSchema": null
},
{
"description": "Trigger a task to run immediately (in addition to its normal schedule). Returns once the run is queued.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "UUID of the task",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_run_task",
"outputSchema": null
},
{
"description": "Total paid sales count and net revenue (kobo) for this seller.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_sales_stats",
"outputSchema": null
},
{
"description": "Save a verified bank account as the organization's payout destination. Verify the account first using neuron_verify_bank_account.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"accountName": {
"description": "Account holder name as returned from bank verification",
"type": "string"
},
"accountNumber": {
"description": "10-digit Nigerian bank account number",
"type": "string"
},
"bankCode": {
"description": "Nigerian bank code (e.g., '058' for GTBank, '044' for Access Bank)",
"type": "string"
},
"bankName": {
"description": "Full name of the bank (e.g., 'Guaranty Trust Bank')",
"type": "string"
}
},
"required": [
"bankCode",
"bankName",
"accountNumber",
"accountName"
],
"type": "object"
},
"name": "neuron_save_bank_account",
"outputSchema": null
},
{
"description": "Search contacts by a query string across name, phone number, and email fields. Returns matching contacts ranked by relevance.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"q": {
"description": "Search query string to match against contact name, phone, or email",
"type": "string"
}
},
"required": [
"q"
],
"type": "object"
},
"name": "neuron_search_contacts",
"outputSchema": null
},
{
"description": "Perform semantic search across all entries and documents in a knowledge base to find relevant information.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier of the knowledge base to search",
"type": "string"
},
"limit": {
"description": "Maximum number of search results to return",
"type": "number"
},
"q": {
"description": "Search query text to find relevant entries",
"type": "string"
}
},
"required": [
"id",
"q"
],
"type": "object"
},
"name": "neuron_search_knowledge",
"outputSchema": null
},
{
"description": "Check whether this account can sell (Pro plan + admin-granted access) and any pending application.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_seller_status",
"outputSchema": null
},
{
"description": "Search contacts using natural language AI-powered semantic search. Finds contacts based on the meaning of their notes — skills, services, schedules, preferences, etc. Returns ranked results with relevance scores and AI-generated match reasons.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Maximum number of results to return (default: 10, max: 20)",
"exclusiveMinimum": 0,
"maximum": 20,
"type": "integer"
},
"query": {
"description": "Natural language search query (e.g., 'who can deliver to Lagos on Monday?')",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "neuron_semantic_search_contacts",
"outputSchema": null
},
{
"description": "Send a broadcast message to all its recipients. The broadcast must be in draft status. This triggers message delivery and cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the broadcast to send",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_send_broadcast",
"outputSchema": null
},
{
"description": "Send a campaign message to selected eligible contacts via WhatsApp. Requires the campaign to be in 'active' status and contacts to be eligible.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"contactIds": {
"description": "Array of contact UUIDs to send the campaign message to",
"items": {
"type": "string"
},
"type": "array"
},
"id": {
"description": "Unique identifier (UUID) of the active campaign",
"type": "string"
}
},
"required": [
"id",
"contactIds"
],
"type": "object"
},
"name": "neuron_send_campaign_message",
"outputSchema": null
},
{
"description": "Send a vCard contact card via WhatsApp with name, phone, and optional organization.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"contactName": {
"description": "Full name of the contact to share",
"type": "string"
},
"contactOrg": {
"description": "Organization or company name",
"type": "string"
},
"contactPhone": {
"description": "Phone number in international format (e.g. '+2348012345678')",
"type": "string"
},
"to": {
"description": "Recipient JID or phone number",
"type": "string"
}
},
"required": [
"channelId",
"to",
"contactName",
"contactPhone"
],
"type": "object"
},
"name": "neuron_send_contact_card",
"outputSchema": null
},
{
"description": "Send a location pin via WhatsApp with coordinates and optional name/address.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"address": {
"description": "Street address",
"type": "string"
},
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"latitude": {
"description": "Latitude in decimal degrees",
"type": "number"
},
"longitude": {
"description": "Longitude in decimal degrees",
"type": "number"
},
"name": {
"description": "Location name (e.g. 'Eko Hotel')",
"type": "string"
},
"to": {
"description": "Recipient JID or phone number",
"type": "string"
}
},
"required": [
"channelId",
"to",
"latitude",
"longitude"
],
"type": "object"
},
"name": "neuron_send_location",
"outputSchema": null
},
{
"description": "Send a message to an existing conversation. Supports text, image, and document message types with optional media attachments.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"content": {
"description": "Message content to send",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the conversation",
"type": "string"
},
"mediaUrl": {
"description": "URL of media to attach (required for image/document message types)",
"type": "string"
},
"messageType": {
"description": "Type of message: 'text' (default), 'image', or 'document'",
"type": "string"
}
},
"required": [
"id",
"content"
],
"type": "object"
},
"name": "neuron_send_message",
"outputSchema": null
},
{
"description": "Send a poll message via WhatsApp. Polls support 2-12 options and optional multi-select. Only supported on Baileys channels.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"name": {
"description": "Poll question/title",
"minLength": 1,
"type": "string"
},
"options": {
"description": "Poll answer options (2-12 items)",
"items": {
"minLength": 1,
"type": "string"
},
"maxItems": 12,
"minItems": 2,
"type": "array"
},
"selectableCount": {
"description": "Max selections allowed. 0 = unlimited (default). 1 = single-choice.",
"minimum": 0,
"type": "integer"
},
"to": {
"description": "Recipient JID or phone number (individual or group)",
"type": "string"
}
},
"required": [
"channelId",
"to",
"name",
"options"
],
"type": "object"
},
"name": "neuron_send_poll",
"outputSchema": null
},
{
"description": "Send or remove an emoji reaction on a WhatsApp message. Pass an empty emoji string to remove a reaction.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"emoji": {
"description": "Emoji character (e.g. '👍', '❤️'), or empty string to remove reaction",
"type": "string"
},
"messageId": {
"description": "WhatsApp message ID to react to",
"type": "string"
},
"to": {
"description": "Chat JID (e.g. '[email protected]' or group JID)",
"type": "string"
}
},
"required": [
"channelId",
"to",
"messageId",
"emoji"
],
"type": "object"
},
"name": "neuron_send_reaction",
"outputSchema": null
},
{
"description": "Send a draft SMS campaign. Debits the wallet for the SMS cost plus any curated owner payout, then queues delivery. Returns a 402 with shortfall details if the wallet balance is insufficient (fund the wallet with neuron_fund_wallet and retry).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"campaignId": {
"description": "UUID of the draft SMS campaign to send",
"type": "string"
}
},
"required": [
"campaignId"
],
"type": "object"
},
"name": "neuron_send_sms_campaign",
"outputSchema": null
},
{
"description": "Send a sticker via WhatsApp. The easy way: pass `sticker` as a mood or label (e.g. 'laughing', 'thumbs up', 'fire', 'celebrate') and a matching sticker is found automatically from the platform-wide community sticker library (falling back to this org's own stickers). Advanced: pass `stickerUrl` with a direct public WebP image URL instead. Provide one of the two. Only supported on Baileys channels.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"sticker": {
"description": "Mood or label to auto-match a sticker (e.g. 'laughing', 'fire', 'celebrate'). Preferred over stickerUrl.",
"type": "string"
},
"stickerUrl": {
"description": "Advanced: direct URL to a public WebP sticker image. Use only if no mood/label fits.",
"type": "string"
},
"to": {
"description": "Recipient JID or phone number",
"type": "string"
}
},
"required": [
"channelId",
"to"
],
"type": "object"
},
"name": "neuron_send_sticker",
"outputSchema": null
},
{
"description": "Send a WhatsApp message to a phone number or group. Auto-resolves which channel to use (org default > first connected). Supports text, image, audio, video, and document types.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "Unique identifier (UUID) of a specific channel to override auto-resolution",
"type": "string"
},
"contactName": {
"description": "Display name for the recipient contact",
"type": "string"
},
"mediaUrl": {
"description": "URL of media to attach (required for non-text message types)",
"type": "string"
},
"messageType": {
"description": "Message type: 'text' (default), 'image', 'audio', 'video', or 'document'",
"type": "string"
},
"sendAt": {
"description": "ISO 8601 date-time for scheduled delivery (e.g., '2025-12-31T10:00:00Z'). Message sends immediately if omitted.",
"type": "string"
},
"text": {
"description": "Message text content",
"type": "string"
},
"to": {
"description": "Recipient: phone number (e.g., '2348012345678') or group JID (e.g., '[email protected]')",
"type": "string"
}
},
"required": [
"to",
"text"
],
"type": "object"
},
"name": "neuron_send_whatsapp",
"outputSchema": null
},
{
"description": "Set or clear the default WhatsApp channel for the organization. The default channel is used by neuron_send_whatsapp for auto-resolving which channel to send through.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "Identifier (UUID) of the channel to set as default, or null to clear the default",
"type": [
"string",
"null"
]
},
"orgId": {
"description": "Unique identifier (UUID) of the organization",
"type": "string"
}
},
"required": [
"orgId",
"channelId"
],
"type": "object"
},
"name": "neuron_set_default_channel",
"outputSchema": null
},
{
"description": "Enable or disable join approval mode for a WhatsApp group. When enabled, join requests must be manually approved by admins. Requires admin.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"enabled": {
"description": "true to require admin approval for joins, false to allow direct joins",
"type": "boolean"
},
"groupJid": {
"description": "Group JID (ending in @g.us)",
"type": "string"
}
},
"required": [
"channelId",
"groupJid",
"enabled"
],
"type": "object"
},
"name": "neuron_set_group_join_approval",
"outputSchema": null
},
{
"description": "Set a date-specific availability override — mark a day as unavailable, or set custom hours for that date.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"calendarId": {
"description": "Calendar UUID",
"type": "string"
},
"date": {
"description": "Date to override (YYYY-MM-DD)",
"type": "string"
},
"hours": {
"description": "Custom hours for this date (overrides weekly hours)",
"items": {
"additionalProperties": false,
"properties": {
"end": {
"description": "End time (HH:mm)",
"type": "string"
},
"start": {
"description": "Start time (HH:mm)",
"type": "string"
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"type": "array"
},
"isUnavailable": {
"description": "Mark the entire day as unavailable",
"type": "boolean"
},
"reason": {
"description": "Reason for the override (e.g. 'Holiday')",
"type": "string"
}
},
"required": [
"calendarId",
"date"
],
"type": "object"
},
"name": "neuron_set_override",
"outputSchema": null
},
{
"description": "Set typing indicator or online/offline presence on a WhatsApp chat. Only supported on Baileys channels.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"to": {
"description": "Chat JID to set presence for",
"type": "string"
},
"type": {
"description": "Presence type",
"enum": [
"composing",
"paused",
"available",
"unavailable"
],
"type": "string"
}
},
"required": [
"channelId",
"to",
"type"
],
"type": "object"
},
"name": "neuron_set_presence",
"outputSchema": null
},
{
"description": "Start a Baileys (direct WhatsApp) session for the channel. Generates a QR code for device pairing. Only applicable to Baileys-type channels.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the Baileys channel to start",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_start_channel_session",
"outputSchema": null
},
{
"description": "Start or reconnect a social media session for the channel. Initializes the platform client with stored credentials.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the social channel to start",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_start_social_channel_session",
"outputSchema": null
},
{
"description": "Stop an active or paused ad request campaign permanently. Any remaining unspent budget is refunded to the organization wallet. This cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adRequestId": {
"description": "Unique identifier (UUID) of the ad request to stop",
"type": "string"
}
},
"required": [
"adRequestId"
],
"type": "object"
},
"name": "neuron_stop_ad_request",
"outputSchema": null
},
{
"description": "Permanently stop an active campaign and refund the remaining unspent budget to the organization's wallet. This action cannot be undone.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the active campaign to stop",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_stop_campaign",
"outputSchema": null
},
{
"description": "Stop the active Baileys session for the channel and disconnect from WhatsApp. The channel can be restarted later.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the Baileys channel to stop",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_stop_channel_session",
"outputSchema": null
},
{
"description": "Stop the active session for a social media channel. The channel can be restarted later.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the social channel to stop",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_stop_social_channel_session",
"outputSchema": null
},
{
"description": "Build a new video or edit an existing one from a natural-language instruction. Returns the updated ProjectDoc plus the list of edits made. Pass the returned `doc` back in to keep iterating, or to neuron_studio_render to produce an MP4. Does NOT render.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"doc": {
"additionalProperties": {},
"description": "An existing Studio ProjectDoc to edit. Omit to start a fresh video.",
"type": "object"
},
"durationSeconds": {
"description": "Length of a NEW blank video in seconds (default 5).",
"exclusiveMinimum": 0,
"maximum": 600,
"type": "number"
},
"instruction": {
"description": "Plain-English description of the video to build or the edit to make.",
"type": "string"
},
"model": {
"description": "Override the studio model id (else the org/default is used).",
"type": "string"
},
"platform": {
"description": "Canvas size for a NEW video (default instagram-story 9:16). Use tiktok/instagram-story for a reel.",
"enum": [
"instagram-post",
"instagram-story",
"tiktok",
"twitter",
"youtube"
],
"type": "string"
}
},
"required": [
"instruction"
],
"type": "object"
},
"name": "neuron_studio_agent",
"outputSchema": null
},
{
"description": "Apply a batch of Studio tool calls to a video doc and get back the updated doc plus a fresh scene description — YOU (this agent) are the brain, so this needs NO OpenRouter/AI key. Loop: call neuron_studio_catalog once, then neuron_studio_apply with { doc, calls:[{tool,args}] }, read the returned `scene`, apply more, and finally neuron_studio_render. Omit `doc` (with an optional `platform`) to start a fresh video.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"activeIndex": {
"description": "Which scene subsequent layer calls target (default 0).",
"minimum": 0,
"type": "integer"
},
"calls": {
"description": "Ordered tool calls to apply.",
"items": {
"additionalProperties": false,
"properties": {
"args": {
"additionalProperties": {},
"description": "That tool's arguments.",
"type": "object"
},
"tool": {
"description": "A tool name from neuron_studio_catalog, e.g. add_text, animate_layer, add_overlay.",
"type": "string"
}
},
"required": [
"tool"
],
"type": "object"
},
"maxItems": 200,
"minItems": 1,
"type": "array"
},
"doc": {
"additionalProperties": {},
"description": "The ProjectDoc to edit (omit to start fresh). Pass back the `doc` from the previous apply to keep going.",
"type": "object"
},
"durationSeconds": {
"description": "Length when starting fresh (default 5s).",
"exclusiveMinimum": 0,
"maximum": 600,
"type": "number"
},
"platform": {
"description": "Canvas size when starting fresh (default instagram-story).",
"enum": [
"instagram-post",
"instagram-story",
"tiktok",
"twitter",
"youtube"
],
"type": "string"
},
"timeMs": {
"description": "Scene-local playhead (ms) for time-based ops (default 0).",
"minimum": 0,
"type": "number"
}
},
"required": [
"calls"
],
"type": "object"
},
"name": "neuron_studio_apply",
"outputSchema": null
},
{
"description": "Get the Studio's editing vocabulary — every tool (add_text, add_shape, animate_layer, set_visibility_window, group, trim_clip, add_overlay, add_scene, set_transition, …) with its JSON-schema arguments. Read this first when driving the Studio yourself with neuron_studio_apply.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_studio_catalog",
"outputSchema": null
},
{
"description": "Text → image (AI b-roll) via the org's Replicate key. Returns { url } (an external URL). Re-host it (neuron_studio_rehost_media) so it persists, then place it with neuron_studio_apply add_image. Business plan + an image-model version configured in Studio settings.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"aspect": {
"description": "Aspect ratio (default 9:16).",
"enum": [
"9:16",
"1:1",
"16:9"
],
"type": "string"
},
"prompt": {
"description": "What the image should show.",
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
},
"name": "neuron_studio_generate_image",
"outputSchema": null
},
{
"description": "Text → video via Replicate (async). Returns { id, status } — poll neuron_studio_generate_video_status until 'succeeded' to get videoUrl, then re-host + add_video. Needs a genvideo model version configured.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"imageUrl": {
"description": "Optional starting image (image→video).",
"format": "uri",
"type": "string"
},
"prompt": {
"description": "What the clip should show.",
"type": "string"
}
},
"required": [
"prompt"
],
"type": "object"
},
"name": "neuron_studio_generate_video",
"outputSchema": null
},
{
"description": "Poll an AI video job. When status is 'succeeded', videoUrl is the result (external — re-host it before use).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Job id from neuron_studio_generate_video.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_studio_generate_video_status",
"outputSchema": null
},
{
"description": "Fetch a video from a direct link or a platform page (YouTube / Instagram / TikTok / X / LinkedIn) and re-host it so the Studio + renderer can use it. Returns { url, filename, kind, w, h, durationMs }. Put the returned url on a video layer in the ProjectDoc.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"url": {
"description": "The source video URL or platform page.",
"format": "uri",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "neuron_studio_import_media_url",
"outputSchema": null
},
{
"description": "One-shot: build/edit a video from a prompt AND start the MP4 render. Returns the ProjectDoc, the edits, and a render `job` — poll it with neuron_studio_render_status until status is 'completed' to get the outputUrl. Great for 'make me a 20s TikTok reel about X'. Requires a Pro+ plan.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"doc": {
"additionalProperties": {},
"description": "An existing Studio ProjectDoc to edit. Omit to start a fresh video.",
"type": "object"
},
"durationSeconds": {
"description": "Length of a NEW blank video in seconds (default 5).",
"exclusiveMinimum": 0,
"maximum": 600,
"type": "number"
},
"instruction": {
"description": "Plain-English description of the video to build or the edit to make.",
"type": "string"
},
"model": {
"description": "Override the studio model id (else the org/default is used).",
"type": "string"
},
"platform": {
"description": "Canvas size for a NEW video (default instagram-story 9:16). Use tiktok/instagram-story for a reel.",
"enum": [
"instagram-post",
"instagram-story",
"tiktok",
"twitter",
"youtube"
],
"type": "string"
}
},
"required": [
"instruction"
],
"type": "object"
},
"name": "neuron_studio_make",
"outputSchema": null
},
{
"description": "Fetch any image/video/audio URL and re-host it on Neuron so it's stable and server-reachable — use this on external/temporary URLs (AI-generated b-roll, etc.) before placing them with add_image/add_video/add_audio. Returns { url, filename }.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"url": {
"description": "The external media URL to re-host.",
"format": "uri",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "neuron_studio_rehost_media",
"outputSchema": null
},
{
"description": "Submit a Studio ProjectDoc for a headless MP4 render. Returns a job id — poll neuron_studio_render_status until 'completed'. Any media (video/image) in the doc must be a server-reachable URL (use neuron_studio_import_media_url / neuron_studio_upload_media first). Requires a Pro+ plan.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"doc": {
"additionalProperties": {},
"description": "The Studio ProjectDoc/SceneDoc to render.",
"type": "object"
},
"sceneId": {
"description": "Optional saved-scene id to link the job to.",
"format": "uuid",
"type": "string"
}
},
"required": [
"doc"
],
"type": "object"
},
"name": "neuron_studio_render",
"outputSchema": null
},
{
"description": "Poll a render job by id. When status is 'completed', outputUrl is the finished MP4. status is queued | rendering | completed | failed.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Render job id from neuron_studio_render / neuron_studio_make.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_studio_render_status",
"outputSchema": null
},
{
"description": "Persist a ProjectDoc and get back an `openUrl`. Opening it drops the video into the Studio in the user's browser, where 'Export MP4' renders CLIENT-SIDE (on their machine, no server render cost). Use this for the hybrid flow: build with neuron_studio_apply/agent, then save and hand the user the link. Use neuron_studio_render instead only for headless/unattended server renders.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"doc": {
"additionalProperties": {},
"description": "The ProjectDoc to save.",
"type": "object"
},
"name": {
"description": "A title for the saved video (default 'AI video').",
"type": "string"
}
},
"required": [
"doc"
],
"type": "object"
},
"name": "neuron_studio_save",
"outputSchema": null
},
{
"description": "Transcribe a hosted media/audio URL into time-coded caption cues { cues:[{startSeconds,endSeconds,text}] }. Feed them to neuron_studio_apply add_captions to subtitle existing footage. Needs a transcription key on the org.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"url": {
"description": "The hosted media/audio URL to transcribe.",
"format": "uri",
"type": "string"
}
},
"required": [
"url"
],
"type": "object"
},
"name": "neuron_studio_transcribe",
"outputSchema": null
},
{
"description": "Run an AI transform on a hosted video via Replicate (async): op 'bg-remove' or 'face-swap' (face-swap needs imageUrl). Returns { id, status } — poll neuron_studio_transform_video_status for videoUrl. Needs the matching model version configured.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"imageUrl": {
"description": "Reference face image (face-swap only).",
"format": "uri",
"type": "string"
},
"op": {
"description": "Which transform.",
"enum": [
"bg-remove",
"face-swap"
],
"type": "string"
},
"videoUrl": {
"description": "Source video URL.",
"format": "uri",
"type": "string"
}
},
"required": [
"op",
"videoUrl"
],
"type": "object"
},
"name": "neuron_studio_transform_video",
"outputSchema": null
},
{
"description": "Poll a video-transform job. When status is 'succeeded', videoUrl is the result (external — re-host before use).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Job id from neuron_studio_transform_video.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_studio_transform_video_status",
"outputSchema": null
},
{
"description": "Upload a local image/video (base64) to the Studio media store (uncapped) so the renderer can fetch it. Returns { url, filename }. Put the url on an image/video layer.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"base64": {
"description": "Base64-encoded file bytes (no data: prefix).",
"type": "string"
},
"filename": {
"description": "Original filename incl. extension (e.g. clip.mp4).",
"type": "string"
},
"mimetype": {
"description": "MIME type, e.g. video/mp4 or image/png.",
"type": "string"
}
},
"required": [
"base64",
"filename",
"mimetype"
],
"type": "object"
},
"name": "neuron_studio_upload_media",
"outputSchema": null
},
{
"description": "Turn a script into a hosted voiceover audio URL, optionally with caption cues synced to the speech. Returns { url, durationSeconds, cues? }. Then place it with neuron_studio_apply: add_audio({url, label:'Voiceover', durationSeconds}) and add_captions({cues}). This makes fully-voiced reels possible from a prompt. Needs a TTS key on the org (captions also need a transcription key).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"engine": {
"description": "TTS engine (default openai).",
"enum": [
"openai",
"elevenlabs"
],
"type": "string"
},
"text": {
"description": "The script to speak.",
"type": "string"
},
"voice": {
"description": "Voice id/name for the engine (else the org default).",
"type": "string"
},
"withCaptions": {
"description": "Also transcribe the audio into synced caption cues.",
"type": "boolean"
}
},
"required": [
"text"
],
"type": "object"
},
"name": "neuron_studio_voiceover",
"outputSchema": null
},
{
"description": "Submit a draft ad request for admin review. The request must be in draft status. After submission, an admin must approve it before it can be funded.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adRequestId": {
"description": "Unique identifier (UUID) of the draft ad request to submit",
"type": "string"
}
},
"required": [
"adRequestId"
],
"type": "object"
},
"name": "neuron_submit_ad_request",
"outputSchema": null
},
{
"description": "Submit a draft campaign for admin review and approval. The campaign must be in 'draft' status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the draft campaign to submit for review",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_submit_campaign",
"outputSchema": null
},
{
"description": "Submit a contact list to the shared pool marketplace for other organizations to discover and use for ad distribution.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "Audience category (e.g., 'delivery', 'tech', 'consumers', 'food')",
"type": "string"
},
"channelId": {
"description": "Unique identifier (UUID) of the WhatsApp channel used for sending messages",
"type": "string"
},
"demographics": {
"additionalProperties": false,
"description": "Demographic information about the contact list audience",
"properties": {
"regions": {
"description": "Geographic regions covered (e.g., ['lagos', 'abuja'])",
"items": {
"type": "string"
},
"type": "array"
},
"tags": {
"description": "Demographic tags describing the audience (e.g., ['young-adults', 'tech-savvy'])",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"description": {
"description": "Human-readable description of the audience and its characteristics",
"type": "string"
},
"listId": {
"description": "Unique identifier (UUID) of the contact list to submit",
"type": "string"
},
"pricePerDelivery": {
"description": "Price per successful message delivery in kobo (e.g., 5000 = NGN 50)",
"type": "number"
}
},
"required": [
"listId",
"channelId",
"category",
"pricePerDelivery"
],
"type": "object"
},
"name": "neuron_submit_to_list_pool",
"outputSchema": null
},
{
"description": "Switch the MCP server to target a different Neuron backend instance. Auth tokens are preserved per instance — if you've previously logged in to an instance, switching back restores your session automatically.\n\nCall with no args to list known instances and see which is active.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"url": {
"description": "Base API URL of the Neuron instance (e.g., 'https://api.client.com/api/v1'). Omit to list known instances.",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_switch_instance",
"outputSchema": null
},
{
"description": "Switch to a different organization. Returns a new access token scoped to the target organization and automatically sets it.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"orgId": {
"description": "Unique identifier (UUID) of the organization to switch to",
"type": "string"
}
},
"required": [
"orgId"
],
"type": "object"
},
"name": "neuron_switch_org",
"outputSchema": null
},
{
"description": "Trigger a synchronization operation to refresh embeddings, reindex content, or update the knowledge base state.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier of the knowledge base to synchronize",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_sync_knowledge",
"outputSchema": null
},
{
"description": "Synchronize and import WhatsApp Channels from a connected WhatsApp session into Neuron. Discovers channels created outside Neuron.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "Identifier (UUID) of the WhatsApp session channel to sync newsletters from",
"type": "string"
}
},
"required": [
"channelId"
],
"type": "object"
},
"name": "neuron_sync_newsletters",
"outputSchema": null
},
{
"description": "Synchronize all approved reflections into the bot's active knowledge base, applying learned insights to future conversations.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to sync reflections for",
"type": "string"
}
},
"required": [
"botId"
],
"type": "object"
},
"name": "neuron_sync_reflections",
"outputSchema": null
},
{
"description": "Synchronize contacts from all connected WhatsApp channels into the organization's contact database. Creates new contacts for unseen numbers.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_sync_whatsapp_contacts",
"outputSchema": null
},
{
"description": "Transfer control of a conversation from the bot to a human agent. The bot will stop auto-responding until the conversation is released.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the conversation to take over",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_takeover_conversation",
"outputSchema": null
},
{
"description": "Find available slots across all team calendars. Mode 'any' returns slots where at least one member is free (round-robin), 'all' requires everyone to be free (collective).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"from": {
"description": "Start date (YYYY-MM-DD)",
"type": "string"
},
"mode": {
"description": "'any' for round-robin, 'all' for collective (default: 'any')",
"enum": [
"any",
"all"
],
"type": "string"
},
"to": {
"description": "End date (YYYY-MM-DD)",
"type": "string"
}
},
"required": [
"from",
"to"
],
"type": "object"
},
"name": "neuron_team_availability",
"outputSchema": null
},
{
"description": "Execute a dry-run test of a custom API tool with sample arguments to verify the endpoint responds correctly.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"args": {
"additionalProperties": {},
"description": "Sample arguments object to pass to the tool for testing",
"type": "object"
},
"id": {
"description": "Unique identifier (UUID) of the tool to test",
"type": "string"
}
},
"required": [
"id",
"args"
],
"type": "object"
},
"name": "neuron_test_tool",
"outputSchema": null
},
{
"description": "Toggle a built-in tool on or off for a specific bot. Enabled tools become available in the bot's conversations. Example tool IDs: delete_message, post_to_channel, post_status, web_search, send_direct_message, react_to_message, set_reminder, create_poll.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to toggle the tool for",
"type": "string"
},
"enabled": {
"description": "Whether to enable (true) or disable (false) the tool",
"type": "boolean"
},
"toolId": {
"description": "Identifier of the built-in tool (e.g., 'delete_message', 'post_status', 'web_search')",
"type": "string"
}
},
"required": [
"botId",
"toolId",
"enabled"
],
"type": "object"
},
"name": "neuron_toggle_builtin_tool",
"outputSchema": null
},
{
"description": "Toggle the featured status of a pool item. Featured items appear prominently in the marketplace. Requires admin privileges.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the pool item to feature or unfeature",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_toggle_featured",
"outputSchema": null
},
{
"description": "Enable or disable a flow. Disabled flows stop receiving events but retain their graph.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"enabled": {
"description": "true to enable, false to disable.",
"type": "boolean"
},
"id": {
"description": "UUID of the flow.",
"type": "string"
}
},
"required": [
"id",
"enabled"
],
"type": "object"
},
"name": "neuron_toggle_flow",
"outputSchema": null
},
{
"description": "Pause or resume a scheduled task (flips its enabled state and reschedules the next run).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "UUID of the task",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_toggle_task",
"outputSchema": null
},
{
"description": "Remove the bot assignment from a WhatsApp channel. The channel will stop auto-responding to messages.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the channel to unassign the bot from",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_unassign_bot_from_channel",
"outputSchema": null
},
{
"description": "Remove the bot assignment from a social media channel. The bot will lose access to the channel's social media credentials.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"botId": {
"description": "Unique identifier (UUID) of the bot to unassign",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the social channel to unassign the bot from",
"type": "string"
}
},
"required": [
"id",
"botId"
],
"type": "object"
},
"name": "neuron_unassign_bot_from_social_channel",
"outputSchema": null
},
{
"description": "Unblock a previously blocked WhatsApp contact.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"jid": {
"description": "Contact JID or phone number to unblock",
"type": "string"
}
},
"required": [
"channelId",
"jid"
],
"type": "object"
},
"name": "neuron_unblock_contact",
"outputSchema": null
},
{
"description": "Permanently remove a published item from the marketplace pool. Organizations that installed this item will retain their copies.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the pool item to unpublish",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_unpublish_from_pool",
"outputSchema": null
},
{
"description": "Update a draft or rejected ad request. Only draft and rejected ad requests can be edited. Rejected requests revert to draft on update.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"adRequestId": {
"description": "Unique identifier (UUID) of the ad request to update",
"type": "string"
},
"budget": {
"description": "Updated budget in kobo",
"type": "number"
},
"mediaUrl": {
"description": "Updated media URL (set to null to clear)",
"type": "string"
},
"message": {
"description": "Updated ad message content",
"type": "string"
},
"messageType": {
"description": "Updated message type: 'text', 'image', 'video', or 'document'",
"type": "string"
},
"selectedGroupPoolEntryIds": {
"description": "Group pool entry UUIDs for manual group targeting",
"items": {
"type": "string"
},
"type": "array"
},
"selectedPoolEntryIds": {
"description": "Pool entry UUIDs for manual contact targeting",
"items": {
"type": "string"
},
"type": "array"
},
"targetDemographics": {
"additionalProperties": false,
"description": "Updated demographic targeting criteria",
"properties": {
"categories": {
"description": "Updated target categories",
"items": {
"type": "string"
},
"type": "array"
},
"regions": {
"description": "Updated target regions",
"items": {
"type": "string"
},
"type": "array"
}
},
"type": "object"
},
"targetGoal": {
"description": "Updated target number of deliveries",
"type": "number"
},
"targetType": {
"description": "Target type: 'contacts' or 'groups'",
"enum": [
"contacts",
"groups"
],
"type": "string"
},
"targetingMode": {
"description": "Targeting mode: 'auto' for system matching or 'manual' for hand-picked pool entries",
"enum": [
"auto",
"manual"
],
"type": "string"
}
},
"required": [
"adRequestId"
],
"type": "object"
},
"name": "neuron_update_ad_request",
"outputSchema": null
},
{
"description": "Set the weekly availability hours for a calendar. Each day maps to an array of { start, end } time windows in HH:mm format.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"calendarId": {
"description": "Calendar UUID",
"type": "string"
},
"timezone": {
"description": "IANA timezone",
"type": "string"
},
"weeklyHours": {
"additionalProperties": {
"items": {
"additionalProperties": false,
"properties": {
"end": {
"description": "End time (HH:mm)",
"type": "string"
},
"start": {
"description": "Start time (HH:mm)",
"type": "string"
}
},
"required": [
"start",
"end"
],
"type": "object"
},
"type": "array"
},
"description": "Weekly hours map, e.g. { monday: [{ start: '09:00', end: '17:00' }], saturday: [] }",
"propertyNames": {
"enum": [
"monday",
"tuesday",
"wednesday",
"thursday",
"friday",
"saturday",
"sunday"
]
},
"type": "object"
}
},
"required": [
"calendarId",
"weeklyHours"
],
"type": "object"
},
"name": "neuron_update_availability",
"outputSchema": null
},
{
"description": "Update an existing blog post's content, metadata, status, or SEO fields. Only provided fields are changed.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"blocks": {
"anyOf": [
{
"items": {
"additionalProperties": {},
"type": "object"
},
"type": "array"
},
{
"type": "null"
}
],
"description": "Structured layout blocks, rendered top-to-bottom as styled components. Each block is an object with a `type` and its fields:\n- hero: { type:'hero', title, kicker?, subtitle?, imageUrl?, align?:'left'|'center', ctaLabel?, ctaHref? }\n- richText: { type:'richText', markdown } (full GFM markdown)\n- callout: { type:'callout', variant:'info'|'tip'|'warning'|'success'|'danger', title?, markdown }\n- columns: { type:'columns', ratio?:'1-1'|'1-2'|'2-1', columns:[ [block,...], [block,...] ] } (exactly 2 columns of leaf blocks; no nested columns)\n- codeCard: { type:'codeCard', language?, filename?, code }\n- imageGrid: { type:'imageGrid', columns?:1|2|3|4, images:[{ url, alt?, caption? }] }\n- quote: { type:'quote', quote, attribution? }\n- embed: { type:'embed', provider:'youtube'|'loom'|'vimeo'|'generic', url, title? } (paste the normal share URL)\n- cta: { type:'cta', headline, body?, buttonLabel, buttonHref, secondaryLabel?, secondaryHref?, accent?:'#hex' }\n- divider: { type:'divider' }\n- html: { type:'html', html, sandboxed?, height? } (custom HTML. Default is sanitized + indexable, no scripts. Set sandboxed:true to run scripts inside an isolated iframe — NOT indexed by search.)\nBuild magazine-style posts by composing these, e.g. a hero, then richText, then a columns block, a callout, a codeCard, and a closing cta.\n\nPass null to clear blocks and revert to the markdown `content`. Omit to leave existing blocks unchanged."
},
"content": {
"description": "New markdown body (GFM + inline raw HTML). Supports , <video>, <iframe> embeds, <details>/<summary>, <mark>, <kbd>.",
"type": "string"
},
"coverImageUrl": {
"description": "New URL for the cover image",
"type": "string"
},
"excerpt": {
"description": "New short summary or preview text",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the blog post to update",
"type": "string"
},
"seoDescription": {
"description": "New meta description for search engines",
"type": "string"
},
"seoKeywords": {
"description": "New list of SEO keywords",
"items": {
"type": "string"
},
"type": "array"
},
"seoTitle": {
"description": "New custom SEO title override",
"type": "string"
},
"status": {
"description": "New publication status for the post",
"enum": [
"draft",
"published",
"hidden"
],
"type": "string"
},
"tags": {
"description": "Replace the post's tags with this list of tag names (created if missing). Empty array clears all tags; omit to leave tags unchanged.",
"items": {
"type": "string"
},
"type": "array"
},
"title": {
"description": "New title for the blog post",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_blog_post",
"outputSchema": null
},
{
"description": "Add or update host notes on a booking.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Booking UUID",
"type": "string"
},
"notes": {
"description": "Host notes text",
"type": "string"
}
},
"required": [
"id",
"notes"
],
"type": "object"
},
"name": "neuron_update_booking_notes",
"outputSchema": null
},
{
"description": "Update an existing bot's configuration. Only provided fields are modified; omitted fields remain unchanged.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"assignment": {
"description": "One-sentence role definition for the bot (max 2000 chars)",
"type": "string"
},
"escalationPrompt": {
"description": "Prompt template used when escalating to a human agent (max 5000 chars)",
"type": "string"
},
"fallbackMessage": {
"description": "Message sent when the bot cannot understand user input (max 2000 chars)",
"type": "string"
},
"greetingMessage": {
"description": "Automatic greeting sent when a new conversation starts (max 2000 chars)",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the bot to update",
"type": "string"
},
"llmModel": {
"description": "OpenRouter model ID (e.g., 'google/gemini-2.5-flash-lite', 'openrouter/auto')",
"type": "string"
},
"llmTemperature": {
"description": "Temperature parameter controlling response randomness (0 = deterministic, 2 = creative)",
"maximum": 2,
"minimum": 0,
"type": "number"
},
"maxTokens": {
"description": "Maximum number of tokens the bot can generate per response",
"exclusiveMinimum": 0,
"type": "number"
},
"metadata": {
"additionalProperties": {},
"description": "Arbitrary metadata object stored with the bot. Replaces the entire metadata field — include ALL existing keys you want to keep. Known keys: 'communityExitFollowUp' (auto-DM users who leave watched groups — { enabled: boolean, groupJids: string[], message: string with {name} placeholder }), 'learningConfig' (self-learning from conversations — { enabled: boolean, folder: string, groupChats: string[], dmPhones: string[], useAdminPhones: boolean }), 'loadBalancing' (multi-channel round-robin — { enabled: boolean, strategy: string }), 'welcomeNewMembers' (fine-tune welcome behavior — { batchWindowSeconds: number, groupJids: string[] }). Additional custom keys are preserved as-is.",
"type": "object"
},
"name": {
"description": "New display name for the bot",
"type": "string"
},
"responsibilities": {
"description": "Array of responsibility descriptions defining what the bot handles",
"items": {
"type": "string"
},
"type": "array"
},
"systemPrompt": {
"description": "New system prompt defining the bot's behavior and personality",
"type": "string"
},
"welcomeMessage": {
"description": "Welcome message sent to new members joining groups the bot manages. Setting this field activates the batched welcome feature — new members are accumulated over a window (default 60s) and welcomed in a single message with @mentions. Set to null to disable.",
"type": "string"
},
"whatsappChannelId": {
"description": "Unique identifier (UUID) of the WhatsApp channel to associate with the bot",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_bot",
"outputSchema": null
},
{
"description": "Update an existing broadcast's name, message content, or media before sending. The broadcast must still be in draft status.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the broadcast to update",
"type": "string"
},
"mediaUrl": {
"description": "New media URL to attach",
"type": "string"
},
"message": {
"description": "New message content to broadcast",
"type": "string"
},
"messageType": {
"description": "New message type (e.g., 'text', 'image', 'document')",
"type": "string"
},
"name": {
"description": "New display name or label for the broadcast",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_broadcast",
"outputSchema": null
},
{
"description": "Update a calendar's settings. Only provided fields are modified.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"color": {
"description": "New hex color code",
"type": "string"
},
"description": {
"description": "New description",
"type": "string"
},
"id": {
"description": "Calendar UUID",
"type": "string"
},
"isActive": {
"description": "Enable or disable the calendar",
"type": "boolean"
},
"name": {
"description": "New display name",
"type": "string"
},
"notifyEmail": {
"description": "Toggle email notifications",
"type": "boolean"
},
"notifyEmailAddress": {
"description": "New host email for notifications",
"type": "string"
},
"notifyPhone": {
"description": "New host phone for WhatsApp notifications",
"type": "string"
},
"notifyWhatsapp": {
"description": "Toggle WhatsApp notifications",
"type": "boolean"
},
"timezone": {
"description": "New IANA timezone",
"type": "string"
},
"visibility": {
"description": "New visibility",
"enum": [
"private",
"public",
"org-link"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_calendar",
"outputSchema": null
},
{
"description": "Update a campaign that is in 'draft' or 'rejected' status. Active or completed campaigns cannot be modified.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"deadline": {
"description": "Updated campaign deadline in ISO 8601 date format",
"type": "string"
},
"description": {
"description": "Updated marketplace description",
"type": "string"
},
"guidelines": {
"description": "Updated participant guidelines",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the campaign to update",
"type": "string"
},
"message": {
"description": "Updated WhatsApp message template",
"type": "string"
},
"requireMutualContact": {
"description": "Updated mutual contact requirement setting",
"type": "boolean"
},
"rewardPerDelivery": {
"description": "Updated reward per delivery in kobo (e.g., 5000 = NGN 50)",
"type": "number"
},
"title": {
"description": "Updated campaign title",
"type": "string"
},
"totalBudget": {
"description": "Updated total campaign budget in kobo",
"type": "number"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_campaign",
"outputSchema": null
},
{
"description": "Update configuration of an existing WhatsApp channel. Only provided fields are modified; omitted fields remain unchanged.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the channel to update",
"type": "string"
},
"metaAccessToken": {
"description": "New Meta Access Token (meta_cloud channels only)",
"type": "string"
},
"metaPhoneNumberId": {
"description": "New Meta Phone Number ID (meta_cloud channels only)",
"type": "string"
},
"name": {
"description": "New display name for the channel",
"type": "string"
},
"phoneNumber": {
"description": "New phone number for the channel (E.164 format)",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_channel",
"outputSchema": null
},
{
"description": "Update an existing contact's details. If notes are provided, they are appended as a new structured note entry without overwriting existing notes.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"doNotAutoRespond": {
"description": "Set true so the bot never auto-responds to this contact, false to allow (manual/API and human sends are unaffected either way)",
"type": "boolean"
},
"doNotBroadcast": {
"description": "Set true to exclude this contact from all broadcasts, false to allow",
"type": "boolean"
},
"email": {
"description": "Updated email address for the contact",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the contact to update",
"type": "string"
},
"name": {
"description": "Updated full name for the contact",
"type": "string"
},
"notes": {
"description": "New note to append to the contact's existing notes",
"type": "string"
},
"phone": {
"description": "Updated phone number in E.164 format (e.g., +2348012345678)",
"type": "string"
},
"tags": {
"description": "Updated tags for the contact (replaces existing tags)",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_contact",
"outputSchema": null
},
{
"description": "Update an existing contact list's name, slug, description, criteria, or refresh schedule.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"criteria": {
"anyOf": [
{
"anyOf": [
{
"not": {}
},
{
"additionalProperties": {},
"type": "object"
}
]
},
{
"type": "null"
}
],
"description": "Updated dynamic list criteria. Set to null to clear existing criteria."
},
"description": {
"description": "Updated description of the list's purpose",
"type": "string"
},
"idOrSlug": {
"description": "Unique identifier (UUID) or URL-friendly slug of the contact list to update",
"type": "string"
},
"name": {
"description": "Updated display name for the list",
"type": "string"
},
"refreshSchedule": {
"description": "Updated refresh schedule for dynamic lists",
"enum": [
"manual",
"daily",
"weekly",
"on_access"
],
"type": "string"
},
"slug": {
"description": "Updated URL-friendly slug for the list",
"type": "string"
}
},
"required": [
"idOrSlug"
],
"type": "object"
},
"name": "neuron_update_contact_list",
"outputSchema": null
},
{
"description": "Update a host-created event. Use scope='future' to update all future instances of a recurring series.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"attendees": {
"description": "Updated attendee list",
"items": {
"additionalProperties": false,
"properties": {
"contactId": {
"type": "string"
},
"email": {
"type": "string"
},
"name": {
"type": "string"
},
"phone": {
"type": "string"
},
"status": {
"type": "string"
}
},
"required": [
"name"
],
"type": "object"
},
"type": "array"
},
"description": {
"description": "New description",
"type": "string"
},
"endTime": {
"description": "New end time (ISO 8601)",
"type": "string"
},
"id": {
"description": "Event (booking) UUID",
"type": "string"
},
"locationType": {
"description": "New location type",
"enum": [
"video",
"phone",
"in_person",
"whatsapp",
"custom"
],
"type": "string"
},
"locationValue": {
"description": "New location value",
"type": "string"
},
"scope": {
"description": "'single' (default) or 'future' to update all future instances",
"enum": [
"single",
"future"
],
"type": "string"
},
"startTime": {
"description": "New start time (ISO 8601)",
"type": "string"
},
"title": {
"description": "New title",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_event",
"outputSchema": null
},
{
"description": "Update an event type's settings. Only provided fields are modified.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"color": {
"description": "New hex color",
"type": "string"
},
"currency": {
"description": "New currency code",
"type": "string"
},
"description": {
"description": "New description",
"type": "string"
},
"duration": {
"description": "New duration in minutes",
"type": "number"
},
"id": {
"description": "Event type UUID",
"type": "string"
},
"isActive": {
"description": "Enable or disable the event type",
"type": "boolean"
},
"locationType": {
"description": "New location type",
"enum": [
"video",
"phone",
"in_person",
"whatsapp",
"custom"
],
"type": "string"
},
"locationValue": {
"description": "New location value",
"type": "string"
},
"name": {
"description": "New name",
"type": "string"
},
"price": {
"description": "New price",
"type": "number"
},
"requireConfirmation": {
"description": "Require host confirmation",
"type": "boolean"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_event_type",
"outputSchema": null
},
{
"description": "Update a flow's name, description, graph, or enabled state. Only provided fields are changed. When updating the graph, provide the COMPLETE graph (all nodes and edges) — it replaces the existing graph entirely. When a graph is supplied the response includes a non-blocking `warnings` array (same checks as create_flow) — check it and fix any flagged issues.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"description": {
"description": "New description (null to clear).",
"type": [
"string",
"null"
]
},
"enabled": {
"description": "Enable or disable the flow.",
"type": "boolean"
},
"graph": {
"additionalProperties": false,
"description": "Complete replacement graph. Provide ALL nodes and edges.",
"properties": {
"edges": {
"description": "Array of edges connecting nodes. Each edge fires when its source node emits on the matching sourceHandle.",
"items": {
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique edge id, e.g. 'e_msg_reply'.",
"type": "string"
},
"source": {
"description": "Source node id.",
"type": "string"
},
"sourceHandle": {
"description": "Which output port of the source node this edge leaves from. Branch nodes use 'true'/'false', switch/router use case ids, wait nodes use 'default'/'timeout', lookup uses 'found'/'not_found'. Defaults to 'default'.",
"type": "string"
},
"target": {
"description": "Target node id.",
"type": "string"
}
},
"required": [
"id",
"source",
"target"
],
"type": "object"
},
"type": "array"
},
"nodes": {
"description": "Array of flow nodes.",
"items": {
"additionalProperties": false,
"properties": {
"config": {
"additionalProperties": {},
"default": {},
"description": "Node-specific configuration. Values may contain {{…}} templates resolved at runtime against trigger, vars, and nodes.",
"type": "object"
},
"id": {
"description": "Stable node id unique within the flow, e.g. 'n_a1b2' or 't_msg'.",
"type": "string"
},
"label": {
"description": "Human label overriding the registry default.",
"type": "string"
},
"position": {
"additionalProperties": false,
"description": "Canvas position (UI layout). Use x=300 as center, space nodes ~160px apart vertically.",
"properties": {
"x": {
"type": "number"
},
"y": {
"type": "number"
}
},
"required": [
"x",
"y"
],
"type": "object"
},
"type": {
"description": "Registry key — e.g. 'trigger.message_received', 'logic.branch', 'action.send_message'. Use neuron_get_flow_catalog to see all available types.",
"type": "string"
}
},
"required": [
"id",
"type"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"nodes",
"edges"
],
"type": "object"
},
"id": {
"description": "UUID of the flow to update.",
"type": "string"
},
"name": {
"description": "New name.",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_flow",
"outputSchema": null
},
{
"description": "Update the description of a WhatsApp group. Requires the bot to be a group admin.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"description": {
"description": "New group description (can be empty string to clear)",
"type": "string"
},
"groupJid": {
"description": "Group JID (ending in @g.us)",
"type": "string"
}
},
"required": [
"channelId",
"groupJid",
"description"
],
"type": "object"
},
"name": "neuron_update_group_description",
"outputSchema": null
},
{
"description": "Add, remove, promote, or demote members in a WhatsApp group. Provide phone numbers or JIDs. Requires admin privileges.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"action": {
"description": "Action to perform on the participants",
"enum": [
"add",
"remove",
"promote",
"demote"
],
"type": "string"
},
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"groupJid": {
"description": "Group JID (ending in @g.us)",
"type": "string"
},
"participants": {
"description": "Array of phone numbers or JIDs (e.g. ['2348012345678'] or ['[email protected]'])",
"items": {
"type": "string"
},
"minItems": 1,
"type": "array"
}
},
"required": [
"channelId",
"groupJid",
"participants",
"action"
],
"type": "object"
},
"name": "neuron_update_group_members",
"outputSchema": null
},
{
"description": "Change WhatsApp group settings: 'announcement' (only admins send), 'not_announcement' (everyone sends), 'locked' (only admins edit info), 'unlocked' (everyone edits info). Requires admin.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"groupJid": {
"description": "Group JID (ending in @g.us)",
"type": "string"
},
"setting": {
"description": "Group setting to apply",
"enum": [
"announcement",
"not_announcement",
"locked",
"unlocked"
],
"type": "string"
}
},
"required": [
"channelId",
"groupJid",
"setting"
],
"type": "object"
},
"name": "neuron_update_group_settings",
"outputSchema": null
},
{
"description": "Update the name/subject of a WhatsApp group. Requires the bot to be a group admin.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"groupJid": {
"description": "Group JID (ending in @g.us)",
"type": "string"
},
"subject": {
"description": "New group name/subject",
"minLength": 1,
"type": "string"
}
},
"required": [
"channelId",
"groupJid",
"subject"
],
"type": "object"
},
"name": "neuron_update_group_subject",
"outputSchema": null
},
{
"description": "Update the content, title, folder, or source of an existing knowledge base entry.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"content": {
"description": "New content for the entry",
"type": "string"
},
"entryId": {
"description": "Unique identifier of the entry to update",
"type": "string"
},
"folder": {
"description": "New folder: 'general', 'skills', 'contexts', 'documents', or 'faqs'",
"type": "string"
},
"kbId": {
"description": "Unique identifier of the knowledge base",
"type": "string"
},
"metadata": {
"additionalProperties": {},
"description": "New metadata key-value pairs",
"type": "object"
},
"source": {
"description": "New source type for the entry",
"enum": [
"manual",
"document",
"url"
],
"type": "string"
},
"title": {
"description": "New title for the entry",
"type": "string"
}
},
"required": [
"kbId",
"entryId"
],
"type": "object"
},
"name": "neuron_update_kb_entry",
"outputSchema": null
},
{
"description": "Update the properties of an existing knowledge base such as name, description, or root instruction.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"description": {
"description": "New description for the knowledge base",
"type": "string"
},
"id": {
"description": "Unique identifier of the knowledge base to update",
"type": "string"
},
"name": {
"description": "New name for the knowledge base",
"type": "string"
},
"rootInstruction": {
"description": "New root instruction or context",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_knowledge_base",
"outputSchema": null
},
{
"description": "Update a paced list campaign's name, message source, batch size, schedule, exhaust behavior, or send settings. Changing the schedule reschedules the next run.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"batchSize": {
"maximum": 1000,
"minimum": 1,
"type": "integer"
},
"botId": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
]
},
"channelId": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
]
},
"id": {
"description": "Campaign ID",
"format": "uuid",
"type": "string"
},
"loopCooldownMs": {
"anyOf": [
{
"minimum": 0,
"type": "integer"
},
{
"type": "null"
}
]
},
"messageSource": {
"anyOf": [
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "static",
"type": "string"
},
"text": {
"description": "The message body sent to each contact in the batch",
"minLength": 1,
"type": "string"
}
},
"required": [
"kind",
"text"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "rotation",
"type": "string"
},
"messages": {
"description": "Pool of messages",
"items": {
"minLength": 1,
"type": "string"
},
"minItems": 1,
"type": "array"
},
"mode": {
"description": "Rotate in order (default) or pick randomly per run",
"enum": [
"sequential",
"random"
],
"type": "string"
}
},
"required": [
"kind",
"messages"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"kind": {
"const": "content",
"type": "string"
},
"ref": {
"description": "A Neuron Note ID; its content becomes the message, fetched live at each run",
"minLength": 1,
"type": "string"
}
},
"required": [
"kind",
"ref"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "AI-written message generated live at each run (BYOK-aware)",
"properties": {
"botId": {
"description": "Bot whose system prompt supplies business context",
"format": "uuid",
"type": "string"
},
"kind": {
"const": "ai",
"type": "string"
},
"perContact": {
"description": "Generate a distinct message per recipient (slower, more tokens). Default false = one message for the whole batch",
"type": "boolean"
},
"personaId": {
"description": "Persona whose voice the message is written in",
"format": "uuid",
"type": "string"
},
"prompt": {
"description": "Instruction for the message the AI should write",
"minLength": 1,
"type": "string"
}
},
"required": [
"kind",
"prompt"
],
"type": "object"
},
{
"additionalProperties": false,
"description": "Message fetched from your webhook at each run",
"properties": {
"kind": {
"const": "webhook",
"type": "string"
},
"perContact": {
"description": "Call once per recipient with the contact in the payload. Default false = one call per batch",
"type": "boolean"
},
"url": {
"description": "POSTed { campaignId, listId, contact? }; returns { message } or a bare string",
"format": "uri",
"type": "string"
}
},
"required": [
"kind",
"url"
],
"type": "object"
}
],
"description": "How the message is resolved live at each batch run: 'static' (fixed), 'rotation' (cycle through several), 'ai' (AI-written), 'webhook' (from your service), or 'content' (a saved Neuron Note)."
},
"name": {
"maxLength": 255,
"type": "string"
},
"onExhaust": {
"enum": [
"stop",
"loop"
],
"type": "string"
},
"schedule": {
"allOf": [
{
"anyOf": [
{
"additionalProperties": false,
"properties": {
"everyMs": {
"description": "Milliseconds between runs, e.g. 86400000 for daily",
"minimum": 60000,
"type": "integer"
},
"kind": {
"const": "interval",
"type": "string"
}
},
"required": [
"kind",
"everyMs"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"hour": {
"description": "UTC hour",
"maximum": 23,
"minimum": 0,
"type": "integer"
},
"kind": {
"const": "daily",
"type": "string"
},
"minute": {
"maximum": 59,
"minimum": 0,
"type": "integer"
}
},
"required": [
"kind",
"hour"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"days": {
"description": "Days of week, 0=Sun … 6=Sat",
"items": {
"maximum": 6,
"minimum": 0,
"type": "integer"
},
"minItems": 1,
"type": "array"
},
"hour": {
"description": "UTC hour",
"maximum": 23,
"minimum": 0,
"type": "integer"
},
"kind": {
"const": "weekly",
"type": "string"
},
"minute": {
"maximum": 59,
"minimum": 0,
"type": "integer"
}
},
"required": [
"kind",
"days",
"hour"
],
"type": "object"
},
{
"additionalProperties": false,
"properties": {
"dayOfMonth": {
"maximum": 31,
"minimum": 1,
"type": "integer"
},
"hour": {
"description": "UTC hour",
"maximum": 23,
"minimum": 0,
"type": "integer"
},
"kind": {
"const": "monthly",
"type": "string"
},
"minute": {
"maximum": 59,
"minimum": 0,
"type": "integer"
}
},
"required": [
"kind",
"dayOfMonth",
"hour"
],
"type": "object"
}
]
},
{
"properties": {
"endAt": {
"description": "ISO date; the campaign completes after this",
"type": "string"
},
"maxRuns": {
"description": "Stop after this many runs",
"minimum": 1,
"type": "integer"
},
"timezone": {
"description": "IANA timezone the daily/weekly/monthly time is interpreted in, e.g. 'Africa/Lagos'. Defaults to UTC. Ignored for 'interval'. The schedule holds its local wall-clock time across DST.",
"type": "string"
}
},
"type": "object"
}
],
"description": "When each batch fires. e.g. daily at 9am in Africa/Lagos, or every weekend."
},
"sendMode": {
"enum": [
"message",
"bot"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_list_campaign",
"outputSchema": null
},
{
"description": "Update a member's permissions within the organization, such as conversation access. Only provided fields are changed.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"canViewConversations": {
"description": "Whether the member can view conversations",
"type": "boolean"
},
"orgId": {
"description": "Unique identifier (UUID) of the organization",
"type": "string"
},
"userId": {
"description": "Unique identifier (UUID) of the member to update",
"type": "string"
}
},
"required": [
"orgId",
"userId",
"canViewConversations"
],
"type": "object"
},
"name": "neuron_update_member",
"outputSchema": null
},
{
"description": "Update the name or description of an existing WhatsApp Channel newsletter. Only provided fields are changed.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"description": {
"description": "New description for the newsletter",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the newsletter to update",
"type": "string"
},
"name": {
"description": "New display name for the newsletter",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_newsletter",
"outputSchema": null
},
{
"description": "Update organization settings such as name, description, or configuration preferences. Only provided fields are changed.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"autoOptOutBroadcast": {
"description": "Auto-exclude a contact from broadcasts when they send a broadcast opt-out message (e.g. 'stop messaging me'). Off by default.",
"type": "boolean"
},
"autoSuppressHostile": {
"description": "Auto-exclude a contact from broadcasts when they are hostile about being contacted (e.g. cursing us out for messaging them). Off by default.",
"type": "boolean"
},
"name": {
"description": "New display name for the organization",
"type": "string"
},
"orgId": {
"description": "Unique identifier (UUID) of the organization to update",
"type": "string"
}
},
"required": [
"orgId"
],
"type": "object"
},
"name": "neuron_update_organization",
"outputSchema": null
},
{
"description": "Modify an existing outbound webhook's configuration, including its destination URL, subscribed event types, or filter prompt.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"eventTypes": {
"description": "Updated array of event types that should trigger this webhook",
"items": {
"enum": [
"message.created",
"message.assistant",
"conversation.created",
"conversation.escalated",
"conversation.closed",
"bot.paused",
"bot.resumed"
],
"type": "string"
},
"type": "array"
},
"filterPrompt": {
"description": "Updated LLM prompt for selectively filtering forwarded events",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the outbound webhook to update",
"type": "string"
},
"name": {
"description": "Updated human-readable name for the webhook",
"type": "string"
},
"url": {
"description": "Updated destination URL that will receive webhook event payloads (HTTPS recommended)",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_outbound_webhook",
"outputSchema": null
},
{
"description": "Update a persona's name/description, or hand-tune its voiceProfile / exemplars.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"description": {
"type": "string"
},
"exemplars": {
"items": {
"additionalProperties": {},
"type": "object"
},
"type": "array"
},
"id": {
"description": "Persona UUID",
"type": "string"
},
"name": {
"type": "string"
},
"voiceProfile": {
"additionalProperties": {},
"type": "object"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_persona",
"outputSchema": null
},
{
"description": "Update a pool item you have published — metadata (name, description, category, tags) and content fields (setupInstructions, defaultSecrets for tool_template items). The underlying resource is re-snapshotted and version is bumped on every update.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "New category name for the pool listing",
"type": "string"
},
"defaultSecrets": {
"additionalProperties": {
"type": "string"
},
"description": "Updated pre-filled secrets auto-populated on install, e.g. { OAUTH2_TOKEN_URL: 'https://...' }",
"type": "object"
},
"description": {
"description": "New detailed description for the pool listing",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the pool item to update",
"type": "string"
},
"name": {
"description": "New display name for the pool listing",
"type": "string"
},
"setupInstructions": {
"description": "Updated setup guide shown after installation (tool_template only, max 5000 chars)",
"type": "string"
},
"tags": {
"description": "New list of tags for the pool listing",
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_pool_item",
"outputSchema": null
},
{
"description": "Update a specific WhatsApp privacy setting. Settings: lastSeen (all/contacts/contact_blacklist/none), online (all/match_last_seen), profilePicture (all/contacts/contact_blacklist/none), status (all/contacts/contact_blacklist/none), readReceipts (all/none), groupsAdd (all/contacts/contact_blacklist).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"setting": {
"description": "Privacy setting to update",
"enum": [
"lastSeen",
"online",
"profilePicture",
"status",
"readReceipts",
"groupsAdd"
],
"type": "string"
},
"value": {
"description": "New value for the setting (see description for allowed values per setting)",
"minLength": 1,
"type": "string"
}
},
"required": [
"channelId",
"setting",
"value"
],
"type": "object"
},
"name": "neuron_update_privacy_setting",
"outputSchema": null
},
{
"description": "Update any field of a product (price, delivery, cover, enabled, fee payer, …).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"category": {
"description": "Category label e.g. 'Productivity'",
"type": [
"string",
"null"
]
},
"channelId": {
"anyOf": [
{
"format": "uuid",
"type": "string"
},
{
"type": "null"
}
],
"description": "WhatsApp session UUID used to deliver the product (defaults to the org default channel)"
},
"checkoutFields": {
"description": "Custom checkout questions the buyer answers (name, address, specs/customisations…). Their answers are attached to the order and sent to the seller.",
"items": {
"additionalProperties": false,
"properties": {
"key": {
"type": "string"
},
"label": {
"type": "string"
},
"options": {
"items": {
"type": "string"
},
"type": "array"
},
"placeholder": {
"type": "string"
},
"required": {
"type": "boolean"
},
"type": {
"enum": [
"text",
"textarea",
"number",
"email",
"phone",
"select"
],
"type": "string"
}
},
"required": [
"key",
"label",
"type"
],
"type": "object"
},
"type": "array"
},
"codeMode": {
"description": "For deliveryType 'code': 'shared' (same text to every buyer), 'pool' (a unique code per sale from codes you upload — sells out when empty), or 'generated' (auto-mint a unique license key per sale)",
"enum": [
"shared",
"pool",
"generated"
],
"type": "string"
},
"codes": {
"description": "For codeMode 'pool': the unique codes/keys to add (one gets sent per buyer). Appended to any existing pool.",
"items": {
"type": "string"
},
"type": "array"
},
"content": {
"description": "Rich product-page content blocks. Ordered array of {type, ...}: heading {text,level}, text {markdown}, image {url,caption}, video {url}, callout {emoji,text}, collapsible {title,blocks[]}, divider {}, button {label,url}, embed {url}, spacer {}",
"type": "array"
},
"coverColor": {
"description": "Cover colour (hex) for 'color'/'gradient' cover types",
"type": [
"string",
"null"
]
},
"coverColor2": {
"description": "Second colour (hex) for 'gradient' cover",
"type": [
"string",
"null"
]
},
"coverEmoji": {
"description": "Emoji used as a cover fallback (e.g. 📓)",
"type": [
"string",
"null"
]
},
"coverImageUrl": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
],
"description": "Cover image URL"
},
"coverType": {
"description": "How the cover renders",
"enum": [
"none",
"emoji",
"image",
"color",
"gradient"
],
"type": "string"
},
"currency": {
"description": "ISO currency (default NGN)",
"type": "string"
},
"deliveryFileName": {
"description": "Filename shown in the WhatsApp document",
"type": [
"string",
"null"
]
},
"deliveryFileUrl": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
],
"description": "For deliveryType 'file': the uploaded file URL (upload first with neuron_upload_media)"
},
"deliveryText": {
"description": "For 'link'/'code': the link or code the buyer receives. Optional note for 'file'.",
"type": [
"string",
"null"
]
},
"deliveryType": {
"description": "How the product is delivered: 'file' (uploaded file), 'link' (URL), or 'code' (text/code)",
"enum": [
"file",
"link",
"code"
],
"type": "string"
},
"description": {
"description": "Rich description / what the buyer gets",
"type": "string"
},
"enabled": {
"description": "Whether the product is live",
"type": "boolean"
},
"feePayer": {
"description": "'buyer' (fee added on top, seller gets full price — default) or 'seller' (fee deducted)",
"enum": [
"buyer",
"seller"
],
"type": "string"
},
"id": {
"description": "Product UUID",
"format": "uuid",
"type": "string"
},
"kind": {
"description": "Short label e.g. 'E-book', 'Presets', 'Service'",
"type": [
"string",
"null"
]
},
"membership": {
"description": "Make this a recurring subscription/membership: it tracks a paid period per buyer, renews from their Neuron wallet when possible (else emails a reminder — no card auto-charge), and marks them lapsed when the period + grace passes. React to membership.started/renewed/lapsed in Flows to deliver whatever the membership grants.",
"type": "boolean"
},
"membershipGraceDays": {
"description": "Days after the period ends before an unpaid member lapses (and, if a group is attached, is removed from it). Default 1.",
"minimum": 0,
"type": "integer"
},
"membershipGroupName": {
"description": "Group subject used when the attached group is auto-created (defaults to the product title). Only relevant with membershipGroupSlug.",
"type": [
"string",
"null"
]
},
"membershipGroupSlug": {
"description": "OPTIONAL: attach a WhatsApp group as a membership perk. Org-unique handle (lowercase letters, numbers, hyphens); the group is created on the first sale, buyers are added on renewal and removed on lapse. Your connected number must be a group admin. Omit for a membership that isn't group-based.",
"type": [
"string",
"null"
]
},
"membershipInterval": {
"anyOf": [
{
"enum": [
"daily",
"weekly",
"monthly"
],
"type": "string"
},
{
"type": "null"
}
],
"description": "Billing period. Required when membership is true."
},
"originalPriceMinor": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"description": "Optional compare-at / 'was' price (kobo), shown struck through. Must be ≥ current price."
},
"priceMinor": {
"description": "Current price (charged). Amount in kobo (minor units): ₦1 = 100. Minimum ₦500 = 50000. Set 0 for a free product (no payment).",
"type": "integer"
},
"theme": {
"additionalProperties": {
"type": "string"
},
"description": "Per-product theme: { bg, accent, text (hex), mode: 'light'|'dark', layout: 'hero'|'side', coverAspect: '16/10'|'3/2'|'1/1'|'4/5', cta: buy-button label e.g. 'Reserve your hour' }",
"type": "object"
},
"title": {
"description": "Product title shown to buyers",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_product",
"outputSchema": null
},
{
"description": "Update the bot's WhatsApp display name on the given channel.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"name": {
"description": "New display name",
"minLength": 1,
"type": "string"
}
},
"required": [
"channelId",
"name"
],
"type": "object"
},
"name": "neuron_update_profile_name",
"outputSchema": null
},
{
"description": "Update the bot's WhatsApp profile picture from an image URL.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"imageUrl": {
"description": "URL of the image to set as profile picture",
"format": "uri",
"type": "string"
}
},
"required": [
"channelId",
"imageUrl"
],
"type": "object"
},
"name": "neuron_update_profile_picture",
"outputSchema": null
},
{
"description": "Update the bot's WhatsApp status/bio text.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"channelId": {
"description": "WhatsApp channel identifier (UUID)",
"type": "string"
},
"status": {
"description": "New status/bio text",
"minLength": 1,
"type": "string"
}
},
"required": [
"channelId",
"status"
],
"type": "object"
},
"name": "neuron_update_profile_status",
"outputSchema": null
},
{
"description": "Update the message content, media, or send time of a scheduled message. Only messages with status 'scheduled' can be updated.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"contactName": {
"description": "Updated display name for the recipient",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the scheduled message to update",
"type": "string"
},
"mediaUrl": {
"description": "New media URL to attach",
"type": "string"
},
"message": {
"description": "New message text content",
"type": "string"
},
"messageType": {
"description": "New message type: 'text', 'image', 'audio', 'video', or 'document'",
"type": "string"
},
"sendAt": {
"description": "New ISO 8601 date-time for scheduled delivery (must be in the future)",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_scheduled_message",
"outputSchema": null
},
{
"description": "Update an existing social media channel. Can update label, username, or refresh credentials.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"credentials": {
"description": "Updated session credentials as JSON string",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the social channel to update",
"type": "string"
},
"label": {
"description": "New display name for the channel",
"type": "string"
},
"username": {
"description": "Updated social media username",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_social_channel",
"outputSchema": null
},
{
"description": "Create or update the seller storefront (nestuge-style page). Handle is auto-generated from the display name if omitted.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"avatarUrl": {
"anyOf": [
{
"format": "uri",
"type": "string"
},
{
"type": "null"
}
]
},
"bio": {
"description": "Short store bio",
"type": [
"string",
"null"
]
},
"brandColor": {
"description": "Hex brand colour e.g. #188A56",
"type": [
"string",
"null"
]
},
"displayName": {
"description": "Store display name",
"type": "string"
},
"enabled": {
"description": "Whether the storefront is public",
"type": "boolean"
},
"handle": {
"description": "URL handle (a-z, 0-9, hyphens). Becomes /s/<handle>.",
"type": "string"
},
"socials": {
"additionalProperties": {
"type": "string"
},
"description": "Map of social links e.g. { instagram: 'https://...' }",
"type": "object"
}
},
"type": "object"
},
"name": "neuron_update_storefront",
"outputSchema": null
},
{
"description": "Update a scheduled task's instruction, schedule, timezone, enabled state, or config. Only provided fields change.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"config": {
"additionalProperties": false,
"description": "Safety / execution config for the task.",
"properties": {
"approvalPhone": {
"description": "Admin phone (international format) to send the approval prompt to.",
"type": "string"
},
"channelId": {
"description": "WhatsApp channel UUID to act on (defaults to the bot's primary).",
"type": "string"
},
"dryRun": {
"description": "Simulate the run without actually sending messages.",
"type": "boolean"
},
"maxActions": {
"description": "Hard cap on outbound actions per run (default 25).",
"type": "integer"
},
"noRepeatDays": {
"description": "Never re-message the same contact within this many days (default 14).",
"type": "integer"
},
"requiresApproval": {
"description": "Ask an admin on WhatsApp to approve before the task sends.",
"type": "boolean"
}
},
"type": "object"
},
"enabled": {
"type": "boolean"
},
"id": {
"description": "UUID of the task",
"type": "string"
},
"instruction": {
"type": "string"
},
"schedule": {
"additionalProperties": {},
"description": "Schedule payload matching scheduleKind. cron: { time: 'HH:MM', days?: number[] } (0=Sunday..6=Saturday; empty/omitted = every day). interval: { everyMinutes: number }. once: { runAt: ISO8601 string }. manual: {}.",
"type": "object"
},
"scheduleKind": {
"description": "cron = recurring at a clock time (slot); interval = every N minutes; once = a single future moment; manual = only runs on demand.",
"enum": [
"cron",
"interval",
"once",
"manual"
],
"type": "string"
},
"timezone": {
"type": "string"
},
"title": {
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_task",
"outputSchema": null
},
{
"description": "Modify an existing custom API tool's configuration, including its endpoint, authentication, or request template.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"authType": {
"description": "Updated authentication type",
"enum": [
"none",
"api_key",
"bearer",
"basic",
"oauth2"
],
"type": "string"
},
"config": {
"additionalProperties": false,
"description": "Updated tool configuration",
"properties": {
"asyncConfig": {
"additionalProperties": false,
"description": "Configuration for async submit-poll-download APIs",
"properties": {
"completedStatuses": {
"description": "Status values indicating completion",
"items": {
"type": "string"
},
"type": "array"
},
"failedStatuses": {
"description": "Status values indicating failure",
"items": {
"type": "string"
},
"type": "array"
},
"jobIdPath": {
"description": "Dot-notation path to extract job ID from initial response",
"type": "string"
},
"maxPollingMs": {
"description": "Maximum time to poll before timeout (default: 120000)",
"maximum": 300000,
"minimum": 5000,
"type": "number"
},
"pollingEndpoint": {
"description": "URL template with {{jobId}} placeholder for polling job status",
"type": "string"
},
"pollingIntervalMs": {
"description": "Milliseconds between poll requests (default: 2000)",
"maximum": 30000,
"minimum": 500,
"type": "number"
},
"resultPath": {
"description": "Dot-notation path to extract final result from completed response",
"type": "string"
},
"statusPath": {
"description": "Dot-notation path to status field in poll response",
"type": "string"
}
},
"type": "object"
},
"bodyTemplate": {
"description": "Updated Handlebars template for the request body",
"type": "string"
},
"endpoint": {
"description": "Updated target HTTP endpoint URL",
"type": "string"
},
"headers": {
"additionalProperties": {
"type": "string"
},
"description": "Updated HTTP headers as key-value pairs",
"type": "object"
},
"mcpServerUrl": {
"description": "Updated MCP server URL",
"type": "string"
},
"method": {
"description": "Updated HTTP method",
"enum": [
"GET",
"POST",
"PUT",
"PATCH",
"DELETE"
],
"type": "string"
},
"parametersSchema": {
"additionalProperties": {},
"description": "Updated JSON Schema for tool parameters",
"type": "object"
},
"webhookUrl": {
"description": "Updated webhook URL",
"type": "string"
}
},
"type": "object"
},
"description": {
"description": "Updated description of the tool's purpose",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the tool to update",
"type": "string"
},
"name": {
"description": "Updated human-readable name for the tool",
"type": "string"
},
"rateLimit": {
"description": "Updated maximum requests per minute",
"type": "number"
},
"timeoutMs": {
"description": "Updated request timeout in milliseconds",
"type": "number"
},
"type": {
"description": "Updated type of the tool integration",
"enum": [
"http_api",
"webhook",
"mcp"
],
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_tool",
"outputSchema": null
},
{
"description": "Modify an existing inbound webhook's configuration, such as its name, event type, or processing prompt.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"eventType": {
"description": "Updated event type this webhook handles",
"type": "string"
},
"id": {
"description": "Unique identifier (UUID) of the webhook to update",
"type": "string"
},
"isActive": {
"description": "Whether the webhook should be active and accepting requests",
"type": "boolean"
},
"name": {
"description": "Updated human-readable name of the webhook",
"type": "string"
},
"processingPrompt": {
"description": "Updated prompt instructions for processing webhook data",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_update_webhook",
"outputSchema": null
},
{
"description": "Update WhatsApp Business API credentials for the organization. These credentials are required for sending messages via the WhatsApp Cloud API.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"orgId": {
"description": "Unique identifier (UUID) of the organization",
"type": "string"
},
"whatsappAccessToken": {
"description": "WhatsApp access token for API authentication (keep confidential)",
"type": "string"
},
"whatsappBusinessAccountId": {
"description": "WhatsApp Business Account ID from the Meta Business dashboard",
"type": "string"
},
"whatsappPhoneNumberId": {
"description": "WhatsApp phone number ID from the Meta Business dashboard",
"type": "string"
}
},
"required": [
"orgId",
"whatsappPhoneNumberId",
"whatsappBusinessAccountId",
"whatsappAccessToken"
],
"type": "object"
},
"name": "neuron_update_whatsapp_credentials",
"outputSchema": null
},
{
"description": "Upload a text document to a knowledge base. The document will be automatically chunked and indexed for semantic search.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"content": {
"description": "Text content of the document to upload",
"type": "string"
},
"filename": {
"description": "Name of the file being uploaded",
"type": "string"
},
"folder": {
"description": "Folder path to organize the document within the knowledge base",
"type": "string"
},
"id": {
"description": "Unique identifier of the knowledge base",
"type": "string"
}
},
"required": [
"id",
"content",
"filename"
],
"type": "object"
},
"name": "neuron_upload_document",
"outputSchema": null
},
{
"description": "Upload a media file (image, video, audio, or document) by providing its base64-encoded content. Returns a URL for use in messages and broadcasts.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"base64": {
"description": "Base64-encoded file content (without data URI prefix)",
"type": "string"
},
"filename": {
"description": "Original filename including extension (e.g., 'photo.jpg', 'report.pdf')",
"type": "string"
},
"mimetype": {
"description": "MIME type of the file (e.g., 'image/jpeg', 'image/png', 'application/pdf', 'video/mp4')",
"type": "string"
}
},
"required": [
"base64",
"filename",
"mimetype"
],
"type": "object"
},
"name": "neuron_upload_media",
"outputSchema": null
},
{
"description": "Test whether the stored credentials for a social channel are still valid by making a test API call to the platform.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"id": {
"description": "Unique identifier (UUID) of the social channel to validate",
"type": "string"
}
},
"required": [
"id"
],
"type": "object"
},
"name": "neuron_validate_social_channel",
"outputSchema": null
},
{
"description": "Verify a Nigerian bank account number via Paystack to confirm the account holder name before saving.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"accountNumber": {
"description": "10-digit Nigerian bank account number to verify",
"type": "string"
},
"bankCode": {
"description": "Nigerian bank code (e.g., '058' for GTBank, '044' for Access Bank)",
"type": "string"
}
},
"required": [
"bankCode",
"accountNumber"
],
"type": "object"
},
"name": "neuron_verify_bank_account",
"outputSchema": null
},
{
"description": "Verify a wallet funding transaction using the Paystack payment reference to confirm the payment was successful.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"reference": {
"description": "Paystack payment reference returned from the checkout session",
"type": "string"
}
},
"required": [
"reference"
],
"type": "object"
},
"name": "neuron_verify_wallet_funding",
"outputSchema": null
},
{
"description": "Retrieve the current wallet balance for the organization, including available and pending amounts.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_wallet_balance",
"outputSchema": null
},
{
"description": "Retrieve the wallet transaction history for the organization, with optional filtering by transaction type.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"description": "Number of transactions per page (default: 20)",
"exclusiveMinimum": 0,
"type": "integer"
},
"page": {
"description": "Page number for pagination (default: 1)",
"exclusiveMinimum": 0,
"type": "integer"
},
"type": {
"description": "Filter by transaction type: 'credit' or 'debit'",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_wallet_transactions",
"outputSchema": null
},
{
"description": "See the launch/stop/open commands queued for the extension and their outcomes (pending|claimed|done|failed, plus the runId a launch created).",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"maximum": 200,
"minimum": 1,
"type": "integer"
}
},
"type": "object"
},
"name": "neuron_webagent_command_history",
"outputSchema": null
},
{
"description": "Fetch one run's status, config snapshot and latest live stats (captured/flushed/leads/reels/hops/scrolls). status is running|stopped|completed|killed|stale.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"runId": {
"description": "The agent-run id.",
"type": "string"
}
},
"required": [
"runId"
],
"type": "object"
},
"name": "neuron_webagent_get_run",
"outputSchema": null
},
{
"description": "The kill switch — flags a run to stop. It's cooperative: the browser extension stops on its next heartbeat (usually within ~12s) and finalizes the run.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"runId": {
"description": "The agent-run id to kill.",
"type": "string"
}
},
"required": [
"runId"
],
"type": "object"
},
"name": "neuron_webagent_kill",
"outputSchema": null
},
{
"description": "List browser-mission runs (live + recent). Stale runs (no heartbeat >2min) show as 'stale'. Note the result nests as data.data[].",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"limit": {
"maximum": 200,
"minimum": 1,
"type": "integer"
},
"page": {
"minimum": 1,
"type": "integer"
},
"status": {
"description": "Filter by status.",
"enum": [
"running",
"stopped",
"completed",
"killed",
"stale"
],
"type": "string"
}
},
"type": "object"
},
"name": "neuron_webagent_list_runs",
"outputSchema": null
},
{
"description": "Ask the extension to open its Web Agent panel so the user can review/adjust a mission before it runs. Delivered on the extension's next poll.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_webagent_open_launcher",
"outputSchema": null
},
{
"description": "Queue a browser mission for the user's Neuron extension to run — mine content into a Collection or prospects into the lead pool. Returns a command id; the extension picks it up on its next poll (so the browser must be open, signed in, and remote-control enabled in the extension). Watch it with neuron_webagent_list_runs / neuron_webagent_get_run and stop it with neuron_webagent_kill.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"caps": {
"additionalProperties": false,
"description": "Stop conditions.",
"properties": {
"maxDurationMin": {
"exclusiveMinimum": 0,
"type": "integer"
},
"maxScrolls": {
"exclusiveMinimum": 0,
"type": "integer"
},
"targetItems": {
"exclusiveMinimum": 0,
"type": "integer"
}
},
"type": "object"
},
"cinematic": {
"additionalProperties": false,
"description": "active posture: cinematic reel/video capture.",
"properties": {
"enabled": {
"type": "boolean"
},
"maxFrames": {
"maximum": 8,
"minimum": 2,
"type": "integer"
}
},
"required": [
"enabled"
],
"type": "object"
},
"collectionName": {
"description": "content mission: the Collection to fill (created if new).",
"type": "string"
},
"hop": {
"additionalProperties": false,
"description": "active posture: multi-hop navigation from seeds.",
"properties": {
"enabled": {
"type": "boolean"
},
"followBioLinks": {
"type": "boolean"
},
"maxHops": {
"type": "integer"
},
"maxPages": {
"type": "integer"
}
},
"required": [
"enabled"
],
"type": "object"
},
"leadTags": {
"description": "leads mission: tags to attach to captured leads.",
"items": {
"type": "string"
},
"type": "array"
},
"mission": {
"description": "content = capture posts into a Collection; leads = capture prospects into the lead pool.",
"enum": [
"content",
"leads"
],
"type": "string"
},
"pacing": {
"description": "Speed/rate (default normal).",
"enum": [
"gentle",
"normal",
"brisk"
],
"type": "string"
},
"platform": {
"description": "ig=Instagram, x=X/Twitter, tk=TikTok, li=LinkedIn, fb=Facebook.",
"enum": [
"ig",
"x",
"tk",
"li",
"fb"
],
"type": "string"
},
"posture": {
"description": "How much it interacts (default read-light; 'active' enables hop + cinematic).",
"enum": [
"read-only",
"read-light",
"active"
],
"type": "string"
},
"seeds": {
"description": "active posture: starting URLs (hashtag/search/profile pages) to crawl from.",
"items": {
"format": "uri",
"type": "string"
},
"type": "array"
},
"sink": {
"description": "Where output goes (defaults to match the mission).",
"enum": [
"collection",
"lead-pool"
],
"type": "string"
},
"url": {
"description": "Optional page to open the mission on (else the platform home / active tab).",
"format": "uri",
"type": "string"
}
},
"required": [
"mission",
"platform"
],
"type": "object"
},
"name": "neuron_webagent_run",
"outputSchema": null
},
{
"description": "Queue a graceful stop for the current mission (the extension finalizes it). For an immediate hard stop of a specific run, use neuron_webagent_kill.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"runId": {
"description": "Specific run to stop (else the active one).",
"type": "string"
}
},
"type": "object"
},
"name": "neuron_webagent_stop",
"outputSchema": null
},
{
"description": "Check which Neuron account is currently logged in, including user name, email, role, and organization.",
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "neuron_whoami",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:7e43809ab8a7257eacd89cb79790ce77660442ca1350ab9ded91b2cfb4ca77c4 | sha256sum