Skip to main content
Glama

Server Details

Manage WhatsApp Business accounts on 360Dialog: channels, templates, sandbox, inbox, and more.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

B3.4/5.0

Scored across 116 tools

Disambiguation3/5

Most tools have distinct scoped purposes and the prefixes (getchat_, sandbox_, mba_) help separate product areas. However, the set spans many overlapping surfaces, especially messaging (getchat_send_message, mba_send_message, sandbox_send_message) and agent analytics (usage, event, conversation, and tool-call insights), so agents must rely heavily on descriptions to avoid misselection.

Naming Consistency4/5

All tool names use snake_case and generally follow a predictable verb_noun or domain_verb_noun pattern. The mixed use of mba_, getchat_, sandbox_, and unprefixed generic tools is a minor inconsistency but remains readable and coherent.

Tool Count1/5

116 tools is far beyond a reasonable scope for a single MCP server and spans templates, billing, onboarding, inbox management, Meta Business Agent configuration, analytics, docs, skills, and sandbox operations. Even though the domain is broad, this is an extreme tool-count mismatch.

Completeness4/5

The surface is very comprehensive across templates, channels, webhooks, onboarding, billing, users, inbox operations, agent knowledge/connectors, analytics, and sandbox workflows. Some gaps remain, such as template update operations and a general message-send surface outside the inbox/agent/sandbox contexts, but core workflows are covered.

Available Tools

36 tools
check_number_eligibilityCheck number eligibilityA
Read-only
Inspect

Check whether a phone number can be onboarded for this client before handing over the onboarding link.

This tool only checks 360Dialog's own database and this client's channel quota. It does not ask WhatsApp/Meta anything, so a number already active on WhatsApp elsewhere (including the personal app) can still come back eligible here.

Inputs: phone_number (required), check_coex. Returns: checks, checked, message, eligible, +2 more

create_templateCreate templateA
Destructive
Inspect

Use this tool to create a WhatsApp message template.

For this tool's 'template_json' property, pass a JSON matching this shape:

{ "name": string, "language": string, "category": "MARKETING" | "AUTHENTICATION" | "UTILITY", "components": Component[], }

General rules:

  • name must be lowercase snake_case.

  • category must be uppercase.

  • language must be a WhatsApp locale code such as "en_US", "tr", "es", "pt_BR".

  • Only include fields supported by the component variant.

  • Do not include null fields.

  • Components should normally be ordered as:

    1. header, if any

    2. body

    3. footer, if any

    4. buttons, if any

  • A template can have at most one header, one body, one footer, and one buttons component.

  • BODY is required unless the user is clearly creating a special authentication template handled elsewhere.

  • HEADER and FOOTER are optional.

  • BUTTONS are optional.

Component variants:

  1. Text header without variables

{ "type": "HEADER", "format": "text", "text": "Your order update" }

Use this when the header is plain text.

  1. Text header with variables

{ "type": "HEADER", "format": "TEXT", "text": "Hi {{1}}", "example": { "header_text": ["Alice"] } }

Rules:

  • Text header supports template variables.

  • If text contains variables, include example.header_text.

  • The example array must contain sample values in the same order as the variables appear.

  • For named parameters, the placeholder names appear in text, but the examples are still values.

  1. Image header

{ "type": "HEADER", "format": "IMAGE", "example": { "header_handle": ["https://example.com/sample-image.jpg"] } }

Use this when the template header should contain an image. The example should be a sample image handle or URL when available.

  1. Video header

{ "type": "HEADER", "format": "VIDEO", "example": { "header_handle": ["https://example.com/sample-video.mp4"] } }

Use this when the template header should contain a video. The example should be a sample video handle or URL when available.

  1. Document header

{ "type": "HEADER", "format": "DOCUMENT", "example": { "header_handle": ["https://example.com/sample-document.pdf"] } }

Use this when the template header should contain a document. The example should be a sample document handle or URL when available.

  1. Location header

{ "type": "HEADER", "format": "LOCATION" }

Use this when the template should display a location/map header.

Important:

  • For template creation, LOCATION is only the header format.

  • Do not put latitude, longitude, address, or name in the template creation component.

  • The actual location values are supplied later when sending the approved template, not when creating the template.

  1. Body without variables

{ "type": "BODY", "text": "Your order has shipped and is on the way." }

