[{"data":1,"prerenderedAt":1598},["ShallowReactive",2],{"docs-pages-meta":3,"i-lucide:menu":159,"i-fa6-solid:book":164,"i-fa6-solid:signs-post":168,"i-lucide:search":170,"i-lucide:languages":172,"i-lucide:chevron-down":174,"i-lucide:moon":176,"i-fa6-solid:rocket":178,"i-lucide:sparkles":180,"i-lucide:badge-check":182,"i-lucide:star":184,"i-fa6-solid:qrcode":186,"i-fa6-solid:cube":188,"i-lucide:bot":190,"i-lucide:webhook":192,"i-fa6-brands:wordpress":194,"i-fa6-solid:envelope":196,"i-fa6-solid:code":198,"i-fa6-solid:key":201,"i-lucide:shield":203,"docs-page:\u002Fen\u002Fmcp":205,"i-lucide:chevron-left":1585,"i-lucide:chevron-right":1587,"i-fa6-solid:circle-info":1589,"i-fa6-solid:triangle-exclamation":1591,"i-lucide:copy":1593,"i-fa6-solid:lightbulb":1595},[4,9,14,19,22,27,30,35,38,42,47,52,56,61,66,71,76,81,86,89,93,97,100,103,107,110,114,117,121,125,129,133,137,141,144,148,152,156],{"path":5,"title":6,"description":7,"icon":8},"\u002Fen\u002Fapi-reference\u002Fv2\u002Fauthentication","Authentication","Learn how to generate and manage your access credentials to use the API securely.","key",{"path":10,"title":11,"description":12,"icon":13},"\u002Fen\u002Fapi-reference\u002Fv2","Introduction","The v2 API: connections, chats, messages and templates.","sparkles",{"path":15,"title":16,"description":17,"icon":18},"\u002Fen\u002Fapi-reference\u002Fv2\u002Fwebhooks","Webhooks","In this section, you’ll learn how to integrate and use webhooks and messaging events to connect your application to your projects.","webhook",{"path":20,"title":6,"description":21,"icon":8},"\u002Fen\u002Fapi-reference\u002Fv3\u002Fauthentication","How a v3 request proves who it is, and which workspace it acts on.",{"path":23,"title":24,"description":25,"icon":26},"\u002Fen\u002Fapi-reference\u002Fv3\u002Fconventions","Conventions","Pagination, errors, ids and dates — the rules every v3 endpoint follows.","list-check",{"path":28,"title":11,"description":29,"icon":13},"\u002Fen\u002Fapi-reference\u002Fv3","The v3 API: workspaces, connections, campaigns and the helpdesk.",{"path":31,"title":32,"description":33,"icon":34},"\u002Fen\u002Fapi-reference\u002Fv3\u002Frealtime","Realtime","The websocket behind the shared inbox: live conversations, typing and presence.","tower-broadcast",{"path":36,"title":16,"description":37,"icon":18},"\u002Fen\u002Fapi-reference\u002Fv3\u002Fwebhooks","Receive WhatsApp and helpdesk events on your own server, and prove they came from us.",{"path":39,"title":40,"description":41,"icon":8},"\u002Fen\u002Fapikeys","API Keys","Understand what API Keys are and why they are required to use Pingo Notify securely.",{"path":43,"title":44,"description":45,"icon":46},"\u002Fen\u002Fconnections","Connections","Connections represent WhatsApp sessions linked to Pingo Notify, used for sending, receiving, and integrations.","qrcode",{"path":48,"title":49,"description":50,"icon":51},"\u002Fen\u002Fhooks-and-development","Hooks and Development","Extend the Pingo Notify WordPress plugin with custom triggers, groups, and hooks.","code",{"path":53,"title":54,"description":55,"icon":13},"\u002Fen","Introduction to Pingo Notify","Connect WhatsApp to your systems, automate workflows, and send messages.",{"path":57,"title":58,"description":59,"icon":60},"\u002Fen\u002Fintegrations","Integrations","Integrations represent external applications linked to Pingo Notify, authorized to access resources such as connections, plans, and messaging.","cube",{"path":62,"title":63,"description":64,"icon":65},"\u002Fen\u002Fmcp","MCP server","Connect an AI assistant to your workspace — how to authorize it, what it can do, and every tool it gets.","robot",{"path":67,"title":68,"description":69,"icon":70},"\u002Fen\u002Foauth","OAuth 2.1","How an application gets a token on behalf of a person, what that token can do, and every error it can get back.","shield",{"path":72,"title":73,"description":74,"icon":75},"\u002Fen\u002Fofficial-whatsapp-api","Official WhatsApp API","Step-by-step guide to request access to the Official WhatsApp Business API and connect it to Pingo Notify.","badge-check",{"path":77,"title":78,"description":79,"icon":80},"\u002Fen\u002Fplugin-wordpress","Get started","WordPress plugin that connects events from your site to Pingo Notify for automatic notification delivery.","wordpress",{"path":82,"title":83,"description":84,"icon":85},"\u002Fen\u002Ftemplate-plugins","Templates Guide","Learn how to create custom dynamic messages.","square-envelope",{"path":87,"title":16,"description":88,"icon":18},"\u002Fen\u002Fwebhooks","Receive WhatsApp events in real time by linking webhooks to one or more connections in Pingo Notify.",{"path":90,"title":91,"description":92,"icon":8},"\u002Fpt-BR\u002Fapi-reference\u002Fv2\u002Fauthentication","Autenticação","Veja como gerar e gerenciar suas credenciais de acesso para utilizar a API com segurança.",{"path":94,"title":95,"description":96,"icon":13},"\u002Fpt-BR\u002Fapi-reference\u002Fv2","Introdução","A API v2: conexões, conversas, mensagens e templates.",{"path":98,"title":16,"description":99,"icon":18},"\u002Fpt-BR\u002Fapi-reference\u002Fv2\u002Fwebhooks","Nesta seção, você aprende como integrar e utilizar webhooks e eventos de mensageria para conectar a aplicação aos seus projetos.",{"path":101,"title":91,"description":102,"icon":8},"\u002Fpt-BR\u002Fapi-reference\u002Fv3\u002Fauthentication","Como uma requisição v3 prova quem é, e em qual workspace ela atua.",{"path":104,"title":105,"description":106,"icon":26},"\u002Fpt-BR\u002Fapi-reference\u002Fv3\u002Fconventions","Convenções","Paginação, erros, ids e datas — as regras que todo endpoint da v3 segue.",{"path":108,"title":95,"description":109,"icon":13},"\u002Fpt-BR\u002Fapi-reference\u002Fv3","A API v3: workspaces, conexões, campanhas e o helpdesk.",{"path":111,"title":112,"description":113,"icon":34},"\u002Fpt-BR\u002Fapi-reference\u002Fv3\u002Frealtime","Tempo real","O websocket por trás da caixa compartilhada: conversas ao vivo, digitação e presença.",{"path":115,"title":16,"description":116,"icon":18},"\u002Fpt-BR\u002Fapi-reference\u002Fv3\u002Fwebhooks","Receba eventos do WhatsApp e do helpdesk no seu servidor, e prove que vieram de nós.",{"path":118,"title":119,"description":120,"icon":8},"\u002Fpt-BR\u002Fapikeys","Chaves de API","Entenda o que são Chaves de API e por que elas são necessárias para usar o Pingo Notify com segurança.",{"path":122,"title":123,"description":124,"icon":46},"\u002Fpt-BR\u002Fconnections","Conexões","Conexões representam sessões do WhatsApp vinculadas ao Pingo Notify, usadas para envio, recebimento e integrações.",{"path":126,"title":127,"description":128,"icon":51},"\u002Fpt-BR\u002Fhooks-and-development","Hooks e Desenvolvimento","Estenda o plugin WordPress do Pingo Notify com gatilhos, grupos e hooks personalizados.",{"path":130,"title":131,"description":132,"icon":13},"\u002Fpt-BR","Introdução ao Pingo Notify","Conecte o WhatsApp aos seus sistemas, automatize fluxos e envie mensagens.",{"path":134,"title":135,"description":136,"icon":60},"\u002Fpt-BR\u002Fintegrations","Integrações","Integrações representam aplicações externas vinculadas ao Pingo Notify, autorizadas a acessar recursos como conexões, planos e mensageria.",{"path":138,"title":139,"description":140,"icon":65},"\u002Fpt-BR\u002Fmcp","Servidor MCP","Conecte um assistente de IA ao seu workspace — como autorizar, o que ele pode fazer e todas as ferramentas que recebe.",{"path":142,"title":68,"description":143,"icon":70},"\u002Fpt-BR\u002Foauth","Como uma aplicação obtém um token em nome de uma pessoa, o que esse token pode fazer e todos os erros que ele pode receber.",{"path":145,"title":146,"description":147,"icon":75},"\u002Fpt-BR\u002Fofficial-whatsapp-api","API Oficial do WhatsApp","Guia passo a passo para solicitar acesso à API Oficial do WhatsApp Business e conectá-la ao Pingo Notify.",{"path":149,"title":150,"description":151,"icon":80},"\u002Fpt-BR\u002Fplugin-wordpress","Primeiros passos","Plugin WordPress que conecta eventos do seu site ao Pingo Notify para envio automático de notificações.",{"path":153,"title":154,"description":155,"icon":85},"\u002Fpt-BR\u002Ftemplate-plugins","Guia de Templates","Aprenda a criar mensagens dinâmicas personalizadas.",{"path":157,"title":16,"description":158,"icon":18},"\u002Fpt-BR\u002Fwebhooks","Receba eventos do WhatsApp em tempo real vinculando webhooks a uma ou mais conexões no Pingo Notify.",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":163},0,24,false,"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M4 5h16M4 12h16M4 19h16\"\u002F>",{"left":160,"top":160,"width":165,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":167},448,512,"\u003Cpath fill=\"currentColor\" d=\"M96 0C43 0 0 43 0 96v320c0 53 43 96 96 96h320c17.7 0 32-14.3 32-32s-14.3-32-32-32v-64c17.7 0 32-14.3 32-32V32c0-17.7-14.3-32-32-32zm0 384h256v64H96c-17.7 0-32-14.3-32-32s14.3-32 32-32m32-240c0-8.8 7.2-16 16-16h192c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16m16 48h192c8.8 0 16 7.2 16 16s-7.2 16-16 16H144c-8.8 0-16-7.2-16-16s7.2-16 16-16\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":169},"\u003Cpath fill=\"currentColor\" d=\"M224 32H64c-17.7 0-32 14.3-32 32v64c0 17.7 14.3 32 32 32h377.4c4.2 0 8.3-1.7 11.3-4.7l48-48c6.2-6.2 6.2-16.4 0-22.6l-48-48c-3-3-7.1-4.7-11.3-4.7H288c0-17.7-14.3-32-32-32s-32 14.3-32 32m256 224c0-17.7-14.3-32-32-32H288v-32h-64v32H70.6c-4.2 0-8.3 1.7-11.3 4.7l-48 48c-6.2 6.2-6.2 16.4 0 22.6l48 48c3 3 7.1 4.7 11.3 4.7H448c17.7 0 32-14.3 32-32zM288 480v-96h-64v96c0 17.7 14.3 32 32 32s32-14.3 32-32\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":171},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"m21 21l-4.34-4.34\"\u002F>\u003Ccircle cx=\"11\" cy=\"11\" r=\"8\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":173},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m5 8l6 6m-7 0l6-6l2-3M2 5h12M7 2h1m14 20l-5-10l-5 10m2-4h6\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":175},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m6 9l6 6l6-6\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":177},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":179},"\u003Cpath fill=\"currentColor\" d=\"M156.6 384.9L125.7 354c-8.5-8.5-11.5-20.8-7.7-32.2c3-8.9 7-20.5 11.8-33.8H24c-8.6 0-16.6-4.6-20.9-12.1s-4.2-16.7.2-24.1l52.5-88.5c13-21.9 36.5-35.3 61.9-35.3H200c2.4-4 4.8-7.7 7.2-11.3C289.1-4.1 411.1-8.1 483.9 5.3c11.6 2.1 20.6 11.2 22.8 22.8c13.4 72.9 9.3 194.8-111.4 276.7c-3.5 2.4-7.3 4.8-11.3 7.2v82.3c0 25.4-13.4 49-35.3 61.9l-88.5 52.5c-7.4 4.4-16.6 4.5-24.1.2S224 496.7 224 488V380.8c-14.1 4.9-26.4 8.9-35.7 11.9c-11.2 3.6-23.4.5-31.8-7.8zM384 168a40 40 0 1 0 0-80a40 40 0 1 0 0 80\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":181},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594zM20 2v4m2-2h-4\"\u002F>\u003Ccircle cx=\"4\" cy=\"20\" r=\"2\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":183},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M3.85 8.62a4 4 0 0 1 4.78-4.77a4 4 0 0 1 6.74 0a4 4 0 0 1 4.78 4.78a4 4 0 0 1 0 6.74a4 4 0 0 1-4.77 4.78a4 4 0 0 1-6.75 0a4 4 0 0 1-4.78-4.77a4 4 0 0 1 0-6.76\"\u002F>\u003Cpath d=\"m9 12l2 2l4-4\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":185},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M11.525 2.295a.53.53 0 0 1 .95 0l2.31 4.679a2.12 2.12 0 0 0 1.595 1.16l5.166.756a.53.53 0 0 1 .294.904l-3.736 3.638a2.12 2.12 0 0 0-.611 1.878l.882 5.14a.53.53 0 0 1-.771.56l-4.618-2.428a2.12 2.12 0 0 0-1.973 0L6.396 21.01a.53.53 0 0 1-.77-.56l.881-5.139a2.12 2.12 0 0 0-.611-1.879L2.16 9.795a.53.53 0 0 1 .294-.906l5.165-.755a2.12 2.12 0 0 0 1.597-1.16z\"\u002F>",{"left":160,"top":160,"width":165,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":187},"\u003Cpath fill=\"currentColor\" d=\"M0 80c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48zm64 16v64h64V96zM0 336c0-26.5 21.5-48 48-48h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48H48c-26.5 0-48-21.5-48-48zm64 16v64h64v-64zM304 32h96c26.5 0 48 21.5 48 48v96c0 26.5-21.5 48-48 48h-96c-26.5 0-48-21.5-48-48V80c0-26.5 21.5-48 48-48m80 64h-64v64h64zM256 304c0-8.8 7.2-16 16-16h64c8.8 0 16 7.2 16 16s7.2 16 16 16h32c8.8 0 16-7.2 16-16s7.2-16 16-16s16 7.2 16 16v96c0 8.8-7.2 16-16 16h-64c-8.8 0-16-7.2-16-16s-7.2-16-16-16s-16 7.2-16 16v64c0 8.8-7.2 16-16 16h-32c-8.8 0-16-7.2-16-16zm112 176a16 16 0 1 1 0-32a16 16 0 1 1 0 32m64 0a16 16 0 1 1 0-32a16 16 0 1 1 0 32\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":189},"\u003Cpath fill=\"currentColor\" d=\"M234.5 5.7c13.9-5 29.1-5 43.1 0l192 68.6c25.4 9.1 42.4 33.2 42.4 60.3v242.9c0 27-17 51.2-42.5 60.3l-192 68.6c-13.9 5-29.1 5-43.1 0l-192-68.6C17 428.6 0 404.5 0 377.4V134.6c0-27 17-51.2 42.5-60.3zM256 66L82.3 128L256 190l173.7-62zm32 368.6l160-57.1v-188l-160 57.1z\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":191},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M12 8V4H8\"\u002F>\u003Crect width=\"16\" height=\"12\" x=\"4\" y=\"8\" rx=\"2\"\u002F>\u003Cpath d=\"M2 14h2m16 0h2m-7-1v2m-6-2v2\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":193},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Cpath d=\"M18 16.98h-5.99c-1.1 0-1.95.94-2.48 1.9A4 4 0 0 1 2 17c.01-.7.2-1.4.57-2\"\u002F>\u003Cpath d=\"m6 17l3.13-5.78c.53-.97.1-2.18-.5-3.1a4 4 0 1 1 6.89-4.06\"\u002F>\u003Cpath d=\"m12 6l3.13 5.73C15.66 12.7 16.9 13 18 13a4 4 0 0 1 0 8\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":195},"\u003Cpath fill=\"currentColor\" d=\"m61.7 169.4l101.5 278C92.2 413 43.3 340.2 43.3 256c0-30.9 6.6-60.1 18.4-86.6m337.9 75.9c0-26.3-9.4-44.5-17.5-58.7c-10.8-17.5-20.9-32.4-20.9-49.9c0-19.6 14.8-37.8 35.7-37.8c.9 0 1.8.1 2.8.2c-37.9-34.7-88.3-55.9-143.7-55.9c-74.3 0-139.7 38.1-177.8 95.9c5 .2 9.7.3 13.7.3c22.2 0 56.7-2.7 56.7-2.7c11.5-.7 12.8 16.2 1.4 17.5c0 0-11.5 1.3-24.3 2l77.5 230.4L249.8 247l-33.1-90.8c-11.5-.7-22.3-2-22.3-2c-11.5-.7-10.1-18.2 1.3-17.5c0 0 35.1 2.7 56 2.7c22.2 0 56.7-2.7 56.7-2.7c11.5-.7 12.8 16.2 1.4 17.5c0 0-11.5 1.3-24.3 2l76.9 228.7l21.2-70.9c9-29.4 16-50.5 16-68.7m-139.9 29.3l-63.8 185.5c19.1 5.6 39.2 8.7 60.1 8.7c24.8 0 48.5-4.3 70.6-12.1c-.6-.9-1.1-1.9-1.5-2.9zm183-120.7c.9 6.8 1.4 14 1.4 21.9c0 21.6-4 45.8-16.2 76.2l-65 187.9C426.2 403 468.7 334.5 468.7 256c0-37-9.4-71.8-26-102.1M504 256c0 136.8-111.3 248-248 248C119.2 504 8 392.7 8 256C8 119.2 119.2 8 256 8c136.7 0 248 111.2 248 248m-11.4 0c0-130.5-106.2-236.6-236.6-236.6C125.5 19.4 19.4 125.5 19.4 256S125.6 492.6 256 492.6c130.5 0 236.6-106.1 236.6-236.6\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":197},"\u003Cpath fill=\"currentColor\" d=\"M48 64C21.5 64 0 85.5 0 112c0 15.1 7.1 29.3 19.2 38.4l217.6 163.2c11.4 8.5 27 8.5 38.4 0l217.6-163.2c12.1-9.1 19.2-23.3 19.2-38.4c0-26.5-21.5-48-48-48zM0 176v208c0 35.3 28.7 64 64 64h384c35.3 0 64-28.7 64-64V176L294.4 339.2a63.9 63.9 0 0 1-76.8 0z\"\u002F>",{"left":160,"top":160,"width":199,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":200},640,"\u003Cpath fill=\"currentColor\" d=\"M392.8 1.2c-17-4.9-34.7 5-39.6 22l-128 448c-4.9 17 5 34.7 22 39.6s34.7-5 39.6-22l128-448c4.9-17-5-34.7-22-39.6m80.6 120.1c-12.5 12.5-12.5 32.8 0 45.3l89.3 89.4l-89.4 89.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0l112-112c12.5-12.5 12.5-32.8 0-45.3l-112-112c-12.5-12.5-32.8-12.5-45.3 0zm-306.7 0c-12.5-12.5-32.8-12.5-45.3 0l-112 112c-12.5 12.5-12.5 32.8 0 45.3l112 112c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L77.3 256l89.4-89.4c12.5-12.5 12.5-32.8 0-45.3\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":202},"\u003Cpath fill=\"currentColor\" d=\"M336 352c97.2 0 176-78.8 176-176S433.2 0 336 0S160 78.8 160 176c0 18.7 2.9 36.8 8.3 53.7L7 391c-4.5 4.5-7 10.6-7 17v80c0 13.3 10.7 24 24 24h80c13.3 0 24-10.7 24-24v-40h40c13.3 0 24-10.7 24-24v-40h40c6.4 0 12.5-2.5 17-7l33.3-33.3c16.9 5.4 35 8.3 53.7 8.3m40-256a40 40 0 1 1 0 80a40 40 0 1 1 0-80\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":204},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\"\u002F>",{"id":206,"title":63,"body":207,"description":64,"extension":1579,"hidden":162,"icon":65,"meta":1580,"navigation":1581,"path":62,"seo":1582,"stem":1583,"__hash__":1584},"docs\u002Fen\u002Fmcp.md",{"type":208,"value":209,"toc":1559},"minimark",[210,219,224,227,237,240,298,318,331,342,346,351,361,365,381,460,467,479,483,493,496,500,503,507,604,624,632,636,821,836,839,939,943,946,965,1157,1160,1279,1282,1309,1313,1355,1358,1362,1369,1454,1458,1461,1525,1543],[211,212,213,214,218],"p",{},"Pingo Notify speaks ",[215,216,217],"strong",{},"MCP"," (Model Context Protocol), so an AI assistant can operate a workspace directly: list connections, send WhatsApp messages, read a conversation, manage webhooks. You approve what it may do once, on a consent screen, and it never handles an API key.",[220,221,223],"h2",{"id":222},"connect","Connect",[211,225,226],{},"Add one URL to the client, as a custom or remote connector:",[228,229,234],"pre",{"className":230,"code":232,"language":233},[231],"language-text","https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Fmcp\n","text",[51,235,232],{"__ignoreMap":236},"",[211,238,239],{},"Everything after that is the protocol doing its job:",[241,242,243,258,271,285],"steps",{},[244,245,247],"step",{"title":246},"The client discovers the server",[211,248,249,250,253,254,257],{},"Its first call arrives with no credential and gets a ",[215,251,252],{},"401"," carrying ",[51,255,256],{},"WWW-Authenticate: Bearer …, resource_metadata=\"…\u002F.well-known\u002Foauth-protected-resource\u002Fv3\u002Fmcp\"",". That document names the authorization server and, deliberately, only the scopes this server actually uses.",[244,259,261],{"title":260},"It registers itself",[211,262,263,266,267,270],{},[51,264,265],{},"POST \u002Fv3\u002Foauth\u002Fregister",". Registration needs no paperwork: an AI connector registers as a ",[215,268,269],{},"public client"," — no secret, PKCE instead.",[244,272,274],{"title":273},"You authorize",[211,275,276,277,280,281,284],{},"The client opens ",[51,278,279],{},"\u002Fv3\u002Foauth\u002Fauthorize",". You sign in, ",[215,282,283],{},"choose the workspace",", and approve the scopes it asked for. This is the only step with a person in it.",[244,286,288],{"title":287},"It gets a token",[211,289,290,293,294,297],{},[51,291,292],{},"POST \u002Fv3\u002Foauth\u002Ftoken"," exchanges the code, and from there every call carries ",[51,295,296],{},"Authorization: Bearer …",".",[299,300,301],"info",{},[211,302,303,304,311,312,317],{},"None of this is specific to one product. It is the standard remote-MCP flow — OAuth 2.1 with dynamic client registration (",[305,306,310],"a",{"href":307,"rel":308},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc7591",[309],"nofollow","RFC 7591","), PKCE, and audience-restricted tokens (",[305,313,316],{"href":314,"rel":315},"https:\u002F\u002Fwww.rfc-editor.org\u002Frfc\u002Frfc8707",[309],"RFC 8707",") — so any conforming client connects the same way.",[319,320,321],"warning",{},[211,322,323,326,327,330],{},[215,324,325],{},"Only an Owner or an Admin can authorize an application for a workspace."," The consent screen offers you only the workspaces where your role allows it; a Manager or an Agent cannot connect an assistant to the team's workspace. Authorizing without picking a workspace binds the token to your ",[215,328,329],{},"personal"," account instead.",[211,332,333,334,337,338,297],{},"Connecting itself needs no plan, and it keeps working on an expired subscription — but ",[215,335,336],{},"sending"," does not. See ",[305,339,341],{"href":340},"#limits","Limits",[220,343,345],{"id":344},"what-the-assistant-gets","What the assistant gets",[347,348,350],"h3",{"id":349},"one-workspace-fixed-at-consent","One workspace, fixed at consent",[211,352,353,354,360],{},"Everything the assistant sees belongs to the workspace you picked while authorizing. There is no tool to switch workspaces and no header it can send to change one: a request that tries answers ",[215,355,356,357],{},"403 — ",[51,358,359],{},"This access token is bound to a different workspace; re-authorize to switch."," A second workspace means a second authorization.",[347,362,364],{"id":363},"scope-is-a-ceiling-never-a-grant","Scope is a ceiling, never a grant",[211,366,367,368,371,372,376,377,380],{},"The effective permission of a token is the ",[215,369,370],{},"intersection"," of the scopes you approved and what ",[373,374,375],"em",{},"you"," can do in that workspace. Approving ",[51,378,379],{},"messages:send"," does not let an assistant send if your own role cannot; a scope only ever narrows.",[382,383,384,397],"table",{},[385,386,387],"thead",{},[388,389,390,394],"tr",{},[391,392,393],"th",{},"Scope",[391,395,396],{},"What the assistant can reach",[398,399,400,411,421,431,440,450],"tbody",{},[388,401,402,408],{},[403,404,405],"td",{},[51,406,407],{},"profile",[403,409,410],{},"Who authorized, and which workspace",[388,412,413,418],{},[403,414,415],{},[51,416,417],{},"connections:read",[403,419,420],{},"Your connections and their status, chats, message templates, number lookup",[388,422,423,428],{},[403,424,425],{},[51,426,427],{},"messages:read",[403,429,430],{},"Chat history, and the media of a received message",[388,432,433,437],{},[403,434,435],{},[51,436,379],{},[403,438,439],{},"Sending — every message type below, plus the typing indicator",[388,441,442,447],{},[403,443,444],{},[51,445,446],{},"webhooks:read",[403,448,449],{},"Your webhooks, the event catalogue, delivery attempts",[388,451,452,457],{},[403,453,454],{},[51,455,456],{},"webhooks:write",[403,458,459],{},"Creating, editing and deleting webhooks",[211,461,462,463,466],{},"You can always approve ",[215,464,465],{},"less"," than what was asked. Re-approving with fewer scopes revokes the tokens already issued to that integration, so the screen and reality never disagree.",[468,469,470],"note",{},[211,471,472,475,476,478],{},[51,473,474],{},"connections:write"," may appear on the consent screen as well, because it also satisfies \"read a connection\". No tool in this catalogue needs it — approving ",[51,477,417],{}," alone is enough.",[347,480,482],{"id":481},"it-knows-its-own-limits-before-it-tries","It knows its own limits before it tries",[211,484,485,486,489,490,492],{},"The handshake carries a paragraph assembled for ",[373,487,488],{},"that"," token: the tools this access can use, and the ones it cannot, by name. An assistant that already knows it lacks ",[51,491,456],{}," tells you so instead of spending a turn discovering it.",[211,494,495],{},"Tools out of scope stay listed on purpose. Hiding them would turn a refusal that names the missing scope into an unhelpful \"unknown tool\".",[220,497,499],{"id":498},"the-tools","The tools",[211,501,502],{},"Twenty-three tools. The cut is by domain, not by route — the helpdesk is out of scope by product decision.",[347,504,506],{"id":505},"orientation","Orientation",[382,508,509,521],{},[385,510,511],{},[388,512,513,516,518],{},[391,514,515],{},"Tool",[391,517,393],{},[391,519,520],{},"Connection",[398,522,523,537,550,564,577,591],{},[388,524,525,530,534],{},[403,526,527],{},[51,528,529],{},"get_workspace",[403,531,532],{},[51,533,407],{},[403,535,536],{},"any",[388,538,539,544,548],{},[403,540,541],{},[51,542,543],{},"list_connections",[403,545,546],{},[51,547,417],{},[403,549,536],{},[388,551,552,557,561],{},[403,553,554],{},[51,555,556],{},"check_whatsapp_number",[403,558,559],{},[51,560,417],{},[403,562,563],{},"QR only",[388,565,566,571,575],{},[403,567,568],{},[51,569,570],{},"list_chats",[403,572,573],{},[51,574,417],{},[403,576,563],{},[388,578,579,584,588],{},[403,580,581],{},[51,582,583],{},"list_message_templates",[403,585,586],{},[51,587,417],{},[403,589,590],{},"Official only",[388,592,593,598,602],{},[403,594,595],{},[51,596,597],{},"get_message_template",[403,599,600],{},[51,601,417],{},[403,603,590],{},[211,605,606,612,613,616,617,620,621,297],{},[215,607,608,609,611],{},"Start with ",[51,610,543],{},", always."," Every other tool needs a ",[51,614,615],{},"connectionId",", and it is the tool that reveals the connection's type — which decides whether a sending tool works at all. It reports ",[51,618,619],{},"canSend"," too, which is true only while the connection is ",[51,622,623],{},"open",[211,625,626,628,629,631],{},[51,627,556],{}," takes up to 50 numbers at once and returns the canonical id of each. ",[51,630,529],{}," tells the assistant which scopes it actually holds.",[347,633,635],{"id":634},"messaging","Messaging",[382,637,638,650],{},[385,639,640],{},[388,641,642,644,646,648],{},[391,643,515],{},[391,645,393],{},[391,647,520],{},[391,649],{},[398,651,652,668,683,698,713,728,743,758,774,790,805],{},[388,653,654,659,663,665],{},[403,655,656],{},[51,657,658],{},"send_whatsapp_message",[403,660,661],{},[51,662,379],{},[403,664,536],{},[403,666,667],{},"costs money",[388,669,670,675,679,681],{},[403,671,672],{},[51,673,674],{},"send_whatsapp_media",[403,676,677],{},[51,678,379],{},[403,680,536],{},[403,682,667],{},[388,684,685,690,694,696],{},[403,686,687],{},[51,688,689],{},"send_whatsapp_voice_note",[403,691,692],{},[51,693,379],{},[403,695,536],{},[403,697,667],{},[388,699,700,705,709,711],{},[403,701,702],{},[51,703,704],{},"send_whatsapp_sticker",[403,706,707],{},[51,708,379],{},[403,710,563],{},[403,712,667],{},[388,714,715,720,724,726],{},[403,716,717],{},[51,718,719],{},"send_whatsapp_template",[403,721,722],{},[51,723,379],{},[403,725,590],{},[403,727,667],{},[388,729,730,735,739,741],{},[403,731,732],{},[51,733,734],{},"send_whatsapp_list",[403,736,737],{},[51,738,379],{},[403,740,563],{},[403,742,667],{},[388,744,745,750,754,756],{},[403,746,747],{},[51,748,749],{},"send_whatsapp_buttons",[403,751,752],{},[51,753,379],{},[403,755,563],{},[403,757,667],{},[388,759,760,765,769,771],{},[403,761,762],{},[51,763,764],{},"set_typing_presence",[403,766,767],{},[51,768,379],{},[403,770,563],{},[403,772,773],{},"paid plan",[388,775,776,781,785,787],{},[403,777,778],{},[51,779,780],{},"list_chat_history",[403,782,783],{},[51,784,427],{},[403,786,536],{},[403,788,789],{},"—",[388,791,792,797,801,803],{},[403,793,794],{},[51,795,796],{},"download_message_media",[403,798,799],{},[51,800,427],{},[403,802,536],{},[403,804,789],{},[388,806,807,812,816,818],{},[403,808,809],{},[51,810,811],{},"prepare_media_upload",[403,813,814],{},[51,815,379],{},[403,817,536],{},[403,819,820],{},"opens a send",[211,822,823,824,827,828,831,832,835],{},"There is one tool per ",[215,825,826],{},"shape"," of message rather than one tool with a ",[51,829,830],{},"type"," field. A single schema with seven optional branches lets a model assemble a combination WhatsApp rejects — and that error arrives ",[373,833,834],{},"after"," the send was charged.",[347,837,16],{"id":838},"webhooks",[382,840,841,851],{},[385,842,843],{},[388,844,845,847,849],{},[391,846,515],{},[391,848,393],{},[391,850],{},[398,852,853,867,880,894,907,925],{},[388,854,855,860,864],{},[403,856,857],{},[51,858,859],{},"list_webhook_event_types",[403,861,862],{},[51,863,446],{},[403,865,866],{},"the catalogue, with a reliability note per event",[388,868,869,874,878],{},[403,870,871],{},[51,872,873],{},"list_webhooks",[403,875,876],{},[51,877,446],{},[403,879,789],{},[388,881,882,887,891],{},[403,883,884],{},[51,885,886],{},"list_webhook_deliveries",[403,888,889],{},[51,890,446],{},[403,892,893],{},"what Pingo actually tried to deliver",[388,895,896,901,905],{},[403,897,898],{},[51,899,900],{},"create_webhook",[403,902,903],{},[51,904,456],{},[403,906,789],{},[388,908,909,914,918],{},[403,910,911],{},[51,912,913],{},"update_webhook",[403,915,916],{},[51,917,456],{},[403,919,920,921,924],{},"destructive: the event list ",[215,922,923],{},"replaces",", it does not merge",[388,926,927,932,936],{},[403,928,929],{},[51,930,931],{},"delete_webhook",[403,933,934],{},[51,935,456],{},[403,937,938],{},"destructive",[220,940,942],{"id":941},"rules-that-fail-in-silence","Rules that fail in silence",[211,944,945],{},"Worth reading before you let an assistant loose: ignoring these produces no error at all, just a result nobody gets.",[319,947,948],{},[211,949,950,953,954,957,958,961,962],{},[215,951,952],{},"The connection type decides what is possible."," A ",[215,955,956],{},"QR"," connection sends stickers, lists, buttons and the typing indicator, checks whether a number exists on WhatsApp, and is the only kind that feeds a webhook with the full set of events. An ",[215,959,960],{},"Official"," connection (Meta's Cloud API) sends approved templates — the only way to start a conversation outside the 24-hour window — and does none of the above. A list or a set of buttons sent through the official channel ",[215,963,964],{},"arrives as plain text, with no buttons, and nobody gets an error.",[966,967,968,1001,1018,1033,1039,1056,1077,1111,1117,1129,1145],"ul",{},[969,970,971,974,975,978,979,982,983,986,987,986,990,986,993,996,997,1000],"li",{},[215,972,973],{},"An official connection feeds a webhook less."," Inbound messages (",[51,976,977],{},"messages.upsert",") and delivery updates (",[51,980,981],{},"messages.update",") do arrive there; ",[51,984,985],{},"send.message",", ",[51,988,989],{},"messages.delete",[51,991,992],{},"messages.edited",[51,994,995],{},"presence.update"," and ",[51,998,999],{},"connection.update"," never do. Subscribing to them on an official connection produces silence, not a rejection.",[969,1002,1003,1006,1007,996,1009,1011,1012,1014,1015,1017],{},[215,1004,1005],{},"Two events are accepted at registration and never delivered on any connection",": ",[51,1008,999],{},[51,1010,995],{},". ",[51,1013,859],{}," carries that truth per event, which is why an assistant should call it before creating a subscription. For connection status, poll ",[51,1016,543],{}," instead.",[969,1019,1020,1023,1024,1026,1027,996,1030,1032],{},[215,1021,1022],{},"A webhook with no connection linked never fires."," ",[51,1025,900],{}," requires at least one connection id — pass every id if you want the whole workspace. The webhook is created ",[373,1028,1029],{},"active",[51,1031,886],{}," comes back empty, which reads exactly like \"wrong event\".",[969,1034,1035,1038],{},[215,1036,1037],{},"Your endpoint will see the same event more than once."," Delivery times out at 10 seconds and is retried up to three times, one row logged per attempt. Make the endpoint idempotent; an endpoint that answers slower than 10 seconds guarantees duplicates.",[969,1040,1041,1044,1045,1048,1049,1052,1053,1055],{},[215,1042,1043],{},"Phone numbers travel as international digits only"," — ",[51,1046,1047],{},"5511999998888",", no ",[51,1050,1051],{},"+",", no spaces, no punctuation. For a number you have not messaged before, run ",[51,1054,556],{}," first and send the canonical id it returns rather than what the user typed.",[969,1057,1058,1065,1066,1069,1070,1072,1073,1076],{},[215,1059,1060,1061,1064],{},"Already-hosted media goes by public ",[51,1062,1063],{},"https"," URL; a local file goes by upload."," Base64 in the argument is not accepted, and that is not fussiness: once an image reached the assistant ",[373,1067,1068],{},"as an image",", it is no longer a string it can hand back — and when the bytes do exist, writing them would consume the whole reply (1 MB of file is ~1.4 million characters). For a file on the assistant's machine, ",[51,1071,811],{}," returns a single-use upload URL: it uploads the file with one ",[51,1074,1075],{},"curl -F 'file=@path'"," and the message is sent in that same request, without the bytes ever crossing its context. With no terminal available, the same URL lets you upload the file yourself.",[969,1078,1079,1082,1083,1086,1087,1090,1091,1094,1095,1098,1099,1102,1103,1106,1107,1110],{},[215,1080,1081],{},"The media type is a choice, and the contact sees different things."," An ",[215,1084,1085],{},"image"," shows in the bubble with the caption underneath; a ",[215,1088,1089],{},"video"," becomes a player with a thumbnail and plays inside the conversation; an ",[215,1092,1093],{},"audio"," is an attachment, with a play button and the file name beside it; a ",[215,1096,1097],{},"voice note"," is the round waveform bubble with 1x\u002F1.5x\u002F2x playback — what people mean by \"send an audio\"; a ",[215,1100,1101],{},"document"," is the card with an icon, file name and size that the contact downloads to open. Anything that is not an image, a video or an audio can only be a document. The assistant declares this type when it asks for the upload URL (or in ",[51,1104,1105],{},"mediatype",", when sending by URL) — it is ",[215,1108,1109],{},"not"," guessed from the file extension, precisely so a video does not arrive as a file card.",[969,1112,1113,1116],{},[215,1114,1115],{},"Sending costs the workspace money and cannot be undone."," The server instructions tell the assistant to confirm with you before sending, unless you already asked for that send in the conversation.",[969,1118,1119,1124,1125,1128],{},[215,1120,1121,1123],{},[51,1122,796],{}," gives up quietly on a big file."," Above roughly 750 KB it answers with no content and a note telling the assistant to open the file in Pingo — a ",[215,1126,1127],{},"success",", not an error. A client that only checks for failure will carry on with nothing in hand.",[969,1130,1131,1136,1137,1140,1141,1144],{},[215,1132,1133,1135],{},[51,1134,719],{}," fills positional text variables only."," A template whose ",[51,1138,1139],{},"parameterFormat"," is ",[51,1142,1143],{},"NAMED",", or that has a media header or a dynamic button, cannot be filled through this tool — that one is the HTTP API. Meta rejects the whole send when the name, language or parameter count do not match.",[969,1146,1147,1153,1154,1156],{},[215,1148,1149,1152],{},[51,1150,1151],{},"delay"," is in milliseconds and stops at 20000."," It blocks on the WhatsApp side; higher values time the request out ",[373,1155,834],{}," the message was accepted — an error for the assistant, a delivered message for the contact.",[220,1158,341],{"id":1159},"limits",[382,1161,1162,1170],{},[385,1163,1164],{},[388,1165,1166,1168],{},[391,1167],{},[391,1169],{},[398,1171,1172,1184,1196,1207,1219,1227,1235,1243,1251,1262,1271],{},[388,1173,1174,1177],{},[403,1175,1176],{},"Transport",[403,1178,1179,1180,1183],{},"Streamable HTTP, stateless, ",[51,1181,1182],{},"POST"," only",[388,1185,1186,1189],{},[403,1187,1188],{},"Rate limit, MCP endpoint",[403,1190,1191,1192,1195],{},"300 requests per minute, keyed by the ",[215,1193,1194],{},"credential"," rather than the IP",[388,1197,1198,1204],{},[403,1199,1200,1201],{},"Rate limit, ",[51,1202,1203],{},"\u002Fv3\u002Foauth\u002Ftoken",[403,1205,1206],{},"120 per minute, per IP",[388,1208,1209,1216],{},[403,1210,1200,1211,996,1213],{},[51,1212,279],{},[51,1214,1215],{},"\u002Fregister",[403,1217,1218],{},"15 per minute, per IP",[388,1220,1221,1224],{},[403,1222,1223],{},"Access token",[403,1225,1226],{},"valid for 1 hour",[388,1228,1229,1232],{},[403,1230,1231],{},"Refresh token",[403,1233,1234],{},"valid for 30 days, rotated on every use",[388,1236,1237,1240],{},[403,1238,1239],{},"Authorization code",[403,1241,1242],{},"valid for 60 seconds, single use",[388,1244,1245,1248],{},[403,1246,1247],{},"Message quota and text length",[403,1249,1250],{},"whatever your plan allows — the same limits the dashboard enforces",[388,1252,1253,1256],{},[403,1254,1255],{},"Media size",[403,1257,1258,1259,1261],{},"by URL, WhatsApp's own ceiling — Pingo has no bytes to measure and does not apply the plan's limit. By upload (",[51,1260,811],{},"), your plan's per-media-type limit applies",[388,1263,1264,1267],{},[403,1265,1266],{},"Paid plan required",[403,1268,1269,1183],{},[51,1270,764],{},[388,1272,1273,1276],{},[403,1274,1275],{},"Upload URL",[403,1277,1278],{},"single use, valid for 10 minutes",[211,1280,1281],{},"The MCP bucket is keyed by credential on purpose. A remote MCP client is not called by your browser: the calls come from the infrastructure hosting the model, out of a handful of egress IPs. Keyed by IP, one workspace would throttle another.",[319,1283,1284],{},[211,1285,1286,1287,1011,1291,996,1294,1297,1298,1301,1302,1305,1306,1308],{},"The MCP endpoint answers ",[215,1288,1289,1183],{},[51,1290,1182],{},[51,1292,1293],{},"GET",[51,1295,1296],{},"DELETE"," return ",[215,1299,1300],{},"405"," with ",[51,1303,1304],{},"Allow: POST",". The server is stateless, so there is no session for a streamed ",[51,1307,1293],{}," to receive; a client that opened one would hold a socket that never gets a message.",[220,1310,1312],{"id":1311},"what-it-deliberately-will-not-do","What it deliberately will not do",[382,1314,1315,1325],{},[385,1316,1317],{},[388,1318,1319,1322],{},[391,1320,1321],{},"Not exposed",[391,1323,1324],{},"Why",[398,1326,1327,1339,1347],{},[388,1328,1329,1332],{},[403,1330,1331],{},"Read or rotate a webhook's signing secret",[403,1333,1334,1335,1338],{},"That secret is what ",[215,1336,1337],{},"proves"," an event came from Pingo. In a tool it becomes the ability to forge signed events against your endpoint. Rotating it breaks verification in production the instant after, and nothing in a chat can update the other side.",[388,1340,1341,1344],{},[403,1342,1343],{},"Create, edit or delete a message template",[403,1345,1346],{},"It is connection configuration, not messaging, and a rejected template counts against your WhatsApp Business quality rating. Reading templates stays available — without it, sending one is impossible.",[388,1348,1349,1352],{},[403,1350,1351],{},"Anything in the helpdesk",[403,1353,1354],{},"Out of scope by product decision.",[211,1356,1357],{},"The first two live in the dashboard, where there is a person.",[220,1359,1361],{"id":1360},"when-something-goes-wrong","When something goes wrong",[211,1363,1364,1365,1368],{},"A tool that fails comes back as tool ",[215,1366,1367],{},"content",", readable, not as a protocol exception — so the assistant sees the reason and can correct course: ask you for another scope, warn you, try a different tool. Unexpected failures never leak detail; the stack and any database message stay in the log.",[382,1370,1371,1381],{},[385,1372,1373],{},[388,1374,1375,1378],{},[391,1376,1377],{},"Symptom",[391,1379,1380],{},"What it means",[398,1382,1383,1397,1407,1417,1428,1444],{},[388,1384,1385,1394],{},[403,1386,1387],{},[373,1388,1389,1390,1393],{},"\"This integration was not granted permission to use ",[51,1391,1392],{},"\u003Ctool>","\"",[403,1395,1396],{},"The token lacks a scope. The refusal names which ones; re-authorize the connector and approve them. If it repeats, check that your own role in the workspace has that permission — the token cannot exceed you.",[388,1398,1399,1404],{},[403,1400,1401],{},[373,1402,1403],{},"\"This workspace has no active plan, so it cannot send messages\"",[403,1405,1406],{},"Reading keeps working; sending does not.",[388,1408,1409,1414],{},[403,1410,1411],{},[373,1412,1413],{},"\"…reached its plan limit of N messages for the period\"",[403,1415,1416],{},"The quota, not the request. Retrying will not help.",[388,1418,1419,1425],{},[403,1420,1421,1424],{},[215,1422,1423],{},"403"," on every call, mentioning another workspace",[403,1426,1427],{},"The token is bound to the workspace chosen at consent. Re-authorize to switch.",[388,1429,1430,1437],{},[403,1431,1432,1301,1434],{},[215,1433,252],{},[51,1435,1436],{},"error=\"invalid_token\"",[403,1438,1439,1440,1443],{},"Expired, revoked, or issued for a different resource. The ",[51,1441,1442],{},"WWW-Authenticate"," header says which, and points at the metadata document to start over.",[388,1445,1446,1449],{},[403,1447,1448],{},"My webhook never fires",[403,1450,1451,1453],{},[51,1452,886],{}," says whether Pingo ever tried. An empty list is a subscription problem — wrong event, or an official connection. A list of 4xx\u002F5xx is your endpoint.",[220,1455,1457],{"id":1456},"building-your-own-client","Building your own client",[211,1459,1460],{},"If you are writing the client rather than using one, four details save an afternoon:",[966,1462,1463,1480,1498,1507],{},[969,1464,1465,1023,1472,1475,1476,1479],{},[215,1466,1467,1468,1471],{},"Ask for the ",[51,1469,1470],{},"refresh_token"," grant at registration.",[51,1473,1474],{},"grant_types"," omitted means ",[51,1477,1478],{},"authorization_code"," alone, and then no refresh token is ever issued — your connector stops working an hour later and needs a human again.",[969,1481,1482,1489,1490,1493,1494,1497],{},[215,1483,1484,1485,1488],{},"Send ",[51,1486,1487],{},"token_endpoint_auth_method: \"none\""," to be a public client."," Omitting the field creates a ",[215,1491,1492],{},"confidential"," client instead, which gets a ",[51,1495,1496],{},"client_secret"," shown exactly once and must send it on every token call.",[969,1499,1500,1506],{},[215,1501,1502,1503,297],{},"The first request needs ",[51,1504,1505],{},"Accept: application\u002Fjson, text\u002Fevent-stream"," The MCP transport requires it, even though this server always answers JSON.",[969,1508,1509,1516,1517,1520,1521,1524],{},[215,1510,1511,1512,1515],{},"The ",[51,1513,1514],{},"resource"," parameter scopes the token to a path."," A token minted for ",[51,1518,1519],{},"https:\u002F\u002Fapi.pingonotify.com\u002Fv3\u002Fmcp"," is accepted under ",[51,1522,1523],{},"\u002Fv3\u002Fmcp"," and rejected with 401 everywhere else in the API. Ask for the resource you actually intend to call.",[211,1526,1527,1530,1531,1534,1535,1538,1539,1542],{},[51,1528,1529],{},"prompt=consent"," forces the screen even when a live consent already covers the request; ",[51,1532,1533],{},"prompt=none"," never shows it and answers ",[51,1536,1537],{},"consent_required"," or ",[51,1540,1541],{},"login_required"," instead. Otherwise a repeat authorization can complete silently — but only when exactly one existing consent covers the scopes asked for, and your role still allows it.",[1544,1545,1546],"tip",{},[211,1547,1548,1549,1552,1553,1556,1557,297],{},"The authorization server describes itself at ",[51,1550,1551],{},"\u002F.well-known\u002Foauth-authorization-server",", and this endpoint's own metadata — including the exact list of scopes it uses — at ",[51,1554,1555],{},"\u002F.well-known\u002Foauth-protected-resource\u002Fv3\u002Fmcp",". Both are cached for five minutes and need no credential. For the credential model behind the rest of the API, see ",[305,1558,6],{"href":20},{"title":236,"searchDepth":1560,"depth":1560,"links":1561},3,[1562,1564,1569,1574,1575,1576,1577,1578],{"id":222,"depth":1563,"text":223},2,{"id":344,"depth":1563,"text":345,"children":1565},[1566,1567,1568],{"id":349,"depth":1560,"text":350},{"id":363,"depth":1560,"text":364},{"id":481,"depth":1560,"text":482},{"id":498,"depth":1563,"text":499,"children":1570},[1571,1572,1573],{"id":505,"depth":1560,"text":506},{"id":634,"depth":1560,"text":635},{"id":838,"depth":1560,"text":16},{"id":941,"depth":1563,"text":942},{"id":1159,"depth":1563,"text":341},{"id":1311,"depth":1563,"text":1312},{"id":1360,"depth":1563,"text":1361},{"id":1456,"depth":1563,"text":1457},"md",{},true,{"title":63,"description":64},"en\u002Fmcp","tRKYTruhKK6NXVVk00u_KK3kbGjx5kVc-ptVsJ-2tkU",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":1586},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m15 18l-6-6l6-6\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":1588},"\u003Cpath fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\" d=\"m9 18l6-6l-6-6\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":1590},"\u003Cpath fill=\"currentColor\" d=\"M256 512a256 256 0 1 0 0-512a256 256 0 1 0 0 512m-40-176h24v-64h-24c-13.3 0-24-10.7-24-24s10.7-24 24-24h48c13.3 0 24 10.7 24 24v88h8c13.3 0 24 10.7 24 24s-10.7 24-24 24h-80c-13.3 0-24-10.7-24-24s10.7-24 24-24m40-208a32 32 0 1 1 0 64a32 32 0 1 1 0-64\"\u002F>",{"left":160,"top":160,"width":166,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":1592},"\u003Cpath fill=\"currentColor\" d=\"M256 32c14.2 0 27.3 7.5 34.5 19.8l216 368c7.3 12.4 7.3 27.7.2 40.1S486.3 480 472 480H40c-14.3 0-27.6-7.7-34.7-20.1s-7-27.8.2-40.1l216-368C228.7 39.5 241.8 32 256 32m0 128c-13.3 0-24 10.7-24 24v112c0 13.3 10.7 24 24 24s24-10.7 24-24V184c0-13.3-10.7-24-24-24m32 224a32 32 0 1 0-64 0a32 32 0 1 0 64 0\"\u002F>",{"left":160,"top":160,"width":161,"height":161,"rotate":160,"vFlip":162,"hFlip":162,"body":1594},"\u003Cg fill=\"none\" stroke=\"currentColor\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-width=\"2\">\u003Crect width=\"14\" height=\"14\" x=\"8\" y=\"8\" rx=\"2\" ry=\"2\"\u002F>\u003Cpath d=\"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2\"\u002F>\u003C\u002Fg>",{"left":160,"top":160,"width":1596,"height":166,"rotate":160,"vFlip":162,"hFlip":162,"body":1597},384,"\u003Cpath fill=\"currentColor\" d=\"M272 384c9.6-31.9 29.5-59.1 49.2-86.2c5.2-7.1 10.4-14.2 15.4-21.4c19.8-28.5 31.4-63 31.4-100.3C368 78.8 289.2 0 192 0S16 78.8 16 176c0 37.3 11.6 71.9 31.4 100.3c5 7.2 10.2 14.3 15.4 21.4c19.8 27.1 39.7 54.4 49.2 86.2h160zm-80 128c44.2 0 80-35.8 80-80v-16H112v16c0 44.2 35.8 80 80 80m-80-336c0 8.8-7.2 16-16 16s-16-7.2-16-16c0-61.9 50.1-112 112-112c8.8 0 16 7.2 16 16s-7.2 16-16 16c-44.2 0-80 35.8-80 80\"\u002F>",1788888919985]