{
    "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 Telerivet 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 Telerivet 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 Telerivet 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_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"
                ]
            },
            "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"
                ]
            },
            "annotations": {
                "title": "Update Telerivet",
                "readOnlyHint": false,
                "destructiveHint": false,
                "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"
                ]
            },
            "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"
                ]
            },
            "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, API surface guidance for MCP execution, match signals, and more. 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
            }
        }
    ]
}