Use this for the main message text.

  1. Body with variables

{ "type": "BODY", "text": "Hi {{1}}, your order {{2}} has shipped.", "example": { "body_text": [ ["Alice", "ORD-12345"] ] } }

Rules:

  • If body text contains variables, include example.body_text.

  • body_text is an array containing one array of sample values.

  • The inner array values must match the variables in order of appearance.

  • Use placeholders like {{1}}, {{2}}.

  1. Footer

{ "type": "FOOTER", "text": "Reply STOP to unsubscribe." }

Rules:

  • Footer is plain text only.

  • Do not use variables in footer text.

  1. Buttons wrapper

{ "type": "BUTTONS", "buttons": [ Button ] }

Rules:

  • Buttons must be inside a single component whose type is "BUTTONS".

  • Do not place button objects directly in components.

  • Button text should be short and action-oriented.

Button variants:

A. Quick reply button

{ "type": "QUICK_REPLY", "text": "Confirm" }

Use when the user should tap a predefined reply.

B. Phone number button

{ "type": "PHONE_NUMBER", "text": "Call us", "phone_number": "+15551234567" }

Use when the user should call a business phone number. phone_number must include country code.

C. Static URL button

{ "type": "URL", "text": "View order", "url": "https://example.com/orders" }

Use when the button always opens the same URL.

D. Dynamic URL button

{ "type": "URL", "text": "View order", "url": "https://example.com/orders/{{1}}", "example": ["ORD-12345"] }

Rules:

  • Use this when the final URL path or query contains a variable.

  • The example array contains the sample value for the dynamic URL part.

E. Copy code button

{ "type": "COPY_CODE", "example": "SAVE20" }

Use for coupon or promo-code templates. The button copies the provided code when the template is sent.

G. OTP button

{ "type": "OTP", "otp_type": "COPY_CODE", "text": "Copy code" }

For one-tap OTP:

{ "type": "OTP", "otp_type": "ONE_TAP", "text": "Copy code", "autofill_text": "Autofill", "package_name": "com.example.app", "signature_hash": "abc123" }

Rules:

  • Use OTP buttons only for authentication templates - category should be "AUTHENTICATION". Authentication templates can only be created for WABAs that have a 2,000 messaging limit or above.

  • Do not use marketing or utility wording in authentication templates.

Examples:

Utility order update with named parameters:

{ "name": "order_shipped_update", "language": "en_US", "category": "UTILITY", "components": [ { "type": "HEADER", "format": "TEXT", "text": "Order {{1}} update", "example": { "header_text": [["ORD-12345"]] } }, { "type": "BODY", "text": "Hi {{1}}, your order has shipped and should arrive by {{2}}.", "example": { "body_text": [ ["Alice", "Friday"] ] } }, { "type": "FOOTER", "text": "Thank you for shopping with us." }, { "type": "BUTTONS", "buttons": [ { "type": "URL", "text": "Track order", "url": "https://example.com/orders/{{1}}", "example": ["ORD-12345"] } ] } ] }

Utility store location template:

{ "name": "store_location_info", "language": "en_US", "category": "UTILITY", "components": [ { "type": "HEADER", "format": "location" }, { "type": "BODY", "text": "Hi {{1}}, here is the location of our {{2}} store.", "example": { "body_text": [ ["Alice", "Downtown"] ] } } ] }

Inputs: template_json (required), waba_account_id (required). Returns: created, example, message, template

delete_templateDelete templateC
Destructive
Inspect

Delete a WhatsApp message template by its internal template ID.

Inputs: template_id (required), waba_account_id (required). Returns: deleted, message, template_id

get_balanceGet balanceC
Read-only
Inspect

Get balance for an account.

Inputs: with_usage. Returns: found, balance, with_usage

get_channel_profileGet channel profileB
Read-only
Inspect

Get a channel's (a.k.a. phone number) WhatsApp profile.

Inputs: channel_id (required), project_id (required). Returns: found, message, profile

get_client_documentation_pageGet client documentation pageA
Read-only
Inspect

Get a documentation page from the 360Dialog client documentation at https://docs.360dialog.com/docs. Fetch the full markdown content of a specific documentation page from Client Documentation. Use this when you have a page URL and want to read its content. Accepts full URLs (e.g. https://docs.360dialog.com/docs/getting-started). Since searchDocumentation returns partial content, use getPage to retrieve the complete page when you need more details. The content includes links you can follow to navigate to related pages.

