{
    "tools": [
        {
            "name": "list_api_methods",
            "description": "Lists available Telerivet API methods with name, description, and parameter summary. Use 'category' to filter by execution tool.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "category": {
                        "type": "string",
                        "enum": [
                            "read_api",
                            "modify_api",
                            "delete_api",
                            "send_api"
                        ],
                        "description": "Filter by execution tool category"
                    }
                }
            },
            "annotations": {
                "title": "List API Methods",
                "readOnlyHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "get_method_schema",
            "description": "Returns full parameter schema and response field descriptions for a specific Telerivet API method. For service config methods (Project_createService, Service_setConfig, Service_getConfig), also returns a service_types summary. Pass service_type to get detailed config_schema, actions_schema, or script_definition for that type. Set include_variables to true to get available template variables and filters for methods that support [[variable]] syntax.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "method_name": {
                        "type": "string",
                        "description": "Method name (e.g. Project_queryContacts)"
                    },
                    "service_type": {
                        "type": "string",
                        "description": "Optional service type to get detailed config schema (only for Project_createService, Service_setConfig, Service_getConfig)"
                    },
                    "include_variables": {
                        "type": "boolean",
                        "description": "Set to true to include available template variables and filters in the response (for methods that support [[variable]] syntax)"
                    }
                },
                "required": [
                    "method_name"
                ]
            },
            "annotations": {
                "title": "Get API Method Details",
                "readOnlyHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "get_web_app_urls",
            "description": "Returns information about Telerivet web app functionality and URL patterns for generating links to various Telerivet features including sending messages, managing contacts, scheduling, templates, viewing live data and statistics, managing user permissions, and more. Allows linking to functionality that is not available via the API.",
            "inputSchema": {
                "type": "object"
            },
            "annotations": {
                "title": "Get Web App Details",
                "readOnlyHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "read_api",
            "description": "Executes a read-only API method to retrieve data from Telerivet. Safe, no side effects.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "method_name": {
                        "type": "string",
                        "description": "Method name (use list_api_methods or get_method_schema for more information about available methods)",
                        "enum": [
                            "API_getOrganizationById",
                            "API_getProjectById",
                            "API_queryOrganizations",
                            "API_queryProjects",
                            "Contact_queryDataRows",
                            "Contact_queryGroups",
                            "Contact_queryMessages",
                            "Contact_queryScheduledMessages",
                            "Contact_queryServiceStates",
                            "DataTable_countRowsByValue",
                            "DataTable_getFields",
                            "DataTable_getRowById",
                            "DataTable_queryRows",
                            "Group_queryContacts",
                            "Group_queryScheduledMessages",
                            "Label_queryMessages",
                            "Organization_getAvailablePlans",
                            "Organization_getBillingDetails",
                            "Organization_getMessageStats",
                            "Organization_getUsage",
                            "Organization_queryProjects",
                            "Phone_queryMessages",
                            "Project_getAirtimeTransactionById",
                            "Project_getBroadcastById",
                            "Project_getCampaignById",
                            "Project_getContactById",
                            "Project_getContactFields",
                            "Project_getDataTableById",
                            "Project_getGroupById",
                            "Project_getLabelById",
                            "Project_getMessageById",
                            "Project_getMessageFields",
                            "Project_getMessageStats",
                            "Project_getMessageTemplateById",
                            "Project_getPhoneById",
                            "Project_getRelativeScheduledMessageById",
                            "Project_getRouteById",
                            "Project_getRouteList",
                            "Project_getScheduledMessageById",
                            "Project_getScheduledServiceById",
                            "Project_getServiceById",
                            "Project_getTaskById",
                            "Project_getUsers",
                            "Project_getWebhookById",
                            "Project_queryAirtimeTransactions",
                            "Project_queryBroadcasts",
                            "Project_queryCampaigns",
                            "Project_queryContacts",
                            "Project_queryDataTables",
                            "Project_queryGroups",
                            "Project_queryLabels",
                            "Project_queryMessageTemplates",
                            "Project_queryMessages",
                            "Project_queryPhones",
                            "Project_queryRelativeScheduledMessages",
                            "Project_queryRoutes",
                            "Project_queryScheduledMessages",
                            "Project_queryScheduledServices",
                            "Project_queryServiceLogs",
                            "Project_queryServices",
                            "Project_queryTasks",
                            "Project_queryWebhooks",
                            "Service_getConfig",
                            "Service_getContactState",
                            "Service_queryContactStates"
                        ]
                    },
                    "arguments": {
                        "type": "object",
                        "description": "Method arguments (use get_method_schema for parameter details)."
                    }
                },
                "required": [
                    "method_name",
                    "arguments"
                ],
                "additionalProperties": false
            },
            "annotations": {
                "title": "Read Telerivet Data",
                "readOnlyHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "modify_api",
            "description": "Executes an API method that creates or updates data in Telerivet.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "method_name": {
                        "type": "string",
                        "description": "Method name (use list_api_methods or get_method_schema for more information about available methods)",
                        "enum": [
                            "Broadcast_cancel",
                            "Campaign_save",
                            "Campaign_unschedule",
                            "ContactServiceState_save",
                            "Contact_addToGroup",
                            "Contact_save",
                            "DataRow_save",
                            "DataTable_createRow",
                            "DataTable_save",
                            "DataTable_setFieldMetadata",
                            "Group_save",
                            "Label_save",
                            "MessageTemplate_save",
                            "Message_addLabel",
                            "Message_cancel",
                            "Message_save",
                            "Organization_createProject",
                            "Organization_save",
                            "Phone_save",
                            "Project_createCampaign",
                            "Project_createMessageTemplate",
                            "Project_createPhone",
                            "Project_createRelativeScheduledMessage",
                            "Project_createRoute",
                            "Project_createService",
                            "Project_createTask",
                            "Project_createWebhook",
                            "Project_getOrCreateContact",
                            "Project_getOrCreateDataTable",
                            "Project_getOrCreateGroup",
                            "Project_getOrCreateLabel",
                            "Project_importContacts",
                            "Project_receiveMessage",
                            "Project_save",
                            "Project_setContactFieldMetadata",
                            "Project_setMessageFieldMetadata",
                            "RelativeScheduledMessage_save",
                            "Route_save",
                            "ScheduledMessage_save",
                            "ScheduledService_save",
                            "Service_save",
                            "Service_setConfig",
                            "Service_setContactState",
                            "Task_cancel",
                            "Webhook_save"
                        ]
                    },
                    "arguments": {
                        "type": "object",
                        "description": "Method arguments (use get_method_schema for parameter details)."
                    }
                },
                "required": [
                    "method_name",
                    "arguments"
                ],
                "additionalProperties": false
            },
            "annotations": {
                "title": "Update Telerivet",
                "readOnlyHint": false,
                "destructiveHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "delete_api",
            "description": "Executes an API method that deletes data from Telerivet.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "method_name": {
                        "type": "string",
                        "description": "Method name (use list_api_methods or get_method_schema for more information about available methods)",
                        "enum": [
                            "Campaign_delete",
                            "ContactServiceState_reset",
                            "Contact_delete",
                            "Contact_removeFromGroup",
                            "DataRow_delete",
                            "DataTable_delete",
                            "Group_delete",
                            "Label_delete",
                            "MessageTemplate_delete",
                            "Message_delete",
                            "Message_removeLabel",
                            "RelativeScheduledMessage_delete",
                            "ScheduledMessage_delete",
                            "ScheduledService_delete",
                            "Service_delete",
                            "Service_resetContactState",
                            "Webhook_delete"
                        ]
                    },
                    "arguments": {
                        "type": "object",
                        "description": "Method arguments (use get_method_schema for parameter details)."
                    }
                },
                "required": [
                    "method_name",
                    "arguments"
                ],
                "additionalProperties": false
            },
            "annotations": {
                "title": "Delete Telerivet Data",
                "readOnlyHint": false,
                "destructiveHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "send_api",
            "description": "Executes an API method that sends or schedules messages or invokes automated services via Telerivet. Has external side effects (sends text messages, makes calls, etc.).",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "method_name": {
                        "type": "string",
                        "description": "Method name (use list_api_methods or get_method_schema for more information about available methods)",
                        "enum": [
                            "Campaign_send",
                            "Message_resend",
                            "Message_sendReadReceipt",
                            "Message_sendTypingIndicator",
                            "Project_scheduleMessage",
                            "Project_scheduleService",
                            "Project_sendBroadcast",
                            "Project_sendMessage",
                            "Project_sendMulti",
                            "Service_invoke"
                        ]
                    },
                    "arguments": {
                        "type": "object",
                        "description": "Method arguments (use get_method_schema for parameter details)."
                    }
                },
                "required": [
                    "method_name",
                    "arguments"
                ],
                "additionalProperties": false
            },
            "annotations": {
                "title": "Send via Telerivet",
                "readOnlyHint": false,
                "destructiveHint": false,
                "openWorldHint": true
            }
        },
        {
            "name": "draft_message",
            "description": "Draft a message for review before sending. Shows an interactive preview where the user can edit and confirm the message.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "to_numbers": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "List of phone numbers to send to"
                    },
                    "group_id": {
                        "type": "string",
                        "description": "ID of a contact group to send to"
                    },
                    "group_name": {
                        "type": "string",
                        "description": "Name of the contact group corresponding to group_id (displayed to user)"
                    },
                    "group_num_members": {
                        "type": "integer",
                        "description": "Number of members in the contact group corresponding to group_id (displayed to user)"
                    },
                    "content": {
                        "type": "string",
                        "description": "Message content"
                    },
                    "route_id": {
                        "type": "string",
                        "description": "Route ID to send from (optional)"
                    },
                    "project_id": {
                        "type": "string",
                        "description": "Project ID"
                    },
                    "draft_id": {
                        "type": "string",
                        "description": "Unique random identifier for this draft (used to prevent duplicate sends). The client must generate a unique ID each time this tool is called, e.g. by including the current timestamp."
                    }
                },
                "required": [
                    "content",
                    "project_id",
                    "draft_id"
                ]
            },
            "_meta": {
                "ui": {
                    "resourceUri": "ui://telerivet/draft_message"
                }
            },
            "annotations": {
                "title": "Draft Message",
                "readOnlyHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "get_route_options",
            "description": "Returns information about available messaging route/channel options to help choose the right provider and channel type for a project, or to get information about an existing route. Includes geographic availability, use cases, compliance requirements, registration process, billing modes (internal/Telerivet-managed vs external/BYOC), setup timelines, and per-message pricing. Use 'country' to filter by geographic availability and include pricing. Use 'phone_type' to get full details for a specific route type (matches the phone_type property of a phone/basic route in the API).",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "country": {
                        "type": "string",
                        "description": "ISO 2-letter country code to filter by geographic availability and include pricing (e.g. US, GB, KE)"
                    },
                    "channel_type": {
                        "type": "string",
                        "enum": [
                            "sms",
                            "mms",
                            "voice",
                            "whatsapp",
                            "viber",
                            "rcs",
                            "ussd",
                            "chat"
                        ],
                        "description": "Filter by channel/message type"
                    },
                    "use_case": {
                        "type": "string",
                        "enum": [
                            "marketing",
                            "otp",
                            "notifications",
                            "customer_support"
                        ],
                        "description": "Filter by intended use case"
                    },
                    "phone_type": {
                        "type": "string",
                        "description": "Get detailed information about a specific route type by its phone_type identifier (same as the phone_type property on a phone/basic route)"
                    }
                }
            },
            "annotations": {
                "title": "Get Route Options",
                "readOnlyHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "skillbook_search",
            "description": "Search Telerivet's Skillbook for solution patterns, services, campaign types, platform features, and message templates matching an intent or use case. The Skillbook describes what can be built on Telerivet and how to set it up. Call this before recommending Cloud Script or custom code \u2014 native services and solution patterns cover most use cases. Use skillbook_get for full details on any result.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "intent_tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Intent tags to match. Primary discovery surface. Categories: acquisition (opt-in, opt-out, referral, subscriber-growth), engagement (contest, winner-selection, drip-marketing, alerting), data-and-identity (data-collection, crm-enrichment, otp-auth, password-reset), commerce-and-loyalty (points-management, promo-codes, reference-ids), feedback-and-intelligence (feedback-collection, poll), connectivity-and-integration (rest-api, webhook, cloud-script, mcp-integration, single-api-gateway, event-driven)"
                    },
                    "industry_tags": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        },
                        "description": "Industry tags to filter results. Values: retail, healthcare, education, fintech, government, events, telecom, ngo, logistics, hospitality, gaming, agriculture, market-research, agribusiness, fmcg, aggregator, ride-sharing, bpo, veterinary, pharmaceuticals, real-estate, insurance, entertainment, wellness, grocery"
                    },
                    "keywords": {
                        "type": "string",
                        "description": "Free-text search across names, taglines, and descriptions"
                    },
                    "entity_types": {
                        "type": "array",
                        "items": {
                            "type": "string",
                            "enum": [
                                "solution",
                                "service",
                                "campaignPattern",
                                "messageTemplate",
                                "platformFeature"
                            ]
                        },
                        "description": "Filter by entity type (default: all types)"
                    },
                    "solution_group": {
                        "type": "string",
                        "enum": [
                            "outreach-and-alerts",
                            "acquisition-and-enrollment",
                            "loyalty-and-rewards",
                            "data-collection",
                            "conversations-and-support",
                            "developer-and-infrastructure"
                        ],
                        "description": "Filter solutions by group"
                    }
                }
            },
            "annotations": {
                "title": "Search Skillbook",
                "readOnlyHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "skillbook_get",
            "description": "Get the full details for a specific Skillbook entity \u2014 including composition, dependencies, onboarding steps, and API surface guidance for MCP execution. Use the entity_type and slug from skillbook_search results.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "entity_type": {
                        "type": "string",
                        "enum": [
                            "solution",
                            "service",
                            "campaignPattern",
                            "messageTemplate",
                            "platformFeature"
                        ],
                        "description": "Entity type"
                    },
                    "slug": {
                        "type": "string",
                        "description": "Slug identifier (from skillbook_search results)"
                    }
                },
                "required": [
                    "entity_type",
                    "slug"
                ]
            },
            "annotations": {
                "title": "Get Skillbook Entry",
                "readOnlyHint": true,
                "openWorldHint": false
            }
        },
        {
            "name": "search_documentation",
            "description": "Search Telerivet documentation across multiple sources: User Guide help articles, legal/policy pages, developer API documentation (including integrations, OAuth, MCP, Rules Engine, Webhook API, REST API and Cloud Script API \u2014 however, the per-method API reference is NOT here; use get_method_schema for that), and marketing/company content on www.telerivet.com (including product overviews, solution verticals, and customer case studies). Returns matching documents with title, URL, source type, a short snippet highlighted around the query terms, and an id that can be passed to get_documentation. The response also includes total (total hits in the index) and has_more (true when total > per_page) \u2014 if has_more is true and the first page doesn't contain a clearly relevant result, refine the query with more specific terms, narrow with the source filter, or raise per_page (max 25). Use this for procedural questions, troubleshooting, feature documentation, policy questions, developer API questions, and company questions.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "query": {
                        "type": "string",
                        "description": "Free-text search query"
                    },
                    "per_page": {
                        "type": "integer",
                        "description": "Max number of results to return (1-25, default 10). If has_more is true in the response, raising per_page or refining the query will surface more matches.",
                        "minimum": 1,
                        "maximum": 25
                    },
                    "source": {
                        "type": "string",
                        "description": "Optional filter: 'user_guide' for help articles, 'legal' for legal/policy pages, 'api_docs' for developer/API documentation, 'marketing' for company/product/case-study pages on www.telerivet.com. Omit to search everything.",
                        "enum": [
                            "user_guide",
                            "legal",
                            "api_docs",
                            "marketing"
                        ]
                    }
                },
                "required": [
                    "query"
                ]
            },
            "annotations": {
                "title": "Search Documentation",
                "readOnlyHint": true,
                "openWorldHint": true
            }
        },
        {
            "name": "get_documentation",
            "description": "Retrieve the full text of a specific documentation entry by its id (obtained from search_documentation results \u2014 ids look like 'user_guide:360038959391' or 'legal:terms'). Returns title, URL, source, and the body as plain text. Some user-guide articles have screenshots included as Markdown-formatted images.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "id": {
                        "type": "string",
                        "description": "Document id from search_documentation results"
                    }
                },
                "required": [
                    "id"
                ]
            },
            "annotations": {
                "title": "Get Documentation",
                "readOnlyHint": true,
                "openWorldHint": true
            }
        }
    ]
}