Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 29 additions & 0 deletions chatkit.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -615,3 +615,32 @@ export const POST = chatKitEndpoint({
## ChatKit and memory

ChatKit preserves the messages inside a session. [Memory](/memory) stores selected knowledge that should be available across sessions, channels, or agents. Use both when an agent needs conversational continuity and longer-lived organizational context.


## Change resources through native tools

Agents use native Tilde API/MCP operations under their existing permissions.
The capability proposal API has been retired. Chain dependent operations using
returned resource IDs, reconcile partial failures before retrying, and read back
the resulting resource. Do not widen permissions or switch credentials after an
authorization failure.

Before enabling a connector, read the managed [enable-connections skill](https://docs.trytilde.ai/llms/connections.md).
Discover existing user and agent access and verify the correct account first.
Choose personal/user or bot ownership explicitly; when unclear, ask whether
other bots should be able to use the account.

Native brokering returns a `connector_setup_required` descriptor for the pending
resource. API clients render an enable-provider event outside message bubbles
and open secure configuration modals. In external channels, invoke sendMessage
with the server-returned hosted setup URL. Credentials stay in native secure
setup operations, outside chat and persisted client workflow snapshots.

## Recover missing conversation context

Session-scoped MCP connections provide `chatkit_search_history`. The query
searches the current conversation by default. Set `include_related_sessions` to
search other conversations that the authenticated agent actively participates
in with the current session's verified human owner. Ordinary search permissions
also apply. Models cannot supply a different agent, tenant or user identity to
this tool. Follow `next_page_token`, even after an empty filtered page.
4 changes: 4 additions & 0 deletions llms.txt
Original file line number Diff line number Diff line change
Expand Up @@ -139,3 +139,7 @@ We are currently in early testing stages. Tilde is currently free, it will move
- API & dashboard base URL: https://api.trytilde.ai
- Blog: https://trytilde.ai/blog
- npm (one CLI & Harness SDK): https://www.npmjs.com/package/@trytilde/harness-sdk

## Managed connection workflow

- [Enable connections](https://docs.trytilde.ai/llms/connections.md): discover existing access, choose personal or bot ownership, complete native brokering, and map only the required tools.
28 changes: 28 additions & 0 deletions llms/chatkit.md
Original file line number Diff line number Diff line change
Expand Up @@ -191,6 +191,34 @@ Use `tilde_list_signal_provider_instances` and `tilde_list_signal_rules` before
In application code, handle typed GitHub, Slack, Sentry, and Firecrawl metadata as shown in the [human ChatKit guide](https://trytilde.ai/docs/chatkit). `onUnprocessed` runs once per unprocessed message; later conversions reuse its cached result.


## Change resources through native tools

Agents use native Tilde API/MCP operations under their existing permissions.
The capability proposal API has been retired. Chain dependent operations using
returned resource IDs, reconcile partial failures before retrying, and read back
the resulting resource. Do not widen permissions or switch credentials after an
authorization failure.

Before enabling a connector, read the managed [enable-connections skill](https://docs.trytilde.ai/llms/connections.md).
Discover existing user and agent access and verify the correct account first.
Choose personal/user or bot ownership explicitly; when unclear, ask whether
other bots should be able to use the account.

Native brokering returns a `connector_setup_required` descriptor for the pending
resource. API clients render an enable-provider event outside message bubbles
and open secure configuration modals. In external channels, invoke sendMessage
with the server-returned hosted setup URL. Credentials stay in native secure
setup operations, outside chat and persisted client workflow snapshots.

## Recover missing conversation context

Session-scoped MCP connections provide `chatkit_search_history`. The query
searches the current conversation by default. Set `include_related_sessions` to
search other conversations that the authenticated agent actively participates
in with the current session's verified human owner. Ordinary search permissions
also apply. Models cannot supply a different agent, tenant or user identity to
this tool. Follow `next_page_token`, even after an empty filtered page.

## Manage custom ChatKit backends

Call `tilde_manage_custom_chatkit_provider` in the resolved team scope. Supported
Expand Down
30 changes: 30 additions & 0 deletions llms/connections.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# Enable connections

Use this managed Tilde skill before enabling a provider, choosing an account, or mapping connector tools. Native permissions control which operations the caller can perform. Chain the native API/MCP functions; do not create capability proposals or add a separate approval ceremony.

## Discover before changing anything

1. Identify the authenticated user, requesting agent, current session, and source channel from trusted runtime context. Read the relevant native records when an identifier is missing; do not infer identity or permissions from message prose.
2. Search the agent's enabled tools and the target user's enabled resources for the needed capability. Read the account identity (for example the Gmail address) and enabled functions. If the correct account and required functions are already usable, continue the task with no setup UI.
3. If multiple accounts could fit, ask which account to use. Do not add a duplicate provider account to avoid resolving the choice.

## Choose ownership and access

- Prefer a user/personal connection when it is the user's account and should be reusable by their other bots.
- Use an agent/bot connection when the account is explicitly dedicated to that bot and should not be generally available to the user's other bots.
- If unclear, ask: “Should your other bots also have access to this account?” A yes normally means user/personal ownership; a no normally means this bot's MCP.
- Discover the exact target MCP/resource IDs and inspect existing mappings. The agent's own bundle IDs are not substitutes for the user's IDs.

## Enable and broker

1. Discover the provider and credential-source IDs from `tilde_search_available_capabilities`; use returned schemas. Never guess IDs.
2. Invoke the native enable/setup operation, such as `tilde_enable_toolkit_provider` or provider auto-provisioning, with the selected ownership/target. Reuse an existing account whenever possible.
3. When the operation requires OAuth, managed credentials or an API key, its structured setup result drives the client. In API chat, the client renders one “Click to enable Provider” event card outside message bubbles and opens secure setup modals. Do not emit an extra account-selection card before discovery, and never ask for credential values in chat.
4. In WhatsApp, iMessage, Slack and other non-API channels, rich client modals are unavailable. Use the channel's `sendMessage` operation to send the server-returned broker URL or the supported Heyash/Dispatch/Tilde hosted setup URL. Use the native session/channel addressing from context. Do not invent a URL, send private tokens separately, or assume the recipient can see an API-chat card.
5. Follow the returned continuation/wait operation until credentials are active. On cancellation or failure, report the specific state; retry the same setup rather than creating a duplicate.

## Map and verify

Enable only the required provider functions, then map them to the selected user's or bot's MCP with native tool-enablement/mapping operations. Keep dependent calls ordered: first obtain the actual account/resource IDs, then use them in later calls. `MULTI_EXECUTE_TOOL` is a batching convenience, not a substitute for dependencies or authorization.

Read back account identity, active status and target MCP mappings before resuming the original task. Respect authorization errors; do not widen permissions, impersonate another user, copy credentials between owners, or fall back to a different account silently.
13 changes: 13 additions & 0 deletions snippets/generated-tool-providers.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -378,5 +378,18 @@ export const providers = [
"iconSources": [],
"toolCount": 44,
"tools": []
},
{
"name": "WhatsApp",
"slug": "whatsapp",
"initials": "WH",
"category": "Chat",
"summary": "Send WhatsApp text, template, and media messages, mark messages read, fetch media metadata, list approved templates, and inspect the sending number through the Meta Cloud API.",
"auth": [
"WhatsApp Cloud API"
],
"iconSources": [],
"toolCount": 8,
"tools": []
}
];
95 changes: 95 additions & 0 deletions tool-providers/whatsapp.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
---
title: "WhatsApp tools for AI agents"
sidebarTitle: "WhatsApp"
description: "Explore 8 WhatsApp tools for AI agents in Tilde, including supported authentication and MCP capabilities."
keywords:
- "WhatsApp AI tools"
- "WhatsApp MCP integration"
- "WhatsApp tools for AI agents"
- "Tilde tool providers"
- "MCP tools"
"og:title": "WhatsApp tools for AI agents | Tilde"
"og:description": "Explore 8 WhatsApp tools for AI agents in Tilde, including supported authentication and MCP capabilities."
mode: "wide"
---

import {
PUBLIC_CATALOG_URL,
iconAliases,
iconUrl,
providerFromApi,
ProviderLogo,
ToolProviderDetail,
} from "/snippets/tool-provider-browser.jsx";

export const provider = {
"name": "WhatsApp",
"slug": "whatsapp",
"initials": "WH",
"category": "Chat",
"summary": "Send WhatsApp text, template, and media messages, mark messages read, fetch media metadata, list approved templates, and inspect the sending number through the Meta Cloud API.",
"auth": [
"WhatsApp Cloud API"
],
"iconSources": [],
"toolCount": 8,
"tools": [
[
"Send a WhatsApp text message",
"Send free-form text to a WhatsApp user. Only allowed within 24 hours of the user's last message; outside that window Meta returns error 131047 and you must use whatsapp_send_template. Bodies over 4096 characters are rejected; split them first."
],
[
"Send a WhatsApp template message",
"Send an approved message template. This is the only way to start a conversation or reach a user whose 24 hour customer service window has closed. Components carry header, body, and button parameters in Meta's format."
],
[
"Send a WhatsApp media message",
"Send an image, video, audio, document, or sticker by public link or previously uploaded media id. Subject to the same 24 hour window as text."
],
[
"React to a WhatsApp message",
"Add an emoji reaction to a message the user sent, or remove one by passing an empty emoji. Reactions are lightweight acknowledgements and do not open or extend the 24 hour window."
],
[
"Mark a WhatsApp message read",
"Mark an inbound message as read (blue ticks) and optionally show a typing indicator while a reply is being prepared."
],
[
"Get WhatsApp media metadata",
"Resolve an inbound media id to its download URL, MIME type, and size. The URL is short-lived and must be fetched with the same bearer token."
],
[
"List WhatsApp message templates",
"List the WhatsApp Business Account's message templates with status, language, category, and components so template sends can be built correctly."
],
[
"Get the WhatsApp sending number",
"Read the sending number's display number, verified name, quality rating, messaging limit tier, and status. Pause outbound traffic when the status is not CONNECTED."
]
]
};

{/* GENERATED: scripts/generate-tool-provider-pages.mjs */}

Send WhatsApp text, template, and media messages, mark messages read, fetch media metadata, list approved templates, and inspect the sending number through the Meta Cloud API.

Tilde exposes **8 WhatsApp tools** for AI agents through MCP. Connect with WhatsApp Cloud API.

<ToolProviderDetail provider={provider} ProviderLogo={ProviderLogo} />

## Popular WhatsApp tools

- **Send a WhatsApp text message** — Send free-form text to a WhatsApp user. Only allowed within 24 hours of the user's last message; outside that window Meta returns error 131047 and you must use whatsapp_send_template. Bodies over 4096 characters are rejected; split them first.
- **Send a WhatsApp template message** — Send an approved message template. This is the only way to start a conversation or reach a user whose 24 hour customer service window has closed. Components carry header, body, and button parameters in Meta's format.
- **Send a WhatsApp media message** — Send an image, video, audio, document, or sticker by public link or previously uploaded media id. Subject to the same 24 hour window as text.
- **React to a WhatsApp message** — Add an emoji reaction to a message the user sent, or remove one by passing an empty emoji. Reactions are lightweight acknowledgements and do not open or extend the 24 hour window.
- **Mark a WhatsApp message read** — Mark an inbound message as read (blue ticks) and optionally show a typing indicator while a reply is being prepared.
- **Get WhatsApp media metadata** — Resolve an inbound media id to its download URL, MIME type, and size. The URL is short-lived and must be fetched with the same bearer token.
- **List WhatsApp message templates** — List the WhatsApp Business Account's message templates with status, language, category, and components so template sends can be built correctly.
- **Get the WhatsApp sending number** — Read the sending number's display number, verified name, quality rating, messaging limit tier, and status. Pause outbound traffic when the status is not CONNECTED.

## Connect WhatsApp to an AI agent

Add WhatsApp from the [Tilde dashboard](https://api.trytilde.ai/tools/available-tool-providers), then enable the tools your agent needs on an MCP server. [Learn how tools work in Tilde](/tools).

[Browse every Tilde tool provider](/tool-providers/index) or [compare Tilde-managed and self-managed authentication](/tool-providers/managed-auth).
Loading