Inputs: url (required).

get_company_detailsGet company detailsB
Read-only
Inspect

Get the user's company's details from 360Dialog.

Inputs: no named parameters. Returns: client

get_invoicesGet invoicesB
Read-only
Inspect

Get invoices for an account.

Inputs: no named parameters. Returns: found, message, audience, invoices

get_onboarding_statusGet onboarding statusB
Read-only
Inspect

Get a phone number's status on whether a number is live, what type of messages it can send today, and suggestions for what's next.

A live number can send free-form replies inside the 24-hour customer service window immediately (meaning if someone messages the number, the user can respond to the message using the API). Template messages are separately blocked until Meta reviews a submitted template (template reviews take up to 48 hours.)

Lack of business verification is not a blocker. Unverified businesses can only send 250 templates to unique users per 24 hours.

Inputs: channel_id (required), phone_number. Returns: live, found, message, next_step, +6 more

get_selfGet current userA
Read-only
Inspect

Get currently logged in user's information in 360Dialog. You will get:

  • user's name,

  • user's email address,

  • partner name,

  • user's permissions in 360Dialog Hub,

  • user's roles

Inputs: no named parameters. Returns: ok, message, profile, audience

get_skillGet skillA
Read-only
Inspect

Get the full guide for one skill returned by 'list_skills', as markdown.

Inputs: name (required). Returns: found, skill

get_template_json_exampleGet template JSON exampleA
Read-only
Inspect

Sending messaging templates in WhatsApp API / 360Dialog API requires a JSON body in the API request.

The API request can be hard to form, as the body must declare in JSON what each parameter in the JSON should be filled as.

This tool creates a valid example JSON body that the user can later modify before sending the template to WhatsApp users.

It is recommended that you use this tool after creating a template, or after the user asks how to send a template. Display the JSON result of this tool.

Inputs: template_id (required), waba_account_id (required). Returns: example, message, template_id, template_name

get_webhookGet webhookA
Read-only
Inspect

Get a channel's (a.k.a. phone number's) webhook URL, and check if the optional webhook headers are set.

Webhook headers are optional. They can be set using the 'set_webhook' tool, which also sets the webhook URL. When webhook headers are set, 360Dialog will send webhooks to the channel's webhook URL and add the specified headers.

This helps only authenticated requests pass through app firewalls, if the user has any.

Example:

If webhook URL is https://foo.com/webhook, and webhook headers are set to {"x-360dialog-webhook-security": "RANDOM-STRING"}, the webhook URL will receive POST requests like this:

POST https://foo.com/webhook HEADERS x-360dialog-webhook-security: RANDOM-STRING

Inputs: channel_id (required). Returns: message, webhook, configured, masked_headers

list_channelsList channelsB
Read-only
Inspect

Find a channel by passing in an identifier.

A channel is a phone number. By calling this tool you retrieve information about the phone number/channel in 360Dialog.

Results are paginated; use the 'page' and 'size' arguments to page through results if there are more than fit in a single page.

Returns: If not found, returns "Not found". If found, returns information of channels, like WABA ID, client ID, channel ID, and app ID, along with the current page, total pages, and total count.

Inputs: page, size, filter. Returns: page, found, message, channels, +2 more

list_skillsList skillsA
Read-only
Inspect

List the 360Dialog skills available to you.

A skill is a curated, up-to-date how-to guide for a 360Dialog process (e.g. drafting a compliant WhatsApp template, diagnosing a channel that stopped sending). Call this tool BEFORE answering any "how do I..." question about 360Dialog products or processes - it tells you which skills exist and when to use them. Once you find a match, call 'get_skill' with its 'name' to read the full guide.

Inputs: no named parameters. Returns: skills

list_templatesList templatesA
Read-only
Inspect

List templates for a WABA (WhatsApp Business Account). If you do not have a waba_account_id ending in 'WA' (case-insensitive), run the 'list_channels' tool first.

Inputs: waba_account_id (required), name_filter, status_filter. Returns: found, message, templates

list_usersList usersB
Read-only
Inspect

List users for the selected account, including their roles and creation timestamps.

