ai.kontato/kontato
REMOTE · API.KONTATO.AI
Give your AI agents a WhatsApp number and a voice: they message you and call you.
Available components
Last scanned (9 hours ago)
Scores higher than 19% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Communication
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security89
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- The endpoint enforces authorisation, advertised via RFC 9728 protected-resource metadata. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents. View diagnostics → Partial
Transport & Reachability0
- Transport blocked by authentication: the endpoint requires auth we don't have to verify streamable-http. See how to fix → View diagnostics → Unverified
Schema Quality & AI Usability0
- Schema blocked by authentication: the endpoint requires auth we don't have to read it. See how to fix → Unverified
Stability & Change Management0
- Stability not yet verified: not enough scan history yet (needs a 30-day window).Unverified
Tool Coverage0
- Tool coverage blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Tool Safety0
- Tool safety blocked by authentication: the endpoint requires auth we don't have to read its tools.Unverified
Capabilities0
- Capabilities blocked by authentication: the endpoint requires auth we don't have to read them. See how to fix → Unverified
Unverified: 6 categories
Categories scored 0 because we could not verify them: authentication we do not have, an unreachable endpoint, or not enough scan history. We only credit what we can confirm. Claim this server and supply a read-only token to verify it and lift the score.
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 10 Oct 26 −41
- Endpoint reachability: reachable → behind authorisation ▼ security
- Stability: pass → unverified ▼ security
- Tool safety: pass → unverified ▼ security
- Transport: pass → unverified ▼ security
- Authorization: fail → pass ▲ security
- First check of Authorization: partial security
- Capabilities: pass → unverified ▼ functional
- Tool coverage: 100 → unverified ▼ functional
- First check of Schema quality: unverified functional
- 5 Oct 26 0
- Tool “send” rewrote its description, which is the text the model reads security
- Schema quality: 2156 → 2396 ▼ functional
- New tool “authorize_recipient” functional
- New tool “list_recipients” functional
- 4 Oct 26 0
- Schema quality: 1642 → 2156 ▼ functional
- 28 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Sept 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 28 Aug 26 0
- Tool “send” rewrote its description, which is the text the model reads security
- Schema quality: 161 → 182 ▼ functional
- “send” reworded the description of “template_name” cosmetic
- 26 Aug 26 0
- We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
- 25 Aug 26 0
- Stability: 0.97 → pass security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://api.kontato.ai/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=api.kontato.ai | CN=YE1,O=Let's Encrypt,C=US | 12 Oct 2026 | 10 Jan 2027 | ECDSA 256 | ECDSA-SHA384 | 62b2515b43c652a80f5dd275b713b1ef9e0 |
| SANs: api.kontato.ai | ||||||
| CN=YE1,O=Let's Encrypt,C=US (CA) | CN=Root YE,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | ECDSA 384 | ECDSA-SHA384 | 5ddd70dd31f801c85c186a7a04b80afe |
| CN=Root YE,O=ISRG,C=US (CA) | CN=ISRG Root X2,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | ECDSA-SHA384 | 872165fc34b6e5fba8add5b3705fb53a |
| CN=ISRG Root X2,O=Internet Security Research Group,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | ECDSA 384 | SHA256-RSA | 6c8f1dc727c7117f7baf853ac980f9cd |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.kontato.ai. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 1814, 3799 | 8, 8 | Verified |
| kontato.ai. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On connection |
| HTTP status | 401 |
WWW-Authenticate challenge Bearer realm="kontato", resource_metadata="https://api.kontato.ai/.well-known/oauth-protected-resource"
Bearer realm="kontato", resource_metadata="https://api.kontato.ai/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| www-authenticate | Bearer realm="kontato", resource_metadata="https://api.kontato.ai/.well-known/oauth-protected-resource" |
Protected resource metadata
| Document | https://api.kontato.ai/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://api.kontato.ai/mcp |
| Authorisation server | https://api.kontato.ai |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.kontato.ai/mcp | Auth required | 401 | |
| http (plaintext) | http://api.kontato.ai/mcp | HTTPS enforced | 308 | https://api.kontato.ai/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
authorize_recipient Authorize a recipient ~143
Asks a phone number for permission to receive messages from this account. By default an account only messages its OWNER; any other number must be authorized: Kontato sends an invite on WhatsApp and the person must reply SIM (yes). Until then, `send`/`reply` to that number are refused. Use it once per person (e.g. a colleague who should get alerts).
| Name | Type | Req | Description |
|---|---|---|---|
| owner_phone | string | – | Owner number (digits only). Pass it to reactivate the account if this MCP session is new (stateless clients). |
| phone | string | yes | Recipient number, digits with country code (e.g. 5511999998888). |
No output schema declared.
No examples provided.
call Call the owner on the phone ~439
Places a phone call to the account OWNER (the person who verified their number), spoken by Kontato's voice assistant on your behalf. Use it when something deserves the owner's attention now, or when you need a decision and they are away from the screen. Modes: "notify" reads a message and asks if they have any instruction; "ask" asks a question (up to 4 options) and confirms the answer; "conversation" is a brainstorm of up to 10 minutes and returns a structured summary (decisions, requirements, open questions, next steps). The call is ASYNC: this tool returns a call_id immediately; then call `get_call` every ~10 seconds until state is "finished". Calls only go to the owner's verified number (never to third parties) and there is a daily limit. Write `message` in the owner's language; the call is spoken in `language` (default pt-BR).
| Name | Type | Req | Description |
|---|---|---|---|
| agent_name | string | – | Your name as the owner knows you, e.g. "Claude Code", "ChatGPT", "Codex". Said in the greeting. |
| context | string | – | One short sentence of context said at the start (e.g. "The deploy of the landing page finished."). |
| language | string | – | Spoken language, e.g. "pt-BR" (default) or "en". |
| max_duration_s | integer | – | Max talk time in seconds (ask/notify default 240, conversation default and cap 600). |
| message | string | yes | notify: the message to read. ask: the question. conversation: the topic to discuss. |
| mode | string | yes | notify = message; ask = question with optional options; conversation = brainstorm up to 10 min. |
| options | array | – | ask mode only: up to 4 short options, read as "option 1, option 2...". |
| owner_name | string | – | Owner's first name, used in the greeting. |
| owner_phone | string | – | Owner number (digits only). Pass it to reactivate the account if this MCP session is new (stateless clients). |
No output schema declared.
No examples provided.
cancel_schedule Cancel a schedule ~79
Cancels a scheduled delivery by its schedule_id (from `list_schedules` or `schedule`).
| Name | Type | Req | Description |
|---|---|---|---|
| owner_phone | string | – | Owner number (digits only, as text or number). Pass it to reactivate the account if this MCP session is new (stateless clients). |
| schedule_id | string | yes | ID of the schedule to cancel. |
No output schema declared.
No examples provided.
get_call Get call status and result ~170
Returns the state of a call placed with `call`. While running, state is "queued", "ringing", "in_progress" or "processing". When state is "finished", read: outcome ("answered", "no_instruction", "decide_later", "completed", "voicemail", "no_answer", "busy", "interrupted", "timed_out"), answer (what the owner said, in one sentence), chosen_option (ask mode), summary (conversation mode) and transcript. Act on the answer after the call; the voice assistant never executes anything.
| Name | Type | Req | Description |
|---|---|---|---|
| call_id | string | yes | The call_id returned by `call`. |
| owner_phone | string | – | Owner number (digits only). Pass it to reactivate the account if this MCP session is new (stateless clients). |
No output schema declared.
No examples provided.
list_messages List message history ~104
Lists the message history of the bridge number (received and sent), newest first. Use it to decide whom to answer with `reply`.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | Maximum number of messages (1 to 100). |
| owner_phone | string | – | Owner number (digits only, as text or number). Pass it to reactivate the account if this MCP session is new (stateless clients). |
| since | string | – | ISO 8601 timestamp; returns only later messages. |
No output schema declared.
No examples provided.
list_recipients List authorized recipients ~62
Lists the numbers this account may message besides the owner, with their status ("authorized" or "pending").
| Name | Type | Req | Description |
|---|---|---|---|
| owner_phone | string | – | Owner number (digits only). Pass it to reactivate the account if this MCP session is new (stateless clients). |
No output schema declared.
No examples provided.
list_schedules List schedules ~65
Lists the scheduled deliveries (recurring or one-time) of this account, with the next run.
| Name | Type | Req | Description |
|---|---|---|---|
| owner_phone | string | – | Owner number (digits only, as text or number). Pass it to reactivate the account if this MCP session is new (stateless clients). |
No output schema declared.
No examples provided.
provision Activate Kontato account (create or reuse) ~226
ACTIVATES the Kontato account for the given phone: creates it only if it does not exist yet; if it exists, reuses the SAME account (calling it with an existing account is normal and expected: it works like a login). IDEMPOTENT BY PHONE: safe to call again in any session or after a restart (the user never has to handle an api_key). If the response has verification_required=false (number already verified), do NOT ask for an OTP: call `send` or `call` directly. Pass owner_phone (international format, digits only, e.g. 5511999998888) to enable the safe self-notification case: you deliver to the owner's own WhatsApp and phone. Returns whatsapp_bridge_number (Kontato's shared number that sends, never the owner's personal number).
| Name | Type | Req | Description |
|---|---|---|---|
| string | – | Owner e-mail (optional). | |
| owner_phone | string | – | Owner WhatsApp number, digits only, as text or number (e.g. 5511999998888). Becomes the default destination of self-notifications and calls. |
No output schema declared.
No examples provided.
reply Reply to a WhatsApp contact ~115
Replies to a specific number that messaged the bridge number. Same as `send`, but "to" is REQUIRED. Replying to whoever wrote to you is safer than cold outbound.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | yes | Reply text. |
| owner_phone | string | – | Owner number (digits only, as text or number). Pass it to reactivate the account if this MCP session is new (stateless clients). |
| to | string | yes | Destination, digits only, as text or number (e.g. 5511999998888). |
No output schema declared.
No examples provided.
schedule Schedule a recurring delivery ~292
Registers a recurring or one-time delivery in the Kontato scheduler. At the scheduled time, Kontato runs the `prompt` as a full agent (with web search) and delivers the result to the owner's WhatsApp. USE THIS for "send me X every day": you do not need to stay online or promise future work; the scheduler fires on its own. The `prompt` must be self-contained (e.g. "Find today's top financial market news and deliver a short summary").
| Name | Type | Req | Description |
|---|---|---|---|
| channel | string | – | How to deliver: "whatsapp" (default) or "call" (a phone call reads the result aloud to the owner, e.g. a morning briefing; if unanswered, it goes to WhatsApp). |
| owner_phone | string | – | Owner number (digits only, as text or number). Pass it to reactivate the account if this MCP session is new (stateless clients). |
| prompt | string | yes | What to deliver when it fires. Self-contained. |
| schedule_type | string | yes | cron = recurring at set times; interval = every N ms; once = one time. |
| schedule_value | string | yes | cron: "0 8 * * *" (every day 8am, São Paulo time) | interval: ms like "3600000" | once: local time "2026-06-20T15:30:00" (no Z). |
No output schema declared.
No examples provided.
send Send WhatsApp message ~470
Sends a WhatsApp message through Kontato's bridge number. SAFE CASE: if you OMIT "to", it is delivered to the OWNER's own WhatsApp (self-notification). Other numbers must be AUTHORIZED first with `authorize_recipient` (the person replies SIM/yes on WhatsApp); otherwise the send is refused with recipient_not_authorized. 24-HOUR WINDOW: handled AUTOMATICALLY by the server; just send "message". If the WhatsApp window is closed, Kontato wraps the text in an approved template and delivers it anyway (the response comes back with via="template"). Do NOT ask the owner about the window or templates; never ask them to "say hi" first. TURN-BASED RULE: you do not run work in the future; if asked for something recurring ("send me X every day"), deliver TODAY's now and register a `schedule`; never promise a future delivery.
| Name | Type | Req | Description |
|---|---|---|---|
| message | string | – | Message text (required when NOT using a template). |
| owner_phone | string | – | Account OWNER number (digits only, as text or number). ALWAYS pass it when you know it: it reactivates the account automatically when the MCP session is new (stateless clients like the claude.ai conn… |
| template_name | string | – | ADVANCED, usually UNNECESSARY: the server already handles the 24-hour window. Use only to pick a specific template. Available templates (name, variables in order): kontato_aviso (1 variável: texto da… |
| template_variables | array | – | Positional template variables ({{1}}, {{2}}...), in order. |
| to | string | – | Destination, digits only, as text or number. OMIT it to send to the owner (recommended). |
No output schema declared.
No examples provided.
status Account status & schedules ~90
Shows the Kontato account state: active or not, bridge number, and the schedules already registered. Use it to honor the turn-based rule: before saying something will be delivered "every day", confirm here that an active schedule exists.
| Name | Type | Req | Description |
|---|---|---|---|
| owner_phone | string | – | Owner number (digits only, as text or number). Pass it to reactivate the account if this MCP session is new (stateless clients). |
No output schema declared.
No examples provided.
verify_number Verify owner number (OTP) ~141
Confirms the owner number with the 6-digit OTP that arrived on their WhatsApp after `provision`. REQUIRED before sending, scheduling or calling: until verified, `send`/`reply`/`schedule`/`call` return 403 owner_not_verified. If the code expired or failed too many times, call again after requesting a new one (resend).
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | 6-digit code received on the owner's WhatsApp (text or number). |
| owner_phone | string | – | Owner number (digits only, as text or number). Pass it to reactivate the account if this MCP session is new (stateless clients). |
No output schema declared.
No examples provided.
How do I install the ai.kontato/kontato MCP server?
ai.kontato/kontato is a hosted endpoint at https://api.kontato.ai/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.kontato.ai
claude mcp add --transport http ai-kontato-kontato 'https://api.kontato.ai/mcp'
What is the ai.kontato/kontato MCP server?
ai.kontato/kontato is an MCP server listed in the public MCP registry as ai.kontato/kontato. Give your AI agents a WhatsApp number and a voice: they message you and call you. This page covers its hosted endpoint (https://api.kontato.ai/mcp).
Is the ai.kontato/kontato MCP server safe to use?
ai.kontato/kontato scores 36 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ai.kontato/kontato MCP server expose?
ai.kontato/kontato exposes 13 tools: provision, verify_number, schedule, list_schedules, cancel_schedule, and 8 more. Their descriptions and schemas cost roughly 2,396 tokens of context every time the server is loaded.
Does the ai.kontato/kontato MCP server require authentication?
Yes. ai.kontato/kontato asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the ai.kontato/kontato MCP server still maintained?
ai.kontato/kontato is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.