Serveur MCP

Wapiworld WhatsApp API

com.wapiworld/wapiworld
Entreprise et opérations Communication Public et accessible MCP 2025-11-25

Ce que fait ce MCP

Monitors tenant-scoped WhatsApp instances and webhooks and can send explicitly confirmed WhatsApp text messages.

get_instance
Get instance
Fetch safe operational details for one tenant-scoped Wapiworld WhatsApp instance. QR pairing codes, instance secrets, API keys, proxy addresses, organization ids, and arbitrary stored metadata are never returned.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['instanceId'], 'properties': {'instanceId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Wapiworld instance id: 24 lowercase hexadecimal characters'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'instance'], 'properties': {'status': {'enum': ['found', 'not-found'], 'type': 'string'}, 'instance': {'anyOf': [{'type': 'object', 'required': ['id', 'name', 'accountName', 'status', 'health', 'phone', 'projectId', 'creationTime', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'phone': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'health': {'enum': ['ready', 'pairing', 'starting', 'offline', 'unknown'], 'type': 'string'}, 'status': {'anyOf': [{'enum': ['starting', 'qrcode', 'ready', 'logged_out', 'not_connected', 'disconnected', 'offline', 'STARTING', 'QRCODE', 'READY'], 'type': 'string'}, {'type': 'null'}]}, 'projectId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'accountName': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'creationTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'lastEditTime': {'$ref': '#/properties/instance/anyOf/0/properties/creationTime'}}, 'additionalProperties': False}, {'type': 'null'}]}}, 'additionalProperties': False}
get_instance_status
Get instance status
Fetch the current safe connection health for one tenant-scoped Wapiworld instance without returning QR pairing codes or authentication data.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['instanceId'], 'properties': {'instanceId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Wapiworld instance id: 24 lowercase hexadecimal characters'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['found', 'instanceId', 'name', 'status', 'health'], 'properties': {'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'found': {'type': 'boolean'}, 'health': {'enum': ['ready', 'pairing', 'starting', 'offline', 'unknown'], 'type': 'string'}, 'status': {'anyOf': [{'enum': ['starting', 'qrcode', 'ready', 'logged_out', 'not_connected', 'disconnected', 'offline', 'STARTING', 'QRCODE', 'READY'], 'type': 'string'}, {'type': 'null'}]}, 'instanceId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}}, 'additionalProperties': False}
get_message_recording_policy
Get message recording policy
Inspect whether message-content persistence is enabled by default for one tenant-scoped Wapiworld instance and how long recorded rows are retained. This directory-safe diagnostic never reads message bodies, previews, sender names, contact identifiers, chat-level override keys, or WhatsApp message ids.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['instanceId'], 'properties': {'instanceId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$', 'description': 'Tenant-scoped Wapiworld instance id to inspect: 24 lowercase hexadecimal characters'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status', 'policy'], 'properties': {'policy': {'anyOf': [{'type': 'object', 'required': ['instanceId', 'projectId', 'enabled', 'decidedBy', 'lockedBy', 'retentionDays', 'chatOverridesExcluded'], 'properties': {'enabled': {'type': 'boolean'}, 'lockedBy': {'anyOf': [{'enum': ['project', 'instance'], 'type': 'string'}, {'type': 'null'}]}, 'decidedBy': {'enum': ['default', 'project', 'instance'], 'type': 'string'}, 'projectId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'instanceId': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'retentionDays': {'type': 'integer', 'maximum': 365, 'exclusiveMinimum': 0}, 'chatOverridesExcluded': {'type': 'boolean', 'const': True}}, 'additionalProperties': False}, {'type': 'null'}]}, 'status': {'enum': ['found', 'instance-not-found', 'project-not-found'], 'type': 'string'}}, 'additionalProperties': False}
list_instances
List instances
List a bounded page of tenant-scoped Wapiworld WhatsApp instances, optionally filtered by project. Results include operational status and phone metadata but never QR pairing codes, instance secrets, API keys, proxy data, or arbitrary stored fields.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum instances to return (default 25, maximum 100)', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'maxLength': 4096, 'description': 'Opaque pagination cursor returned by a previous call'}, 'projectId': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Filter to one project id'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['instances', 'page'], 'properties': {'page': {'type': 'object', 'required': ['count', 'hasMore', 'nextCursor'], 'properties': {'count': {'type': 'integer', 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'nextCursor': {'anyOf': [{'type': 'string', 'maxLength': 4096}, {'type': 'null'}]}}, 'additionalProperties': False}, 'instances': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'accountName', 'status', 'health', 'phone', 'projectId', 'creationTime', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'phone': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'health': {'enum': ['ready', 'pairing', 'starting', 'offline', 'unknown'], 'type': 'string'}, 'status': {'anyOf': [{'enum': ['starting', 'qrcode', 'ready', 'logged_out', 'not_connected', 'disconnected', 'offline', 'STARTING', 'QRCODE', 'READY'], 'type': 'string'}, {'type': 'null'}]}, 'projectId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'accountName': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'creationTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'lastEditTime': {'$ref': '#/properties/instances/items/properties/creationTime'}}, 'additionalProperties': False}, 'maxItems': 100}}, 'additionalProperties': False}
list_projects
List projects
List a bounded page of Wapiworld projects available to the authenticated organization. API-key sessions remain pinned to their single project. Internal organization ids and project configuration are omitted.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum projects to return (default 25, maximum 100)', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'maxLength': 4096, 'description': 'Opaque pagination cursor returned by a previous call'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['projects', 'page'], 'properties': {'page': {'type': 'object', 'required': ['count', 'total', 'hasMore', 'nextCursor'], 'properties': {'count': {'type': 'integer', 'minimum': 0}, 'total': {'type': 'integer', 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'nextCursor': {'anyOf': [{'type': 'string', 'maxLength': 4096}, {'type': 'null'}]}}, 'additionalProperties': False}, 'projects': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'creationTime', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'anyOf': [{'type': 'string', 'maxLength': 200}, {'type': 'null'}]}, 'creationTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'lastEditTime': {'$ref': '#/properties/projects/items/properties/creationTime'}}, 'additionalProperties': False}, 'maxItems': 100}}, 'additionalProperties': False}
list_webhook_subscriptions
List webhook subscriptions
List a bounded page of the organization’s Wapiworld webhook subscriptions with their subscribed events and delivery health, so a stopped webhook can be diagnosed. An endpoint that fails 20 deliveries in a row is disabled automatically. Requires an operator OAuth session; API-key sessions cannot read this route. The signing secret is never returned, and only the scheme and host of the delivery URL are shown because hook paths often embed a credential.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'limit': {'type': 'integer', 'maximum': 100, 'description': 'Maximum webhook subscriptions to return (default 25, maximum 100)', 'exclusiveMinimum': 0}, 'cursor': {'type': 'string', 'maxLength': 4096, 'description': 'Opaque pagination cursor returned by a previous call'}, 'projectId': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Filter to one project id'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['webhookSubscriptions', 'page'], 'properties': {'page': {'type': 'object', 'required': ['count', 'hasMore', 'nextCursor'], 'properties': {'count': {'type': 'integer', 'minimum': 0}, 'hasMore': {'type': 'boolean'}, 'nextCursor': {'anyOf': [{'type': 'string', 'maxLength': 4096}, {'type': 'null'}]}}, 'additionalProperties': False}, 'webhookSubscriptions': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'projectId', 'endpointHost', 'events', 'active', 'consecutiveFailures', 'autoDisabled', 'lastDeliveryTime', 'creationTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'active': {'type': 'boolean'}, 'events': {'type': 'array', 'items': {'type': 'string', 'maxLength': 64}, 'maxItems': 20}, 'projectId': {'anyOf': [{'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, {'type': 'null'}]}, 'autoDisabled': {'type': 'boolean'}, 'creationTime': {'$ref': '#/properties/webhookSubscriptions/items/properties/lastDeliveryTime'}, 'endpointHost': {'anyOf': [{'type': 'string', 'maxLength': 300}, {'type': 'null'}]}, 'lastDeliveryTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'consecutiveFailures': {'type': 'integer', 'minimum': 0}}, 'additionalProperties': False}, 'maxItems': 100}}, 'additionalProperties': False}
send_message
Send WhatsApp message
Send one real external WhatsApp text message through a tenant-scoped Wapiworld instance. This destructive, open-world action is non-idempotent: show the exact sender instance, recipient and complete text, obtain explicit confirmation for one send, call once, and never retry automatically when the outcome is uncertain. Do not include restricted data. Existing Wapiworld recording settings may persist outbound content.
Destructif Accès externe
Schéma d’entrée
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['instanceId', 'chatId', 'content'], 'properties': {'chatId': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Exact recipient phone number in international format (for example +1234567890) or exact WhatsApp chat id. Show it to the user before requesting confirmation.'}, 'content': {'type': 'string', 'maxLength': 4096, 'minLength': 1, 'description': 'Exact text message to send, maximum 4096 characters. Show the complete text before confirmation. Do not send credentials, PHI, PCI cardholder data, government identifiers, or other restricted data.'}, 'instanceId': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'The tenant-scoped Wapiworld instance id to send from'}}, 'additionalProperties': False}
Schéma de sortie
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['status'], 'properties': {'status': {'type': 'string', 'const': 'accepted'}}, 'additionalProperties': False}
show_project_overview
Show Wapiworld project overview
Render a bounded operational overview for one tenant-scoped Wapiworld project, including WhatsApp instance health and safe phone metadata. QR pairing codes, instance credentials, API keys, proxy data, and arbitrary stored fields are excluded.
Lecture seule Idempotent
Schéma d’entrée
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['projectId'], 'properties': {'projectId': {'type': 'string', 'maxLength': 128, 'minLength': 1, 'description': 'Wapiworld project id to summarize'}}}
Schéma de sortie
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['project', 'instanceCount', 'instanceCountIsLowerBound', 'statusCounts', 'statusCountsAreLowerBounds', 'instances'], 'properties': {'project': {'anyOf': [{'type': 'object', 'required': ['id', 'name'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}}, 'additionalProperties': False}, {'type': 'null'}]}, 'instances': {'type': 'array', 'items': {'type': 'object', 'required': ['id', 'name', 'status', 'health', 'phone', 'lastEditTime'], 'properties': {'id': {'type': 'string', 'pattern': '^[0-9a-f]{24}$'}, 'name': {'type': 'string', 'maxLength': 200}, 'phone': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}, 'health': {'enum': ['ready', 'pairing', 'starting', 'offline', 'unknown'], 'type': 'string'}, 'status': {'anyOf': [{'enum': ['starting', 'qrcode', 'ready', 'logged_out', 'not_connected', 'disconnected', 'offline', 'STARTING', 'QRCODE', 'READY'], 'type': 'string'}, {'type': 'null'}]}, 'lastEditTime': {'anyOf': [{'type': 'string', 'maxLength': 32}, {'type': 'null'}]}}, 'additionalProperties': False}, 'maxItems': 20}, 'statusCounts': {'type': 'object', 'required': ['ready', 'pairing', 'starting', 'offline', 'unknown'], 'properties': {'ready': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'offline': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'pairing': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'unknown': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'starting': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}}, 'additionalProperties': False}, 'instanceCount': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'instanceCountIsLowerBound': {'type': 'boolean'}, 'statusCountsAreLowerBounds': {'type': 'boolean'}}, 'additionalProperties': False}
Ajouté
show_project_overview
21 September 2026 02:49
Ajouté
send_message
21 September 2026 02:49
Ajouté
list_webhook_subscriptions
21 September 2026 02:49
Ajouté
get_message_recording_policy
21 September 2026 02:49
Ajouté
get_instance_status
21 September 2026 02:49
Ajouté
get_instance
21 September 2026 02:49
Ajouté
list_instances
21 September 2026 02:49
Ajouté
list_projects
21 September 2026 02:49