Inputs: no named parameters. Returns: ok, users, message

request_otpRequest OTPA
Destructive
Inspect

Request an OTP code.

Sometimes OTP is needed to complete invoking a tool. When tool invocation fails due to OTP reasons, you will be notified in the tool response, and be asked to rqeuest an OTP code.

Only call after a tool call fails due to OTP.

Inputs: no named parameters. Returns: message, requested

sandbox_complete_registration(Sandbox) Complete registrationB
Read-only
Inspect

Complete a phone number's registration. This will get you the API key to use when sending messages from the 360Dialog sandbox phone number to the user's registered phone number.

Inputs: no named parameters. Returns: mdn, api_key, messages_left

sandbox_configure_webhook(Sandbox) Configure webhookC
DestructiveIdempotent
Inspect

Set webhook for the channel on 360Dialog sandbox. Optional.

Inputs: url (required), api_key (required). Returns: url, headers

sandbox_get_webhook_configuration(Sandbox) Get webhook configurationB
Read-only
Inspect

Get configured webhook for the channel on 360Dialog sandbox.

Inputs: api_key (required). Returns: url, headers

sandbox_list_events(Sandbox) List eventsB
Read-only
Inspect

List webhook events received. This will show received messages from the user, and status of messages sent from the sandbox account.

Inputs: page. Returns: page, size, items, pages, +1 more

sandbox_register_number(Sandbox) Register numberB
DestructiveIdempotent
Inspect

Register the user's phone number on the 360Dialog sandbox. Upon registration, the user can send messages to this phone number from the 360Dialog sandbox account on WhatsApp.

The user will be given a link to complete registration. When this link is used, they will send a verification code to 360Dialog sandbox phone number on WhatsApp. They can click the link, or alternatively scan the QR code.

Inputs: phone_number (required). Returns: quick_link, sandbox_number, message_to_send

sandbox_send_message(Sandbox) Send messageA
Destructive
Inspect

Send a message on the 360Dialog sandbox. Messages can only be sent to the user's phone number that was used during sandbox registration.

The payload must be a JSON string matching the WhatsApp messages endpoint body.

Interactive message example: use this only when there is an active conversation window, which lasts 24 hours since the customer's last message.

{ "messaging_product": "whatsapp", "to": "{{recipient_phone_number}}", "type": "text", "text": { "body": "{{message_body}}" } }

Template message example: use this when there is no active conversation window, or when sending an approved template message. You can only send the 'marketing_message' template.

{ "messaging_product": "whatsapp", "to": "{{recipient_phone_number}}", "type": "template", "template": { "name": "marketing_message", "language": { "policy": "deterministic", "code": "en" }, "components": [ { "type": "header", "parameters": [ { "type": "image", "image": { "link": "https://placehold.co/600x315/34D399/FFFFFF/png?text=Summer+Sale!" } } ] } ] } }

Inputs: api_key (required), payload (required). Returns: contacts, messages, messaging_product

search_client_documentationSearch client documentationA
Read-only
Inspect

Search the 360Dialog client documentation at https://docs.360dialog.com/docs. Search across the documentation to find relevant information, code examples, API references, and guides. Use this tool when you need to answer questions about Client Documentation, find specific documentation, understand how features work, or locate implementation details. The search returns contextual content with titles and direct links to the documentation pages.

Inputs: query (required).

set_display_nameSet display nameA
Destructive
Inspect

Submit a new display name for this channel (a.k.a. phone number.)

Calling this tool will submit a display name request to Meta. Meta takes up to 48 hours to review the submitted display name. The display name may be rejected if it does not comply with display name guidelines.

The user will receive an email when their display name review is complete.

When this tool is called, the user may be prompted by 360Dialog for an OTP code delivered to their email address.

Inputs: channel_id (required), new_display_name (required). Returns: submitted, channel_id, new_display_name

set_webhookSet webhookB
Destructive
Inspect

Set a channel's (a.k.a. phone number's) webhook URL and optionally webhook headers.

Inputs: channel_id (required), webhook_setting (required). Returns: message, webhook, configured

show_template_previewShow template previewC
Read-only
Inspect

Show a preview of a given template to the user.

Inputs: template_id (required), waba_account_id (required). Returns: template

start_number_onboardingStart number onboardingA
Read-only
Inspect

Get the link that lets the user connect a WhatsApp phone number in 360Dialog, plus what to tell them beforehand.

This hands over 360Dialog's own onboarding page. The user clicks through Embedded Signup themselves; this tool cannot do it for them.

The user must be signed in to 360Dialog Hub already, or the link sends them to login first and loses the destination. Tell them to make sure they're signed in first.

The link given by this tool may not work if the user's 360Dialog client account is under a partner-paid channel. Make them aware of this.

Returns the client's current channel IDs for future reference on recognizing which phone number was newly added.

Inputs: no named parameters. Returns: onboarding_url, what_meta_will_ask, current_channel_ids

start_payment_setupStart payment setupA
Read-only
Inspect

Get the link that lets the user add their credit card to their account.

If this client was created through assistant-led onboarding and still has no company name or country on file, the payment page is kept behind a company details form instead. In that case this tool does not return the payment link; it says to call 'update_company_details' first and try again.

The user must be signed in to 360Dialog Hub, or the link sends them to login first and loses the destination. The user enters the card themselves; this tool cannot do it for them.

Inputs: no named parameters. Returns: ready, message, payment_url, already_paid, +1 more

start_signupGet 360Dialog signup linkA
Read-only
Inspect

Returns the URL where a user can create a 360Dialog account. Only relevant if the user has not created a 360Dialog account yet.

Inputs: no named parameters. Returns: next_step, signup_url

test_webhookTest webhookA
Destructive
Inspect

Test if a channel's (a.k.a. phone number's) webhook URL is functional.

A total of 32 test cases will be run by sending sample POST requests to the user's webhook URL. During this test, the user may see 32 requests being made to their webhook server.

Returns the test's results, showing which cases failed, and which succeeded.

Inputs: channel_id (required). Returns: test, tested, message, webhook, +2 more

update_channel_profileUpdate channel profileA
Destructive
Inspect

Update the WhatsApp profile for this channel (a.k.a. phone number.)

The user may be prompted by 360Dialog for an OTP code delivered to their email address. Make them aware of the OTP requirement.

Inputs: channel_id (required), project_id (required), new_profile (required). Returns: message, updated, channel_id

update_company_detailsSet company detailsA
DestructiveIdempotent
Inspect

Set the user's company's details on 360Dialog. This change does not affect Meta; only records on 360Dialog are affected by the update.

Before calling this tool, make sure to:

  1. Check if the get_company_details tool returns the correct company information already.

  2. Check with the user if they want to change their company details in 360Dialog.

  3. Get the user's approval/confirmation.

Inputs: tax_id (required), company_name (required), billing_country (required). Returns: client

verify_otpVerify OTPA
Destructive
Inspect

Verify the 6-digit OTP code from the user. Doing so will automatically replay the blocked tool call that required verification.

Inputs: code (required). Returns: message, replayed, verified, replayed_tool, +1 more

wait_for_onboarding_stepWait for onboarding stepA
Read-only
Inspect

Wait for a server-side onboarding step to finish, then report back.

Embedded Signup and payment setup finish in the person's browser. This tool polls the hub every 5 seconds for up to 45 seconds and returns one of:

  • "done": The step finished.

  • "pending": Still not finished. Call this tool again to keep waiting.

  • "failed": There was an error.

'channel_id' and 'phone_number' are returned back once a channel is found so you can pass 'phone_number' into the next call once you have it. When 'phone_number' is omitted, 'candidates' lists the client's most recently created channels - check it if you're unsure the right number was picked (e.g. two users connecting numbers on the same 360Dialog client account).

Only use this for the short waits during onboarding. This tool is NOT suitable for display name approval, WABA approval, or business verification scenarios, as they take days, not seconds.

Inputs: step (required), phone_number. Returns: state, detail, observed, candidates, +2 more

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      C
      maintenance
      Enables authenticated MCP clients to manage multiple WhatsApp Business numbers through Meta's official Cloud API, including webhook-backed contact and conversation search, message history, and sending text, templates, or media within policy limits.
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      WhatsApp, Instagram, Telegram, SMS, Messenger & email in one AI-ready inbox. Manage conversations, send omnichannel messages, run campaigns, sync contacts, and query your knowledge base — 42 tools over a hosted, OAuth-secured MCP server.
      1
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources