[{"name":"weaction_login","title":"WeAction Login","description":"Autentica na plataforma WeON.\n\nIMPORTANTE: Antes de autenticar, pergunte ao usuário:\n1. \"Você é agente, supervisor ou admin (acesso total)?\"\n\nMapeamento de roles:\n  - \"agent\"      → type: \"agent_member\"\n  - \"supervisor\" → type: \"supervisor\"\n  - \"admin\"      → type: null (acesso total)\n\nNAO pergunte org_unit_id antes do login — ele retorna automaticamente no response e e salvo.\norg_unit_id e org_unit_ids sao opcionais — omita-os ao chamar esta tool a menos que o usuario informe explicitamente.\n\nEndpoint: POST {base_url}/weaction-api/api/weon/v1/auth/login\nToken retornado no HEADER \"Authorization\" da resposta.\nSe retornar erro, NAO autentica e retorna a mensagem de erro.","inputSchema":{"type":"object","properties":{"base_url":{"type":"string","minLength":1,"description":"Base URL (ex: https://develop.weon.com.br) ou subdomain (ex: develop)"},"role":{"type":"string","enum":["agent","supervisor","admin"],"description":"Tipo de acesso: agent (atendente), supervisor, admin (acesso total)"},"identifier":{"type":"string","minLength":1,"description":"Identificador/login do usuário"},"password":{"type":"string","minLength":1,"description":"Senha"},"org_unit_id":{"type":"integer","description":"Opcional. ID da unidade organizacional — retorna automaticamente no response do login. So informe se o usuario fornecer explicitamente."},"org_unit_ids":{"type":"array","items":{"type":"integer"},"description":"Opcional. IDs de multiplas unidades para supervisor. So informe se o usuario fornecer explicitamente."}},"required":["base_url","role","identifier","password"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_auth_status","title":"WeAction Auth Status","description":"Verifica o status atual de autenticação. Não expõe o token.","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_init","title":"WeAction Init (Copilot)","description":"Inicializa a partir de uma sessão de browser já autenticada no WeON. Injeta token diretamente.","inputSchema":{"type":"object","properties":{"url":{"type":"string","minLength":1,"description":"Base URL (ex: https://develop.weon.com.br)"},"token":{"type":"string","minLength":1,"description":"Bearer token da sessão existente"}},"required":["url","token"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_set_token","title":"WeAction Set Token","description":"Injeta um Bearer token diretamente (override manual).","inputSchema":{"type":"object","properties":{"token":{"type":"string","minLength":1},"base_url":{"type":"string","description":"Base URL ou subdomain"}},"required":["token"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_logout","title":"WeAction Logout","description":"Remove o token da sessao. Base URL e preservada.","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_list_users","title":"WeAction List Users","description":"Lista os usuários (agentes) do WeON com status por canal (whatsapp, chat, voice).\nRetorna id, name, email e status por canal: \"available\" | \"busy\" (em atendimento) | \"pause (motivo)\" | \"offline\".\n\nArgs:\n  - user_id (string, opcional): filtra um único usuário pelo ID","inputSchema":{"type":"object","properties":{"user_id":{"type":"string","description":"Filter to a specific user ID"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_pause_user","title":"WeAction Pause User","description":"Put one or more users into pause state.\n\nArgs:\n  - user_ids (array of strings): IDs of users to pause\n  - pause_id (string, optional): ID of the pause type/reason\n\nReturns confirmation from the API.","inputSchema":{"type":"object","properties":{"user_ids":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Array of user IDs to pause"},"pause_id":{"type":"string","description":"Pause type ID (reason for pause)"}},"required":["user_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_unpause_user","title":"WeAction Unpause User","description":"Remove pause state from one or more users (make them available again).\n\nArgs:\n  - user_ids (array of strings): IDs of users to unpause\n\nReturns confirmation from the API.","inputSchema":{"type":"object","properties":{"user_ids":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Array of user IDs to unpause"}},"required":["user_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_disconnect_user","title":"WeAction Disconnect User","description":"Force disconnect one or more users from the WeON platform.\n\nArgs:\n  - user_ids (array of strings): IDs of users to disconnect\n\nReturns confirmation from the API.","inputSchema":{"type":"object","properties":{"user_ids":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Array of user IDs to disconnect"}},"required":["user_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_list_pauses","title":"WeAction List Pause Types","description":"List all configured pause types/reasons in the system.\n\nReturns pause id, name, and other configuration properties.","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_user_events","title":"WeAction User Events","description":"Retrieve pause, login, and attendance events for voice and WhatsApp channels.\n\nUseful for auditing agent activity, calculating time-in-state, and building reports.\n\nArgs:\n  - start_date (string, optional): Start date filter (YYYY-MM-DD hh:mm:ss)\n  - end_date (string, optional): End date filter (YYYY-MM-DD hh:mm:ss)\n  - user_ids (array of strings, optional): Filter by user IDs\n\nReturns array of event objects.","inputSchema":{"type":"object","properties":{"start_date":{"type":"string","description":"Start date (YYYY-MM-DD hh:mm:ss)"},"end_date":{"type":"string","description":"End date (YYYY-MM-DD hh:mm:ss)"},"user_ids":{"type":"array","items":{"type":"string"},"description":"Filter by user IDs"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_agent_status_times","title":"WeAction Agent Status Times","description":"Get time-based status listing for agents (CPJ integration).\n\nReturns detailed time breakdowns per agent status (available, busy, pause, offline).\nUseful for productivity and SLA reports.\n\nArgs:\n  - start_date (string, optional): Start date (YYYY-MM-DD hh:mm:ss)\n  - end_date (string, optional): End date (YYYY-MM-DD hh:mm:ss)\n\nReturns array of agent time objects.","inputSchema":{"type":"object","properties":{"start_date":{"type":"string","description":"Start date (YYYY-MM-DD hh:mm:ss)"},"end_date":{"type":"string","description":"End date (YYYY-MM-DD hh:mm:ss)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_jobs","title":"WeAction List Active Attendances (Jobs)","description":"Lista os atendimentos (jobs) ATIVOS de um agente, paginado.\nPOST /v1/agents/{agent_id}/jobs/active/paginated\n\nRetorna { agentId, attendances[], total, totalPages, currentPage, offset }; cada attendance traz id, protocol, channelAddress, contact, qualification, attendant, channel, group, campaign, type, times, status.\n\nArgs:\n  - agent_id (number, opcional): default = agente logado (JWT sub)\n  - channels (array, opcional): [\"voice\",\"chat\",\"whatsapp\"] (default: os 3)\n  - only_events (\"Y\"|\"N\", opcional): só com eventos (default \"Y\")\n  - only_unread (\"Y\"|\"N\", opcional): só não lidos (default \"N\")\n  - per_page (number, opcional, default 40) · offset (number, opcional, default 0)","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"Agent ID (defaults to logged-in agent)"},"channels":{"type":"array","items":{"type":"string","enum":["voice","chat","whatsapp"]},"description":"Channels filter (default: all)"},"only_events":{"type":"string","enum":["Y","N"],"description":"Only attendances with events (default \"Y\")"},"only_unread":{"type":"string","enum":["Y","N"],"description":"Only unread attendances (default \"N\")"},"per_page":{"type":"integer","minimum":1,"description":"Results per page (default 40)"},"offset":{"type":"integer","minimum":0,"description":"Pagination offset (default 0)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_job","title":"WeAction Start Attendance","description":"Start a new attendance (job) in the WeON system.\n\nArgs:\n  - contact_id (string): ID of the contact for this attendance\n  - group_id (string): ID of the attendance group (queue)\n  - channel (string): Channel for the attendance (voice, whatsapp, chat)\n  - user_id (string, optional): Assign to a specific agent\n  - campaign_id (string, optional): Associate with a campaign\n\nReturns the created job object.","inputSchema":{"type":"object","properties":{"contact_id":{"type":"string","minLength":1,"description":"Contact ID"},"group_id":{"type":"string","minLength":1,"description":"Attendance group ID"},"channel":{"type":"string","enum":["voice","whatsapp","chat"],"description":"Channel"},"user_id":{"type":"string","description":"Assign to specific agent (user ID)"},"campaign_id":{"type":"string","description":"Associate with campaign ID"}},"required":["contact_id","group_id","channel"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_end_job","title":"WeAction End Attendance (Voice)","description":"End/hang up an active voice attendance (job).\n\nArgs:\n  - job_id (string): ID of the job/attendance to end\n\nReturns confirmation from the API.","inputSchema":{"type":"object","properties":{"job_id":{"type":"string","minLength":1,"description":"Job/attendance ID to end"}},"required":["job_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_qualify_job","title":"WeAction Qualify/Register Attendance","description":"Register/qualify a completed attendance (tabulation).\n\nArgs:\n  - job_id (string): ID of the job/attendance to qualify\n  - qualification_id (string): ID of the qualification/disposition\n  - observation (string, optional): Free-text observation/note\n\nReturns confirmation from the API.","inputSchema":{"type":"object","properties":{"job_id":{"type":"string","minLength":1,"description":"Job/attendance ID"},"qualification_id":{"type":"string","minLength":1,"description":"Qualification/disposition ID"},"observation":{"type":"string","description":"Free-text observation"}},"required":["job_id","qualification_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_qualify_external_activity","title":"WeAction Qualify External Activity","description":"Qualify/register an external activity (non-platform attendance).\n\nUsed for registering activities that happened outside the WeON platform\n(e.g. face-to-face contact, physical documents, etc.).\n\nArgs:\n  - qualification_id (string): Qualification ID\n  - contact_id (string, optional): Contact ID\n  - observation (string, optional): Free-text observation\n\nReturns confirmation from the API.","inputSchema":{"type":"object","properties":{"qualification_id":{"type":"string","minLength":1,"description":"Qualification ID"},"contact_id":{"type":"string","description":"Contact ID"},"observation":{"type":"string","description":"Free-text observation"}},"required":["qualification_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_abrir_atendimento_ativo","title":"WeAction Abrir Atendimento Ativo (fast job)","description":"Abre um atendimento ATIVO para o agente (o botão de atendimento rápido da tela).\nPOST /v1/job/whatsapp/active-job · POST /v1/job/voice/active-job\n\nFLUXO OBRIGATÓRIO (não invente ids):\n  1. weaction_list_agent_attendance_groups: escolha o grupo/fila do agente;\n  2. do grupo pegue campaign_whatsapp_id (whatsapp) OU campaign_voice_id (voz) e passe em campaign_id;\n  3. chame com o telefone do contato.\nContato já cadastrado: passe contact_id (e/ou contact_identifier) para ligar à ficha certa.\n\nRECUSAS da API (repasse ao usuário e NÃO insista): alreadyInAttendance (contato já em atendimento), alreadyInInbox (conversa já na caixa), agentWhatsappOffline (WhatsApp do agente offline), clientOnBot (cliente em fluxo de bot), pause (agente em pausa).\n\nArgs:\n  - channel (string): \"whatsapp\" ou \"voice\"\n  - phone (string): telefone do contato (com ou sem máscara)\n  - campaign_id (number): campanha do grupo (whatsapp ou voz, conforme o canal)\n  - contact_id (number, opcional) · contact_identifier (string, opcional)\n  - international (boolean, opcional): true = NÃO prefixa 55 (fora do Brasil)\n  - agent_id (number, opcional): default = agente do token","inputSchema":{"type":"object","properties":{"channel":{"type":"string","enum":["whatsapp","voice"],"description":"Canal do atendimento"},"phone":{"type":"string","minLength":8,"description":"Telefone do contato"},"campaign_id":{"type":"integer","description":"campaign_whatsapp_id ou campaign_voice_id do grupo"},"contact_id":{"type":"integer","description":"ID do contato, se já cadastrado"},"contact_identifier":{"type":"string","description":"Identificador do contato"},"international":{"type":"boolean","description":"true = não prefixa 55"},"agent_id":{"type":"integer","description":"Agente (default: token)"}},"required":["channel","phone","campaign_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_contact_history","title":"WeAction Histórico do Contato (jornada)","description":"Histórico de atendimentos/atividades de um contato (timeline), agrupado por data.\nGET /v1/contacts/history\n\nItem: protocol, channel, agent_name, qualify_path, attendanceGroupName, init_date/final_date, attendance_type. USE para avaliar a jornada do contato (risco/oportunidade/etapa de relacionamento). Para LER a conversa de um atendimento, use weaction_conversation_messages(protocol).\n\nArgs:\n  - contact_identifier (string): identificador do contato (NÃO é o id; vem do contato/carteira)\n  - org_unit_id (number, opcional): default = do contexto\n  - initial_date / final_date (\"YYYY-MM-DD\", opcionais; default: últimos 90 dias)\n  - channel (string, opcional): filtrar canal\n  - page (number, opcional, default 1)","inputSchema":{"type":"object","properties":{"contact_identifier":{"type":"string","minLength":1,"description":"Identificador do contato"},"org_unit_id":{"type":"integer"},"initial_date":{"type":"string","description":"YYYY-MM-DD"},"final_date":{"type":"string","description":"YYYY-MM-DD"},"channel":{"type":"string"},"page":{"type":"integer"}},"required":["contact_identifier"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_conversation_messages","title":"WeAction Mensagens da Conversa (transcrição)","description":"Mensagens trocadas em um atendimento (transcrição da conversa).\nGET /v1/job/{protocol}/messages\n\nCada mensagem: created_at, from, to, message_type, message (texto), status.\nUSE para LER o teor da conversa e avaliar sentimento, risco, oportunidade ou resumir.\nPegue o 'protocol' do weaction_contact_history.\n\nArgs:\n  - protocol (string|number): protocolo do atendimento","inputSchema":{"type":"object","properties":{"protocol":{"type":["string","number"],"description":"Protocolo do atendimento"}},"required":["protocol"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_search_contacts","title":"WeAction Buscar Contatos (nome/telefone/whatsapp)","description":"Busca contatos por nome, TELEFONE ou WhatsApp (full_search) OU lista os CONTATOS DE UMA EMPRESA (employer_id).\nGET /v1/contacts?full_search={termo} | GET /v1/contacts?employerId={id}\n\nUSE para ENCONTRAR/RESOLVER um contato citado pelo usuário; funciona por NOME e por NÚMERO (weaction_contact_filters_list filtra só por nome). Retorna id/identifier para usar em weaction_contact_history, weaction_create_task, etc.\nEMPRESA \"SEM CANAL\"? Antes de declarar isso, passe employer_id, liste os contatos vinculados (telefone/e-mail) e SUGIRA o melhor: quem tem WhatsApp cadastrado e mais histórico.\n\nArgs:\n  - full_search (string, opcional quando employer_id vier): nome, telefone ou whatsapp. Ex.: \"João\" ou \"5568985457736\"\n  - employer_id (number, opcional): contatos DESSA empresa (canal/telefone/e-mail)\n  - org_unit (number, opcional): default = do contexto\n  - per_page (opcional, default 20), page (opcional, default 1)","inputSchema":{"type":"object","properties":{"full_search":{"type":"string","description":"Nome, telefone ou whatsapp do contato"},"employer_id":{"type":"integer","description":"ID da empresa — lista os contatos vinculados a ela (p/ achar canal/contato principal)"},"agent_id":{"type":"integer","description":"ID do agente (default: logado)"},"per_page":{"type":"integer"},"page":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_contact","title":"WeAction Criar Contato","description":"Cria um contato no WeON (mesmo cadastro da tela de contatos).\nPOST /v3/contacts/create\n\nANTES de criar: busque (weaction_search_contacts) para não duplicar; se o identificador já existir a API responde 409 e nada é criado.\n\nArgs:\n  - name (string): nome completo\n  - phone (string, opcional): telefone só dígitos (canal de voz)\n  - whatsapp (string, opcional): com DDI (ex.: 5541999998888)\n  - email (string, opcional)\n  - identifier (string, opcional): identificador único; gerado se omitido\n  - employer_id (number, opcional): vincula a uma EMPRESA existente\n  - carteirizar (boolean, opcional): true = entra na carteira do agente logado\n  - details (object, opcional): campos customizados da unidade (coluna: valor)\n\nRetorna {id, name} do contato criado.","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Nome completo"},"phone":{"type":"string","description":"Telefone, só dígitos"},"whatsapp":{"type":"string","description":"WhatsApp com DDI (55...)"},"email":{"type":"string","description":"E-mail"},"identifier":{"type":"string","description":"Identificador único (gerado se omitido)"},"employer_id":{"type":"integer","description":"ID da empresa p/ vincular"},"carteirizar":{"type":"boolean","description":"true = entra na carteira do agente logado"},"details":{"type":"object","additionalProperties":{},"description":"Campos customizados (coluna: valor)"}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_update_contact","title":"WeAction Atualizar Contato","description":"Atualiza um contato (nome, telefone, WhatsApp, e-mail, EMPRESA vinculada, carteirização, campos customizados).\nPOST /v3/contacts/update\n\nLocaliza pelo IDENTIFICADOR (contact_identifier, do weaction_search_contacts; NÃO é o id numérico).\n\nArgs:\n  - identifier (string): contact_identifier do contato\n  - name/phone/whatsapp/email (opcionais): novos valores\n  - employer_id (number, opcional): vincula/troca a EMPRESA\n  - carteirizar_para (number, opcional): agent_id que assume o contato\n  - details (object, opcional): campos customizados (coluna: valor)","inputSchema":{"type":"object","properties":{"identifier":{"type":"string","minLength":1,"description":"contact_identifier (não o id numérico)"},"name":{"type":"string","description":"Novo nome"},"phone":{"type":"string","description":"Novo telefone (só dígitos)"},"whatsapp":{"type":"string","description":"Novo WhatsApp com DDI"},"email":{"type":"string","description":"Novo e-mail"},"employer_id":{"type":"integer","description":"ID da empresa p/ vincular"},"carteirizar_para":{"type":"integer","description":"agent_id que assume o contato"},"details":{"type":"object","additionalProperties":{},"description":"Campos customizados"}},"required":["identifier"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_create_multiple_contacts","title":"WeAction Create Multiple Contacts","description":"Bulk create multiple contacts in a single request.\n\nArgs:\n  - contacts (array): Array of contact objects, each with:\n    - name (string, required): Contact name\n    - phone (string, optional): Phone number\n    - email (string, optional): Email\n    - channel_addresses (object, optional): Channel addresses\n    - details (object, optional): Custom fields\n\nReturns array of created contact results.","inputSchema":{"type":"object","properties":{"contacts":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Contact name"},"phone":{"type":"string"},"email":{"type":"string"},"channel_addresses":{"type":"object","additionalProperties":{"type":"string"}},"details":{"type":"object","additionalProperties":{}}},"required":["name"],"additionalProperties":false},"minItems":1,"description":"Array of contacts to create"}},"required":["contacts"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_list_groups","title":"WeAction List Groups","description":"List all attendance groups (queues) configured in the WeON system.\n\nReturns group id, name, channel, and current queue metrics.","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_agent_attendance_groups","title":"WeAction Grupos de Atendimento do Agente","description":"Lista os grupos/filas de atendimento de UM agente.\nGET /v1/attendance-group/agent?agent={id}\nGrupo: id, name, channel (voice/whatsapp/chat), broadcastEnabled.\n\nUSE para descobrir o attendanceGroupId ao montar CAMPANHA/lista de transmissão (weaction_create_whatsapp_broadcast). only_whatsapp_broadcast=true retorna APENAS os grupos válidos para broadcast (channel='whatsapp' E broadcastEnabled=true, o mesmo filtro da UI); o attendanceGroupId DEVE ser um desses.\n\nArgs:\n  - agent_id (number, opcional): default = agente logado\n  - only_whatsapp_broadcast (boolean, opcional): só grupos WhatsApp com broadcast habilitado","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente (default: logado, via JWT)"},"only_whatsapp_broadcast":{"type":"boolean","description":"Só grupos WhatsApp com broadcast habilitado"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_group","title":"WeAction Create Group","description":"Create a new attendance group (queue) in the WeON system.\n\nArgs:\n  - name (string): Group name\n  - channel (string, optional): Associated channel (voice, whatsapp, chat)\n  - description (string, optional): Group description\n\nReturns the created group object.","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Group name"},"channel":{"type":"string","enum":["voice","whatsapp","chat"],"description":"Channel"},"description":{"type":"string","description":"Group description"}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_queue_abandonment_events","title":"WeAction Queue Abandonment Events","description":"Retrieve raw queue abandonment events — contacts who left the queue before being served.\n\nUseful for calculating abandonment rate, average wait time before abandon, and SLA impact.\n\nArgs:\n  - start_date (string, optional): Start date (YYYY-MM-DD hh:mm:ss)\n  - end_date (string, optional): End date (YYYY-MM-DD hh:mm:ss)\n  - groups (array of strings, optional): Filter by group IDs\n\nReturns array of queue abandonment event objects.","inputSchema":{"type":"object","properties":{"start_date":{"type":"string","description":"Start date (YYYY-MM-DD hh:mm:ss)"},"end_date":{"type":"string","description":"End date (YYYY-MM-DD hh:mm:ss)"},"groups":{"type":"array","items":{"type":"string"},"description":"Filter by group IDs"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_campaigns","title":"WeAction List Voice Campaigns","description":"List all voice campaigns configured in the WeON system.\n\nReturns campaign id, name, type, status, and configuration details.","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_mailing","title":"WeAction List Mailing (Voice Campaign)","description":"List mailings for a specific voice campaign (group type).\n\nArgs:\n  - campaign_id (string): Campaign ID\n\nReturns array of mailing objects.","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","minLength":1,"description":"Campaign ID"}},"required":["campaign_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_mailing","title":"WeAction Create Mailing (Voice Campaign - Group)","description":"Create a new mailing list for a voice group campaign.\n\nArgs:\n  - campaign_id (string): Campaign ID\n  - name (string): Mailing name\n  - description (string, optional): Description\n\nReturns the created mailing object.","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","minLength":1,"description":"Campaign ID"},"name":{"type":"string","minLength":1,"description":"Mailing name"},"description":{"type":"string","description":"Mailing description"}},"required":["campaign_id","name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_create_mailing_telemensagem","title":"WeAction Create Mailing (URA/Audio Campaign)","description":"Create a new mailing for a URA or audio/telemensagem campaign.\n\nArgs:\n  - campaign_id (string): Campaign ID\n  - name (string): Mailing name\n  - description (string, optional): Description\n\nReturns the created mailing object.","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","minLength":1,"description":"Campaign ID"},"name":{"type":"string","minLength":1,"description":"Mailing name"},"description":{"type":"string"}},"required":["campaign_id","name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_add_contacts_to_mailing","title":"WeAction Add Contacts to Mailing (Voice Campaign)","description":"Add contacts to a mailing list in a voice group campaign.\n\nArgs:\n  - campaign_id (string): Campaign ID\n  - mailing_id (string): Mailing ID\n  - contacts (array): Array of contact objects to add\n  - campaign_type (string): \"group\" for group campaigns or \"telemensagem\" for URA/audio\n\nReturns confirmation from the API.","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","minLength":1,"description":"Campaign ID"},"mailing_id":{"type":"string","minLength":1,"description":"Mailing ID"},"contacts":{"type":"array","items":{"type":"object","additionalProperties":{}},"minItems":1,"description":"Contacts to add"},"campaign_type":{"type":"string","enum":["group","telemensagem"],"default":"group","description":"Campaign type: 'group' or 'telemensagem'"}},"required":["campaign_id","mailing_id","contacts"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_remove_contacts_from_mailing","title":"WeAction Remove Contacts from Mailing","description":"Remove contacts from a mailing list in a voice campaign.\n\nArgs:\n  - campaign_id (string): Campaign ID\n  - mailing_id (string): Mailing ID\n  - contact_ids (array of strings): Contact IDs to remove\n\nReturns confirmation from the API.","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","minLength":1},"mailing_id":{"type":"string","minLength":1},"contact_ids":{"type":"array","items":{"type":"string"},"minItems":1,"description":"Contact IDs to remove"}},"required":["campaign_id","mailing_id","contact_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_dialer_logs","title":"WeAction Dialer Logs","description":"Retrieve dialer (auto-dialer) event logs from voice campaigns.\n\nUseful for analyzing dialer performance, connection rates, and campaign results.\n\nArgs:\n  - start_date (string, optional): Start date (YYYY-MM-DD hh:mm:ss)\n  - end_date (string, optional): End date (YYYY-MM-DD hh:mm:ss)\n  - campaign_id (string, optional): Filter to a specific campaign\n\nReturns array of dialer log events.","inputSchema":{"type":"object","properties":{"start_date":{"type":"string"},"end_date":{"type":"string"},"campaign_id":{"type":"string","description":"Filter to specific campaign"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_whatsapp_campaigns","title":"WeAction List WhatsApp Campaigns","description":"List all WhatsApp mass-send campaigns configured in the WeON system.","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_whatsapp_mailing","title":"WeAction List WhatsApp Campaign Mailing","description":"List mailings for a specific WhatsApp campaign.\n\nArgs:\n  - campaign_id (string): WhatsApp campaign ID","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","minLength":1,"description":"WhatsApp campaign ID"}},"required":["campaign_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_whatsapp_broadcast","title":"WeAction WhatsApp Broadcast (Lista de Transmissão)","description":"Dispara LISTA DE TRANSMISSÃO / campanha em lote de WhatsApp. POST /v1/broadcast/whatsapp\nUse ESTA tool para \"campanha\", \"lista de transmissão\", \"enviar em lote\". NÃO use weaction_create_whatsapp_mailing (outro fluxo, exige campaign_id).\nObrigatórios (422 se faltarem): template_id (template aprovado; descubra com weaction_list_whatsapp_campaigns), attendance_group_id (grupo/fila; weaction_list_groups), contacts (cada um com contactId e contactWhatsAppIdentifier).\n\nArgs:\n- name (string): nome da lista\n- message (string): texto da mensagem (template message)\n- template_id (number)\n- attendance_group_id (number)\n- contacts (array): [{ contactId, contactWhatsAppIdentifier, contactName?, contactIdentifier?, disabled? }]\n- media_url (string|null, opcional): URL de mídia\n- agent_id (string, opcional): default = agente logado","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Nome da lista de transmissão"},"message":{"type":"string","minLength":1,"description":"Texto da mensagem (template message)"},"template_id":{"type":"integer","description":"ID do template de WhatsApp (obrigatório)"},"attendance_group_id":{"type":"integer","description":"ID do grupo/fila de atendimento (obrigatório)"},"contacts":{"type":"array","items":{"type":"object","properties":{"contactId":{"type":"integer","description":"ID interno do contato"},"contactWhatsAppIdentifier":{"type":"string","minLength":1,"description":"Número WhatsApp, ex.: 5511986824466"},"contactName":{"type":"string"},"contactIdentifier":{"type":"string"},"disabled":{"type":"boolean"}},"required":["contactId","contactWhatsAppIdentifier"],"additionalProperties":false},"minItems":1,"description":"Contatos da transmissão"},"media_url":{"type":["string","null"],"description":"URL de mídia (opcional)"},"agent_id":{"type":"string","description":"ID do agente (default: logado)"}},"required":["name","message","template_id","attendance_group_id","contacts"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_list_whatsapp_broadcasts","title":"WeAction Listar Transmissões + status (lido/respondeu)","description":"Lista as transmissões (campanhas) de WhatsApp do agente COM status de cada envio.\nGET /v1/broadcast/whatsapp/agent/{agent_id}\nStatus por contato: QUEUED, SENDING, SENT, DELIVERED, READ (lido), ANSWERED (respondeu), ERROR_* (falhas: sessão expirada, sem opt-in, etc.).\nUSE para \"quantos leram / responderam / falharam\" numa campanha.\n\nArgs:\n- broadcast_id (number, opcional): filtra uma transmissão\n- summarize (boolean, opcional, default true): contagem por status (enxuto); false = payload completo (pode truncar)\n- agent_id (number, opcional): default = agente logado","inputSchema":{"type":"object","properties":{"broadcast_id":{"type":"integer","description":"Filtra uma transmissão específica"},"summarize":{"type":"boolean","description":"Resumo por status (default true)"},"agent_id":{"type":"integer","description":"ID do agente (default: logado)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_search_broadcast_contacts","title":"WeAction Buscar Contatos p/ Transmissão","description":"Busca contatos do agente para montar a lista de uma CAMPANHA/transmissão.\nGET /v1/contacts?agent={agent_id}&name={query}&broadcast=false\nRetorna cada contato JÁ no formato de weaction_create_whatsapp_broadcast ({ contactId, contactWhatsAppIdentifier, contactName, contactIdentifier }): use direto no campo 'contacts'.\n\nArgs:\n- query (string): termo de busca (nome do contato)\n- agent_id (number, opcional): default = agente logado","inputSchema":{"type":"object","properties":{"query":{"type":"string","minLength":1,"description":"Termo de busca (nome do contato)"},"agent_id":{"type":"integer","description":"ID do agente (default: logado)"}},"required":["query"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_whatsapp_templates","title":"WeAction Templates de WhatsApp (Gupshup) — inventário com status","description":"INVENTARIA os templates de WhatsApp cadastrados, COM status de aprovação da Meta e categoria.\n\n- CHAME ANTES de propor criar qualquer template. Criar é a ÚLTIMA opção: REUSE um APROVADO que sirva à intenção; só proponha criar quando NENHUM aprovado servir, e diga o motivo.\n- Sem attendance_group_id → inventário da UNIDADE inteira (GET /v1/campaign-whatsapp/load-whatsapp-templates/{org}). Com attendance_group_id → templates da fila (GET /v1/gupshup/templates/group/{id}), aprovados primeiro.\n- Cada item: template_id (valor a usar em broadcast/envio), name, message (o texto; julgue se serve), categoria (MARKETING/UTILITY/AUTHENTICATION), status (APPROVED/PENDING/REJECTED), aprovado (bool), motivo_recusa. O resumo traz 'aprovados' (usáveis AGORA): NÃO afirme \"não há template aprovado\" sem ter chamado esta tool e visto aprovados=0.\n- AMPLIAÇÃO AUTOMÁTICA: fila com aprovados=0 → resposta traz 'na_unidade' com os aprovados da UNIDADE não vinculados à fila. Se 'na_unidade' vier preenchido, é PROIBIDO dizer que não há template aprovado e propor criar um novo: ofereça vincular um existente à fila ou disparar por fila que já o tenha (criar = esperar até 48h da Meta por algo que já existe).\n- Fluxo de campanha: (1) weaction_list_agent_attendance_groups(only_whatsapp_broadcast=true) → attendance_group_id; (2) ESTA tool com esse grupo → template_id; (3) weaction_create_whatsapp_broadcast.\n\nArgs:\n- attendance_group_id (number, OPCIONAL): ID do grupo/fila. OMITA para inventariar a unidade toda.","inputSchema":{"type":"object","properties":{"attendance_group_id":{"type":"integer","description":"ID do grupo/fila. OMITA para inventariar os templates da unidade inteira."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_whatsapp_mailing","title":"WeAction Create WhatsApp Mailing","description":"Create a mailing list for a WhatsApp campaign.\n\nArgs:\n  - campaign_id (string): WhatsApp campaign ID\n  - name (string): Mailing name","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","minLength":1},"name":{"type":"string","minLength":1,"description":"Mailing name"}},"required":["campaign_id","name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_add_contact_to_whatsapp_mailing","title":"WeAction Add Contact to WhatsApp Mailing","description":"Add a contact to a WhatsApp campaign mailing list.\n\nArgs:\n  - campaign_id (string): WhatsApp campaign ID\n  - mailing_id (string): Mailing ID\n  - contact (object): Contact data to add","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","minLength":1},"mailing_id":{"type":"string","minLength":1},"contact":{"type":"object","additionalProperties":{},"description":"Contact data to add"}},"required":["campaign_id","mailing_id","contact"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_remove_contact_from_whatsapp_mailing","title":"WeAction Remove Contact from WhatsApp Mailing","description":"Remove a contact from a WhatsApp campaign mailing list.\n\nArgs:\n  - campaign_id (string): Campaign ID\n  - mailing_id (string): Mailing ID\n  - contact_id (string): Contact ID to remove","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"string","minLength":1},"mailing_id":{"type":"string","minLength":1},"contact_id":{"type":"string","minLength":1,"description":"Contact ID to remove"}},"required":["campaign_id","mailing_id","contact_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_send_whatsapp_message","title":"WeAction Enviar Mensagem WhatsApp (janela aberta)","description":"Envia mensagem de WhatsApp 1:1 pelo MESMO caminho do chat do app (v1 /whatsapp/messages).\nSÓ FUNCIONA com a janela de 24h ABERTA (atendimento aberto com sessão ativa) — fora da\njanela use weaction_send_whatsapp_template (motor de campanha). Confirme a janela com\nweaction_acionamento_recomendado ou weaction_whatsapp_janela ANTES.\nSEMPRE confirme o texto com o usuário antes de enviar.\n\nArgs:\n  - to (string): telefone do contato com DDI (ex 5511999999999)\n  - message (string): texto da mensagem\n  - agent_id (string, opcional): ID do atendente remetente; default = usuário logado\n  - contact_id (number, opcional): ID do contato (rastreabilidade)","inputSchema":{"type":"object","properties":{"to":{"type":"string","minLength":1,"description":"Telefone com DDI (ex 5511999999999)"},"message":{"type":"string","minLength":1,"description":"Texto da mensagem"},"agent_id":{"type":"string","description":"ID do atendente remetente (default: logado)"},"contact_id":{"type":"integer","description":"ID do contato (opcional)"}},"required":["to","message"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_whatsapp_janela","title":"WeAction Janela 24h do Contato (como o app verifica)","description":"Verifica a JANELA de 24h de um contato pelo MESMO protocolo do app: atendimento\nABERTO + check-active-sessions. Janela ABERTA = pode mensagem livre (1:1); FECHADA ou sem\natendimento aberto = só template via campanha (weaction_send_whatsapp_template).\nPOST v1 /attendances/search + POST v1 /job/whatsapp/check-active-sessions\n\nSEMPRE que o contexto da tela trouxer \"protocolo=\" (atendimento em foco), PASSE-O em\nprotocol — é o caminho INSTANTÂNEO (zero busca). Junto, passe contato (id) do contexto.\nNUNCA tente descobrir o contato varrendo dados fora do foco da tela/carteira.\n\nArgs:\n  - protocol (string, opcional): protocolo do atendimento EM FOCO (do contexto da tela) — preferencial\n  - phone (string, opcional): telefone do contato com DDI\n  - contato (string, opcional): nome OU id do contato — resolvo a ficha (id) ou o\n    atendimento aberto. Passe pelo menos um dos três.","inputSchema":{"type":"object","properties":{"protocol":{"type":"string","description":"Protocolo do atendimento em foco (contexto da tela) — preferencial"},"phone":{"type":"string","description":"Telefone com DDI (se souber)"},"contato":{"type":"string","description":"Nome ou id do contato — resolvo o telefone pela ficha/atendimento"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_start_bot_flow","title":"WeAction Start Bot Flow","description":"Trigger the start of a bot attendance flow for a contact on WhatsApp.\n\nUsed to proactively initiate a bot conversation with a contact.\n\nArgs:\n  - phone (string): Contact phone number (with country code)\n  - bot_id (string, optional): Specific bot ID to trigger\n  - group_id (string, optional): Attendance group to route to after bot\n\nReturns confirmation and the created attendance session.","inputSchema":{"type":"object","properties":{"phone":{"type":"string","minLength":1,"description":"Contact phone number with country code"},"bot_id":{"type":"string","description":"Bot ID to trigger"},"group_id":{"type":"string","description":"Group to route after bot completion"}},"required":["phone"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_whatsapp_message_status","title":"WeAction WhatsApp Message Status","description":"Check the delivery status of sent WhatsApp messages.\n\nQueries the queue-events endpoint to get current status (sent, delivered, read, failed).\n\nArgs:\n  - message_id (string, optional): Specific message ID to check\n  - start_date (string, optional): Start date for status query (YYYY-MM-DD hh:mm:ss)\n  - end_date (string, optional): End date for status query\n\nReturns array of message status events.","inputSchema":{"type":"object","properties":{"message_id":{"type":"string","description":"Specific message ID"},"start_date":{"type":"string","description":"Start date (YYYY-MM-DD hh:mm:ss)"},"end_date":{"type":"string","description":"End date"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_whatsapp_history","title":"WeAction WhatsApp Attendance History","description":"Retrieve the full message history for a WhatsApp attendance by protocol number.\n\nReturns all messages exchanged during the attendance, including timestamps, direction\n(inbound/outbound), media attachments, and agent/bot info.\n\nArgs:\n  - protocol (string): Attendance protocol number\n\nReturns array of message objects for the attendance.\n\nREGRA DURA: UMA chamada por protocolo e suficiente. Nao alterne com conversation_messages/list_conversation_logs em busca do mesmo dado.","inputSchema":{"type":"object","properties":{"protocol":{"type":"string","minLength":1,"description":"Attendance protocol number"}},"required":["protocol"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_whatsapp_template","title":"WeAction Criar Template WhatsApp (HSM) — submete à Meta","description":"CRIA template HSM no WeON e SUBMETE à aprovação da Meta via Gupshup.\nPOST /v1/whatsapp-templates/{supervisor}/create — mesmo fluxo da tela \"Nova mensagem\".\n\nESCRITA REAL: só chame após o usuário aprovar o kit (nome, categoria, corpo, exemplo,\nbotões). NUNCA diga que criou/registrou sem SUCESSO desta tool. Criado = PENDENTE na\nMeta (minutos até 48h), inutilizável até aprovar — acompanhe com\nweaction_list_whatsapp_templates.\n\nVARIÁVEL = NOME DO CAMPO DO CADASTRO: {{fullname}}, {{agentfirstname}}, {{revenue}}.\nNÃO use posicional {{1}}/{{2}}: o WeOn preenche por NOME de campo; posicional sai\nVAZIO no cliente. A tool recusa posicional. A conversão pro formato da Meta\n(messageParsed com {{1}} na ordem) é AUTOMÁTICA — não faça à mão.\n\nPráticas (skill weon_templates_hsm): exemplo com valores preenchidos; categoria\nhonesta; cheque templates existentes antes (variante quase idêntica é rejeitada).\n\nCATEGORIA (a Meta decide, não nós): reabrir conversa, reengajar, \"sentimos sua falta\",\nconvite e oferta = MARKETING. UTILITY só transação/solicitação EM ANDAMENTO do próprio\ncliente (status de pedido, confirmação de agendamento, fatura, código). Reengajamento\ncomo utility = Meta reclassifica/rejeita (INCORRECT_CATEGORY).\n\nArgs:\n  - nome (string): elementName snake_case minúsculo (ex: retencao_retorno_pendente)\n  - categoria (string): marketing | utility | authentication\n  - corpo (string): texto com variáveis NOMEADAS, ex. \"Olá, {{fullname}}.\" (máx 1024;\n    chave simples {fullname} é aceita e normalizada)\n  - exemplo (string): o corpo com as variáveis PREENCHIDAS (obrigatório p/ aprovação)\n  - org_unit_id (number, opcional): default do contexto\n  - route_id (number): NÃO INFORME — o sistema resolve a 1ª rota Gupshup apta da\n    unidade; rota sem app de parceiro é trocada pela apta com aviso. NUNCA pergunte a\n    rota ao usuário nem bloqueie por causa dela.\n  - rodape (string, opcional): footer curto\n  - botoes (string[], opcional): até 3 rótulos de RESPOSTA RÁPIDA (≤20 chars cada)\n  - nome_exibicao (string, opcional): nome do preset no WeON (default = nome)\n  - attendance_group_ids (number[]): NÃO INFORME — a tool vincula às filas de WhatsApp\n    aptas do atendente; template sem fila não aparece na tela (nasce inutilizável).\n  - supervisor (string, opcional): login do supervisor (default = identidade da sessão)","inputSchema":{"type":"object","properties":{"nome":{"type":"string","minLength":3,"pattern":"^[a-z0-9_]+$"},"categoria":{"type":"string","enum":["marketing","utility","authentication"]},"corpo":{"type":"string","minLength":10,"maxLength":1024},"exemplo":{"type":"string","minLength":10},"org_unit_id":{"type":"integer"},"route_id":{"type":"integer"},"rodape":{"type":"string","maxLength":60},"botoes":{"type":"array","items":{"type":"string","minLength":1,"maxLength":25},"maxItems":3},"nome_exibicao":{"type":"string"},"attendance_group_ids":{"type":"array","items":{"type":"integer"}},"supervisor":{"type":"string"}},"required":["nome","categoria","corpo","exemplo"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_whatsapp_rotas","title":"WeAction WhatsApp - Rotas Disponíveis","description":"LISTA as rotas de WhatsApp HABILITADAS visíveis para a sessão (id, nome, número).\nUse SEMPRE antes de afirmar que \"não há rota\": cite a UO consultada e o resultado.\nSe vier vazio e o usuário disser que a rota existe, ela provavelmente está em OUTRA\nunidade organizacional — pergunte/tente com org_unit_id explícito.","inputSchema":{"type":"object","properties":{"org_unit_id":{"anyOf":[{"type":"integer","exclusiveMinimum":0},{"type":"null"}],"description":"UO a consultar (default: a da sessão). Use quando a rota mora em outra unidade."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_acionamento_recomendado","title":"WeAction Acionamento - Melhor Canal por Contato","description":"DECIDE o melhor canal de acionamento para cada contato (determinístico) — use ANTES de\npropor qualquer envio. Regras:\n  - janela WhatsApp ABERTA (última msg do contato < 24h) → mensagem livre (weaction_send_whatsapp_message)\n  - janela FECHADA mas tem WhatsApp → template aprovado (weaction_send_whatsapp_template)\n  - sem WhatsApp mas com e-mail → e-mail (weaction_send_email)\n  - sem canal digital → tarefa de ligação (weaction_create_task)\n  - 3+ contatos no grupo \"template\" → sugerir CAMPANHA/broadcast em vez de 1:1\nRetorna os grupos por canal com payload pronto + as rotas e templates disponíveis.\nNADA é enviado por esta tool — ela só decide. Proponha ao usuário e aguarde aprovação.\n\nArgs:\n  - contatos (array): [{contact_id?, nome?, whatsapp?, email?}] — passe o que tiver\n    (da carteira/portfolio: identifier = whatsapp). Máx 30.\n  - incluir_templates (boolean, default true): anexa a lista de templates da rota","inputSchema":{"type":"object","properties":{"contatos":{"type":"array","items":{"type":"object","properties":{"contact_id":{"anyOf":[{"type":"integer"},{"type":"null"}]},"nome":{"type":["string","null"]},"whatsapp":{"type":["string","null"],"description":"Telefone com DDI, ex 5511999999999"},"email":{"type":["string","null"]}},"additionalProperties":false},"minItems":1,"maxItems":30},"incluir_templates":{"type":"boolean"}},"required":["contatos"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_send_whatsapp_template","title":"WeAction Enviar Template WhatsApp (janela fechada — via campanha)","description":"Envia um TEMPLATE aprovado de WhatsApp (HSM) para UM contato fora da janela de 24h,\npelo motor de campanha do app (v1 /broadcast/whatsapp — cria uma lista de transmissão de\n1 contato, o mesmo caminho da tela Transmissão). Para vários contatos com o mesmo\ntemplate, prefira weaction_create_whatsapp_broadcast direto.\nDescubra o template com weaction_list_whatsapp_templates. SEMPRE confirme com o usuário o\ntemplate e o texto final ANTES de enviar. O envio entra na FILA (status em\nweaction_list_whatsapp_broadcasts).\n\nArgs:\n  - to (string): telefone do contato com DDI\n  - contact_id (number): ID interno do contato (obrigatório pro motor de campanha)\n  - contact_name (string, opcional): nome do contato\n  - message (string): texto final do template com os parâmetros já substituídos\n  - template_id (number): preset_message_id do template cadastrado\n  - attendance_group_id (number, opcional): fila/grupo; omitido = 1ª fila WhatsApp do agente\n  - name (string, opcional): nome da campanha (default gerado)","inputSchema":{"type":"object","properties":{"to":{"type":"string","minLength":1},"contact_id":{"type":"integer","description":"ID interno do contato"},"contact_name":{"type":"string"},"message":{"type":"string","minLength":1,"description":"Corpo final do template"},"template_id":{"type":"integer","description":"preset_message_id do template"},"attendance_group_id":{"type":"integer"},"name":{"type":"string"}},"required":["to","contact_id","message","template_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_send_email","title":"WeAction Enviar E-mail (caixa do atendente)","description":"Envia e-mail pela caixa configurada de um ATENDENTE no WeOn.\nPOST v1 /email/agent/{agent_id}/send. Requer conta de e-mail configurada para o atendente\n(sem conta → erro orientando configurar em WeOn > E-mail). SEMPRE confirme com o usuário\ndestinatário/assunto/corpo ANTES de enviar.\n\nNÃO precisa de template salvo: você pode REDIGIR um e-mail marketing na hora, sob medida\npara a situação (assunto forte, corpo HTML bem formatado, CTA claro) e enviar como content.\nTemplates salvos (weaction_list_email_templates) são atalho opcional de reuso.\n\nANEXOS: para anexar um arquivo (ex.: a PROPOSTA gerada por carteira_proposta), passe\nattachment_urls com a download_url EXATAMENTE como veio no resultado da tool que gerou\no arquivo (URL absoluta assinada — não invente nem encurte). O envio só sai se TODOS\nos anexos subirem: se algum falhar, NADA é enviado (e-mail prometendo anexo sem anexo\né pior que não enviar).\n\nArgs:\n  - agent_id (number): atendente cuja caixa envia (default = usuário do contexto)\n  - to (string ou array): destinatário(s)\n  - subject (string), content (string): assunto e corpo (HTML permitido)\n  - cc / bcc (array, opcional)\n  - attachment_urls (array de string, opcional): URLs absolutas de arquivos pra anexar (máx 5, 25MB cada)","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer"},"to":{"anyOf":[{"type":"string","minLength":3},{"type":"array","items":{"type":"string","minLength":3},"minItems":1}]},"subject":{"type":"string","minLength":1},"content":{"type":"string","minLength":1},"cc":{"type":"array","items":{"type":"string"}},"bcc":{"type":"array","items":{"type":"string"}},"attachment_urls":{"type":"array","items":{"type":"string","minLength":8},"maxItems":5,"description":"URLs absolutas (https) de arquivos pra anexar — ex.: download_url de proposta gerada"}},"required":["to","subject","content"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_list_email_templates","title":"WeAction Templates de E-mail (marketing)","description":"Lista os TEMPLATES SALVOS de e-mail da unidade — ATALHO OPCIONAL de reuso, não\npré-requisito: você pode redigir um e-mail marketing na hora e enviar direto via\nweaction_send_email. GET v1 /email/template.\nUse quando fizer sentido reusar uma peça pronta; se a peça que você redigiu ficou boa e\nreutilizável, OFEREÇA salvar como template (weaction_create_email_template).\n\nArgs:\n  - per_page (number, default 20), page (default 1)\n  - org_unit_id (number, opcional): default = do contexto","inputSchema":{"type":"object","properties":{"per_page":{"type":"integer"},"page":{"type":"integer"},"org_unit_id":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_email_template","title":"WeAction Criar Template de E-mail","description":"Cria um TEMPLATE de e-mail reutilizável na unidade (marketing/relacionamento).\nPOST v1 /email/template. SEMPRE mostre nome, assunto e corpo ao usuário e confirme ANTES.\n\nArgs:\n  - nome (string, máx 80), assunto (string, máx 120)\n  - conteudo (string): corpo do e-mail (HTML permitido; use placeholders claros tipo {nome})\n  - org_unit_id (number, opcional): default = do contexto","inputSchema":{"type":"object","properties":{"nome":{"type":"string","minLength":1,"maxLength":80},"assunto":{"type":"string","minLength":1,"maxLength":120},"conteudo":{"type":"string","minLength":1},"org_unit_id":{"type":"integer"}},"required":["nome","assunto","conteudo"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_list_agent_emails","title":"WeAction Caixa de E-mail do Atendente (triagem)","description":"Lê a caixa de e-mail de um atendente no WeOn (INBOX, SENT etc.) e ASSOCIA cada remetente\nao contato/empresa da carteira (match determinístico por e-mail via busca de contatos).\nGET v1 /email/agent/{agent_id}. Sem caixa configurada → informe e NÃO analise e-mail.\n\nAo analisar os e-mails recebidos, avalie o SENTIMENTO de cada um (indignação, reclamação,\nurgência, elogio) pelo assunto + corpo: e-mail indignado de contato da carteira é SINAL DE\nRISCO — proponha ação (responder com aprovação, criar tarefa, alertar o gestor).\nweaction_email_reply usa o uid + folder retornados aqui.\n\nArgs:\n  - agent_id (number, opcional): default = usuário do contexto\n  - folder (string, default \"INBOX\"): INBOX | SENT | DRAFTS | TRASH\n  - read (boolean, opcional): filtra lidos/não lidos\n  - per_page (number, default 10)\n  - associar_contatos (boolean, default true): cruza remetente com a carteira","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer"},"folder":{"type":"string"},"read":{"type":"boolean"},"per_page":{"type":"integer"},"associar_contatos":{"type":"boolean"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_email_reply","title":"WeAction Responder E-mail (mantém a thread)","description":"RESPONDE um e-mail existente pela caixa do atendente, mantendo a thread.\nPOST v1 /email/agent/{agent_id}/reply. Descubra uid/folder com weaction_list_agent_emails.\nSEMPRE confirme o texto com o usuário ANTES de enviar.\n\nArgs:\n  - agent_id (number, opcional): default = usuário do contexto\n  - uid (string): UID do e-mail original (de weaction_list_agent_emails)\n  - folder (string, default \"INBOX\"): pasta do e-mail original\n  - to (string ou array): destinatário(s)\n  - subject (string), content (string): assunto e corpo (HTML permitido)\n  - cc / bcc (array, opcional)","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer"},"uid":{"type":"string","minLength":1},"folder":{"type":"string"},"to":{"anyOf":[{"type":"string","minLength":3},{"type":"array","items":{"type":"string","minLength":3},"minItems":1}]},"subject":{"type":"string","minLength":1},"content":{"type":"string","minLength":1},"cc":{"type":"array","items":{"type":"string"}},"bcc":{"type":"array","items":{"type":"string"}}},"required":["uid","to","subject","content"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_objetivos_do_agente","title":"WeAction Objetivos - Dashboard do Atendente","description":"Objetivos do ciclo de UM atendente (aba \"Objetivos\" da carteira): concluídos/total e, por objetivo: nome, atividade, recorrência, dias restantes, cobertura (feitas/meta/faltam) e o quadro (data_field_status_group_id) das tarefas dele.\nGET v3 /objectives/agent/{agent_id}/dashboard\nUSE para \"como estão meus objetivos?\", \"o que falta pra fechar o ciclo?\". CRUZE com a carteira: objetivo atrasado + carteira com risco = priorize as tarefas do objetivo que tocam os clientes em risco.\n\nArgs:\n- agent_id (number): atendente dono dos objetivos","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer"}},"required":["agent_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_objetivos","title":"WeAction Objetivos - Listar (visão supervisor)","description":"Lista os objetivos configurados na unidade (visão de quem CONFIGURA — supervisor).\nGET v1 /objectives. Para a visão de UM atendente use weaction_objetivos_do_agente.\n\nArgs:\n  - supervisor_id (string): login do supervisor (ex: suprogerio)\n  - org_unit_id (number, opcional): default = do contexto\n  - search (string, opcional), status (string, opcional)\n  - per_page (default 20), page (default 1)","inputSchema":{"type":"object","properties":{"supervisor_id":{"type":"string","minLength":1},"org_unit_id":{"type":"integer"},"search":{"type":"string"},"status":{"type":"string"},"per_page":{"type":"integer"},"page":{"type":"integer"}},"required":["supervisor_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_objetivo_detalhe","title":"WeAction Objetivos - Detalhe / Ciclos / Histórico","description":"Detalhe de um objetivo: configuração completa, ciclos (recorrências passadas) ou\nhistórico de mudanças. GET v1 /objectives/{id}/details | /cycles | /history.\n\nArgs:\n  - objetivo_id (number)\n  - visao (string, default \"details\"): details | cycles | history","inputSchema":{"type":"object","properties":{"objetivo_id":{"type":"integer"},"visao":{"type":"string","enum":["details","cycles","history"]}},"required":["objetivo_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_objetivo","title":"WeAction Objetivos - Criar (fluxo do supervisor)","description":"CRIA um objetivo (ciclo de tarefas) para atendentes, fluxo do SUPERVISOR.\nPOST v1 /objectives (somente_preview=true → POST /objectives/preview, dry-run SEM criar).\nSEMPRE rode o preview primeiro, mostre o resumo ao usuário e crie só após aprovação.\nDescubra antes: quadro/status (weaction_list_task_status_groups), canais/atividades (weaction_list_task_channels), atendentes (weaction_list_users ou weaction_supervisor_agents_performance).\n\nArgs (contrato validado no ObjectiveValidator):\n- org_unit_id (number, opcional: default do contexto)\n- supervisor_id (string): login do supervisor dono\n- objective_name / objective_description (string)\n- data_field_status_group_id (number): QUADRO das tarefas do objetivo\n- data_field_status_id (number): status que conta como CONCLUÍDA\n- objective_task_title (string): título-base das tarefas\n- objective_completion_rule (string): regra de conclusão\n- objective_portfolio_type (string): ex CONTACT | EMPLOYER\n- objective_coverage_goal_percent (number > 0): meta de cobertura (%)\n- objective_recurrence_type (string): ex WEEKLY | MONTHLY\n- objective_recurrence_start_date (string YYYY-MM-DD)\n- objective_ending_type (string) + objective_ending_date? / objective_ending_cycles?\n- channel_ids (number[]): canais/atividades do objetivo\n- agent_ids (number[]): atendentes que recebem o objetivo\n- template_contact_filter_id (number, opcional): segmento de contatos\n- somente_preview (boolean, default false)","inputSchema":{"type":"object","properties":{"org_unit_id":{"type":"integer"},"supervisor_id":{"type":"string","minLength":1},"objective_name":{"type":"string","minLength":1},"objective_description":{"type":"string","minLength":1},"data_field_status_group_id":{"type":"integer"},"data_field_status_id":{"type":"integer"},"objective_task_title":{"type":"string","minLength":1},"objective_completion_rule":{"type":"string","minLength":1},"objective_portfolio_type":{"type":"string","minLength":1},"objective_coverage_goal_percent":{"type":"number"},"objective_recurrence_type":{"type":"string","minLength":1},"objective_recurrence_start_date":{"type":"string","minLength":8},"objective_ending_type":{"type":"string","minLength":1},"objective_ending_date":{"type":["string","null"]},"objective_ending_cycles":{"anyOf":[{"type":"integer"},{"type":"null"}]},"channel_ids":{"type":"array","items":{"type":"integer"},"minItems":1},"agent_ids":{"type":"array","items":{"type":"integer"},"minItems":1},"template_contact_filter_id":{"anyOf":[{"type":"integer"},{"type":"null"}]},"somente_preview":{"type":"boolean"}},"required":["supervisor_id","objective_name","objective_description","data_field_status_group_id","data_field_status_id","objective_task_title","objective_completion_rule","objective_portfolio_type","objective_coverage_goal_percent","objective_recurrence_type","objective_recurrence_start_date","objective_ending_type","channel_ids","agent_ids"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_update_objetivo","title":"WeAction Objetivos - Atualizar","description":"Atualiza campos de um objetivo existente (PATCH v1 /objectives/{id}) — fluxo do\nsupervisor. Envie SÓ os campos a mudar (mesmos nomes do create). Confirme antes.\n\nArgs:\n  - objetivo_id (number)\n  - campos (objeto): campos a alterar, ex {\"objective_name\": \"...\", \"agent_ids\": [..]}","inputSchema":{"type":"object","properties":{"objetivo_id":{"type":"integer"},"campos":{"type":"object","additionalProperties":{}}},"required":["objetivo_id","campos"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_mover_tarefa_objetivo","title":"WeAction Tarefas - Mover no Kanban (status)","description":"MOVE uma tarefa/atividade no kanban (muda o status: A Fazer → Fazendo → Feito...).\nPUT v1 /external-activities/agent/{agent_id}/update. Vale para tarefas de objetivo e comuns.\n\nCRITICO (causa de \"aceitou mas nao moveu\"): o status de destino TEM que pertencer ao QUADRO (status_group) da propria tarefa. Passe status_group_id (voce ja sabe pelo weaction_list_tasks) + status_name (coluna destino, ex.: \"Fazendo\") e a tool resolve o data_field_status_id DENTRO do quadro. status_id de outro quadro: a API aceita (200) mas o card NAO muda de coluna — a tool REJEITA isso.\nConfirme antes de mover. Depois, RE-LISTE o quadro (weaction_list_tasks) pra confirmar visualmente antes de dizer \"movido\".\nAtendente so move tarefa DELE; supervisor move de qualquer um (mover_como=\"supervisor\" + login em movido_por).\n\nArgs:\n- protocol (string): protocolo da tarefa\n- channel (string): label_identifier do canal/tipo da tarefa\n- status_group_id (number): QUADRO da tarefa (data_field_status_group_id). Recomendado.\n- status_name (string): coluna de DESTINO (ex.: \"Fazendo\"). Resolvida dentro do quadro.\n- status_id (number, opcional): id direto (so se for do quadro certo) — validado.\n- movido_por (string): agent_id numerico OU login do supervisor\n- mover_como (string, default \"agent\"): agent | supervisor\n- org_unit_id (number, opcional): default = do contexto","inputSchema":{"type":"object","properties":{"protocol":{"type":"string","minLength":1},"channel":{"type":"string","minLength":1},"status_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}]},"status_name":{"type":["string","null"]},"status_id":{"anyOf":[{"type":"integer"},{"type":"null"}]},"movido_por":{"type":"string","minLength":1},"mover_como":{"type":"string","enum":["agent","supervisor"]},"org_unit_id":{"type":"integer"}},"required":["protocol","channel","movido_por"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_list_conversation_logs","title":"WeAction List Conversation Logs","description":"Mensagens e gravações dos atendimentos WeON (conteúdo da conversa: mensagens, mídia, gravações de chamada). Útil para monitoria de qualidade, transcrição e auditoria. Retorna array de logs de conversa.\n\nArgs:\n  - start_date / end_date (string, opcionais): \"YYYY-MM-DD hh:mm:ss\"\n  - job_ids (array de strings, opcional): IDs de atendimento (job)\n  - protocols (array de strings, opcional): protocolos\n  - channels (array, opcional): \"voice\" | \"whatsapp\" | \"chat\"\n  - users (array de strings, opcional): IDs de agentes\n  - groups (array de strings, opcional): IDs de grupos\n  - include / exclude (arrays de strings, opcionais): propriedades a mostrar / excluir\n\nREGRA DURA: UMA chamada por protocolo. Vazio = NAO EXISTE gravacao; siga com as mensagens de texto. PROIBIDO re-tentar com outras datas ou alternar com whatsapp_history/conversation_messages.","inputSchema":{"type":"object","properties":{"start_date":{"type":"string","description":"Start date (YYYY-MM-DD hh:mm:ss)"},"end_date":{"type":"string","description":"End date (YYYY-MM-DD hh:mm:ss)"},"job_ids":{"type":"array","items":{"type":"string"},"description":"Filter by attendance IDs"},"protocols":{"type":"array","items":{"type":"string"},"description":"Filter by protocol numbers"},"channels":{"type":"array","items":{"type":"string","enum":["voice","whatsapp","chat"]},"description":"Filter by channel"},"users":{"type":"array","items":{"type":"string"},"description":"Filter by agent user IDs"},"groups":{"type":"array","items":{"type":"string"},"description":"Filter by group IDs"},"include":{"type":"array","items":{"type":"string"},"description":"Include only these properties"},"exclude":{"type":"array","items":{"type":"string"},"description":"Exclude these properties"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_qualifications","title":"WeAction List Qualification Trees","description":"List all qualification (tabulation/disposition) trees configured in the WeON system.\n\nQualifications are used to categorize attendance outcomes (e.g. \"Sale\", \"No contact\",\n\"Callback scheduled\"). Each qualification has a type: POSITIVE, NEUTRAL, or NEGATIVE.\n\nReturns array of qualification tree objects with their full path structure.","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_qualification","title":"WeAction Create Qualification / Service Channel","description":"Create a new qualification (disposition/tabulation) or service channel configuration.\n\nArgs:\n  - name (string): Qualification name\n  - type (string): Qualification type: \"POSITIVE\", \"NEUTRAL\", or \"NEGATIVE\"\n  - parent_id (string, optional): Parent qualification ID (for tree structure)\n  - description (string, optional): Description\n\nReturns the created qualification object.","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Qualification name"},"type":{"type":"string","enum":["POSITIVE","NEUTRAL","NEGATIVE"],"description":"Qualification type"},"parent_id":{"type":"string","description":"Parent qualification ID for nested tree"},"description":{"type":"string","description":"Description"}},"required":["name","type"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_list_integrations","title":"WeAction Listar Integrações [INTERNO]","description":"[INTERNO] Lista todas as integrações disponíveis. Filtro opcional por nome.\nGET /v1/integrations","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Filtrar por nome da integração"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_get_integration_instance","title":"WeAction Get Instância Integração [INTERNO]","description":"[INTERNO] Retorna detalhes de uma instância de integração.\nGET /v1/integrations/instances/{id}","inputSchema":{"type":"object","properties":{"instance_id":{"type":"integer","description":"ID da instância"}},"required":["instance_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_update_integration_status","title":"WeAction Habilitar/Desabilitar Integração [INTERNO]","description":"[INTERNO] Altera status de uma instância de integração (CONNECTED, DISCONNECTED).\nPATCH /v1/integrations/instances/{id}/status","inputSchema":{"type":"object","properties":{"instance_id":{"type":"integer"},"status":{"type":"string","enum":["CONNECTED","DISCONNECTED"],"description":"Novo status"}},"required":["instance_id","status"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_update_integration_actions","title":"WeAction Atualizar Ações Integração [INTERNO]","description":"[INTERNO] Atualiza as ações associadas a uma instância.\nPATCH /v1/integrations/instances/{id}/actions","inputSchema":{"type":"object","properties":{"instance_id":{"type":"integer"},"actions":{"type":"array","items":{"type":"number"},"description":"Array de IDs de ações"}},"required":["instance_id","actions"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_get_integration_change_logs","title":"WeAction Histórico de Alterações Integração [INTERNO]","description":"[INTERNO] Histórico de alterações de uma instância de integração.\nGET /v1/integrations/instances/{id}/change-logs","inputSchema":{"type":"object","properties":{"instance_id":{"type":"integer"},"per_page":{"type":"integer","default":20},"page":{"type":"integer","default":1}},"required":["instance_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_get_integration_action_logs","title":"WeAction Histórico de Ações Integração [INTERNO]","description":"[INTERNO] Histórico de execução de ações de uma instância.\nGET /v1/integrations/instances/{id}/actions/logs","inputSchema":{"type":"object","properties":{"instance_id":{"type":"integer"},"per_page":{"type":"integer","default":50},"page":{"type":"integer","default":1},"start_date":{"type":"string","description":"Formato: YYYY-MM-DD HH:mm:ss"},"end_date":{"type":"string","description":"Formato: YYYY-MM-DD HH:mm:ss"},"status":{"type":"string"}},"required":["instance_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_whatsapp_volumetry","title":"WeAction Volumetria WhatsApp [INTERNO]","description":"[INTERNO] Volumetria de atendimentos WhatsApp por agente.\nGET /v1/agents/{id}/whatsapp/volumetry","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente"},"start":{"type":"string","description":"Data início (YYYY-MM-DD)"},"end":{"type":"string","description":"Data fim (YYYY-MM-DD)"},"report_type":{"type":"string","enum":["daily","hourly"],"default":"daily"}},"required":["agent_id","start","end"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_voice_volumetry","title":"WeAction Volumetria Voz [INTERNO]","description":"[INTERNO] Volumetria de atendimentos de voz por agente.\nGET /v1/agents/{id}/voice/volumetry","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente"},"start":{"type":"string","description":"Data início (YYYY-MM-DD)"},"end":{"type":"string","description":"Data fim (YYYY-MM-DD)"},"report_type":{"type":"string","enum":["daily","hourly"],"default":"daily"}},"required":["agent_id","start","end"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_whatsapp_average_times","title":"WeAction Tempos Médios WhatsApp [INTERNO]","description":"[INTERNO] Tempos médios de atendimento WhatsApp por agente.\nGET /v1/agents/{id}/whatsapp/average-times","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente"},"start":{"type":"string","description":"Data início (YYYY-MM-DD)"},"end":{"type":"string","description":"Data fim (YYYY-MM-DD)"},"report_type":{"type":"string","enum":["daily","hourly"],"default":"daily"}},"required":["agent_id","start","end"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_voice_average_times","title":"WeAction Tempos Médios Voz [INTERNO]","description":"[INTERNO] Tempos médios de atendimento de voz por agente.\nGET /v1/agents/{id}/voice/average-times","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente"},"start":{"type":"string","description":"Data início (YYYY-MM-DD)"},"end":{"type":"string","description":"Data fim (YYYY-MM-DD)"},"report_type":{"type":"string","enum":["daily","hourly"],"default":"daily"}},"required":["agent_id","start","end"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_employer","title":"WeAction Criar Empresa (Employer) [INTERNO]","description":"[INTERNO] Cria uma EMPRESA (employer) na unidade do agente.\nPOST /v1/employers/create\nUse quando o cliente é EMPRESA ainda não cadastrada; depois vincule o contato a ela (campo employer_id do contato).\n\nREGRAS (mesmas da tela): nome e código OBRIGATÓRIOS (código só dígitos, até 18); CNPJ opcional, 14 dígitos (máscara removida); se já existir (mesmo código/CNPJ) a API responde 409 e NADA é criado: busque a existente em vez de tentar de novo.\n\nArgs:\n  - name (string): razão/nome da empresa\n  - code (string): código interno (só dígitos, até 18)\n  - cnpj (string, opcional): com ou sem máscara\n  - social_name (string, opcional): nome fantasia\n  - agent_id (number, opcional): dono do cadastro (default: agente do token)\n\nRetorna a empresa criada (id em employerId/employer_id).","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Razão/nome da empresa (até 200 chars)"},"code":{"type":"string","minLength":1,"description":"Código interno, só dígitos (até 18)"},"cnpj":{"type":"string","description":"CNPJ, 14 dígitos (máscara é removida)"},"social_name":{"type":"string","description":"Nome fantasia (até 200 chars)"},"agent_id":{"type":"integer","description":"Agente dono (default: token)"}},"required":["name","code"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_get_employer","title":"WeAction Get Employer [INTERNO]","description":"[INTERNO] Retorna dados de uma empresa (employer).\nGET /v1/employers/{id}","inputSchema":{"type":"object","properties":{"employer_id":{"type":"integer","description":"ID do employer"}},"required":["employer_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_delete_employer","title":"WeAction Remover Employer [INTERNO]","description":"[INTERNO] Remove uma empresa (employer).\nDELETE /v1/employers/{id}","inputSchema":{"type":"object","properties":{"employer_id":{"type":"integer"}},"required":["employer_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_employer_attendance_summary","title":"WeAction Contexto Empresa - Resumo Atendimentos [INTERNO]","description":"[INTERNO] Resumo de atendimentos por grupos de uma empresa.\nGET /v1/employers/{id}/attendances/groups-summary","inputSchema":{"type":"object","properties":{"employer_id":{"type":"integer"},"start_date":{"type":"string","description":"YYYY-MM-DD HH:mm:ss"},"end_date":{"type":"string","description":"YYYY-MM-DD HH:mm:ss"}},"required":["employer_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_contact_attendance_summary","title":"WeAction Contexto Contato - Resumo Atendimentos [INTERNO]","description":"[INTERNO] Resumo de atendimentos por grupos de um contato.\nGET /v1/contacts/{id}/attendances/groups-summary","inputSchema":{"type":"object","properties":{"contact_id":{"type":"integer"},"start_date":{"type":"string","description":"YYYY-MM-DD HH:mm:ss"},"end_date":{"type":"string","description":"YYYY-MM-DD HH:mm:ss"}},"required":["contact_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_carteira_visao_unidade","title":"WeAction Carteira - Visão da UNIDADE (todas as carteiras)","description":"Visão SUPERVISOR: agrega as carteiras de TODOS os atendentes da unidade numa chamada.\nUSE para perguntas GLOBAIS: \"como está a carteira?\", \"quem está em risco?\", \"adormecidos?\", \"qual atendente tem mais risco?\".\n\nRetorna totais da unidade (contatos, em risco, adormecidos, receita cadastrada), quebra por atendente e principais contatos em risco.\nIMPORTANTE: receita 0 = receita NÃO CADASTRADA no contato, NUNCA ausência de risco. Risco = health score (1..5); 0/nulo = não medido (não trate como saudável).\n\nArgs:\n  - org_unit_id (number, opcional): default = do contexto\n  - top_agents (number, default 12, máx 20): carteiras analisadas (maiores primeiro)\n  - detalhe_risco (boolean, default true): lista contatos em risco dos maiores ofensores","inputSchema":{"type":"object","properties":{"org_unit_id":{"type":"integer"},"top_agents":{"type":"integer","minimum":1,"maximum":20},"detalhe_risco":{"type":"boolean"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_carteira_analise_profunda","title":"WeAction Carteira - Análise PROFUNDA (dossiê completo)","description":"Varre a carteira COMPLETA de um atendente e monta o dossiê por contato, numa chamada:\n  - Ordem: ADORMECIDOS primeiro, depois RISCO, depois ativos (caps: 100 contatos, 50 empresas).\n  - Histórico por TIPO no período: conversas por canal (whatsapp/voz/e-mail), tarefas, qualificações recentes, NPS, última atividade, gravações de voz (só contagem; transcrição sob demanda no deep-dive de 1 contato).\n  - CHAMADOS: cruza quadros de suporte (nome contendo suporte/support/chamado) com contatos/empresas: total, ABERTOS, frequência mensal, recorrência (3+ em 90d), criticidade P0/P1/P2/P3 (título/status).\nDepois da análise: proponha o plano (e-mail/campanha/mensagem/tarefa p/ N via weaction_acionamento_recomendado) e OFEREÇA executar com aprovação. O próximo passo é sempre valor entregue, nunca \"analisar mais\".\n\nArgs:\n  - agent_id (number): dono da carteira (obrigatório; a análise é POR carteira)\n  - org_unit_id (number, opcional): default = do contexto\n  - max_contatos (default 100, máx 100) / max_empresas (default 50, máx 50)\n  - periodo_dias (number, default 90): janela do histórico\n  - incluir_chamados (boolean, default true)","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer"},"org_unit_id":{"type":"integer"},"max_contatos":{"type":"integer","minimum":1,"maximum":100},"max_empresas":{"type":"integer","minimum":1,"maximum":50},"periodo_dias":{"type":"integer","minimum":7,"maximum":365},"incluir_chamados":{"type":"boolean"}},"required":["agent_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_carteira_history_insights","title":"WeAction Insights da Carteira por Histórico","description":"Digest do HISTÓRICO de uma AMOSTRA de contatos da carteira (atendimentos + tarefas), tudo numa ÚNICA chamada (busca server-side). Base para insights de risco/oportunidade/relacionamento.\n\nPor contato: scores (churn/receita/nps/dias) + resumo do histórico (atividades, atendimentos, tarefas, última atividade, qualificações recentes, canais). Com o digest, monte \"top N em risco / top N oportunidades\" SEM buscar contato por contato (não entre em loop).\n\nArgs:\n  - segment (\"inactive\"|\"risk\"|\"active\", default \"inactive\"): origem da amostra\n  - sample_size (number, default 80, máx 80): analisa TODOS do segmento até o teto de 80; havendo mais, pega só os 80 primeiros (não entra em loop)\n  - agent_id (number, opcional), org_unit_id (number, opcional)","inputSchema":{"type":"object","properties":{"segment":{"type":"string","enum":["inactive","risk","active"]},"sample_size":{"type":"integer","minimum":1,"maximum":80},"agent_id":{"type":"integer"},"org_unit_id":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_portfolio_kpi","title":"WeAction Carteira - KPI Contatos [INTERNO]","description":"[INTERNO] KPI de contatos na carteira do agente.\nPOST /v1/agents/{id}/portfolio","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer"}},"required":["agent_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_portfolio_list","title":"WeAction Carteira - Listar Contatos [INTERNO]","description":"[INTERNO] Lista todos os contatos da carteira do agente com paginação e ordenação.\nPOST /v1/agents/{id}/portfolio/list","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente (default: agente logado, resolvido pelo token)"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"order_by":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"order":{"type":"string","enum":["asc","desc","ASC","DESC"]}},"required":["name","order"],"additionalProperties":false}},"filters":{"description":"Filtros avançados"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_portfolio_active","title":"WeAction Carteira - Contatos Ativos [INTERNO]","description":"[INTERNO] Contatos ativos na carteira do agente.\nPOST /v1/agents/{id}/portfolio/active","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente (default: agente logado, resolvido pelo token)"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"order_by":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"order":{"type":"string","enum":["asc","desc","ASC","DESC"]}},"required":["name","order"],"additionalProperties":false}},"filters":{"description":"Filtros avançados"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_portfolio_risk","title":"WeAction Carteira - Contatos de Risco [INTERNO]","description":"[INTERNO] Contatos em risco na carteira do agente.\nPOST /v1/agents/{id}/portfolio/risk","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente (default: agente logado, resolvido pelo token)"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"order_by":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"order":{"type":"string","enum":["asc","desc","ASC","DESC"]}},"required":["name","order"],"additionalProperties":false}},"filters":{"description":"Filtros avançados"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_portfolio_inactive","title":"WeAction Carteira - Contatos Adormecidos [INTERNO]","description":"[INTERNO] Contatos inativos/adormecidos na carteira do agente.\nPOST /v1/agents/{id}/portfolio/inactive","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente (default: agente logado, resolvido pelo token)"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"order_by":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"order":{"type":"string","enum":["asc","desc","ASC","DESC"]}},"required":["name","order"],"additionalProperties":false}},"filters":{"description":"Filtros avançados"},"days_ago":{"type":"integer","description":"Dias sem contato"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_portfolio_employer_kpi","title":"WeAction Carteira - KPI Empresa [INTERNO]","description":"[INTERNO] KPI de empresas na carteira do agente.\nPOST /v1/agents/{id}/portfolio/employer","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer"}},"required":["agent_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_portfolio_employer_list","title":"WeAction Carteira - Listar Empresas [INTERNO]","description":"[INTERNO] Lista empresas da carteira do agente com filtros avançados.\nPOST /v1/agents/{id}/portfolio/employer/list","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente (default: agente logado, resolvido pelo token)"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"order_by":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"order":{"type":"string","enum":["asc","desc","ASC","DESC"]}},"required":["name","order"],"additionalProperties":false}},"filters":{"description":"Filtros avançados"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_portfolio_employer_risk","title":"WeAction Carteira - Empresas de Risco [INTERNO]","description":"[INTERNO] Empresas em risco na carteira do agente.\nPOST /v1/agents/{id}/portfolio/employer/risk","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente (default: agente logado, resolvido pelo token)"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"order_by":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"order":{"type":"string","enum":["asc","desc","ASC","DESC"]}},"required":["name","order"],"additionalProperties":false}},"filters":{"description":"Filtros avançados"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_portfolio_employer_dormant","title":"WeAction Carteira - Empresas Adormecidas [INTERNO]","description":"Empresas ADORMECIDAS (>30 dias sem interação) na carteira do agente — espelho da aba\n\"Adormecido > Empresa\" da Gestão de Carteira. Adormecidos têm DUAS visões: CONTATOS\n(weaction_portfolio_inactive) e EMPRESAS (esta tool) — para responder \"tem adormecidos?\"\nde uma carteira, consulte as duas.\nPOST /v1/agents/{id}/portfolio/employer/dormant (total em meta.total)","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer","description":"ID do agente (default: agente logado, resolvido pelo token)"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"order_by":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"order":{"type":"string","enum":["asc","desc","ASC","DESC"]}},"required":["name","order"],"additionalProperties":false}},"filters":{"description":"Filtros avançados"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_contact_rating_summary","title":"WeAction Contatos - Resumo Rating [INTERNO]","description":"[INTERNO] Resumo de rating de atendimento de um contato.\nGET /v1/contacts/{id}/attendance-rating/summary","inputSchema":{"type":"object","properties":{"contact_id":{"type":"integer"},"date_start":{"type":"string","description":"YYYY-MM-DD HH:mm:ss"},"date_end":{"type":"string","description":"YYYY-MM-DD HH:mm:ss"}},"required":["contact_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_contact_filters","title":"WeAction Listar Filtros de Contato por Agente [INTERNO]","description":"[INTERNO] Lista os filtros de contato salvos para um agente.\nGET /v1/template/contact-filters/agent/{id}","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer"}},"required":["agent_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_custom_filters_list","title":"WeAction Filtros Customizados - Listar [INTERNO]","description":"[INTERNO] Lista os filtros customizados de contato disponiveis para o org_unit do usuario logado.\nGET /v1/template/contact-filters/{org_unit_id}\n\nUSE ESTE TOOL quando o usuario perguntar sobre filtros de contato disponiveis, ou antes de weaction_contact_filters_list para descobrir quais filter_ids existem.\nRetorna: id, nome e configuracao de cada filtro customizado criado na plataforma.","inputSchema":{"type":"object","properties":{"org_unit_id":{"type":"integer","description":"ID da unidade organizacional (usa o do login se omitido)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_contact_filters_list","title":"WeAction Contatos - Listar Contatos [INTERNO]","description":"[INTERNO] TOOL PRINCIPAL para listar contatos do WeON. USE quando o usuario pedir: listar/buscar/ver/filtrar contatos.\nGET /v1/template/contact-filters/contacts/{filter_id}?org_unit={id}\n\n- filter_id=0 (padrao): TODOS os contatos, sem filtro customizado\n- filter_id=N: aplica filtro customizado da plataforma\n- org_unit: preenchido automaticamente pelo login\n- Descubra os filter_ids com weaction_custom_filters_list","inputSchema":{"type":"object","properties":{"filter_id":{"type":"integer","default":0,"description":"ID do filtro customizado (0 = sem filtro, lista todos os contatos)"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"search":{"type":"string","description":"Busca por nome, telefone, etc."},"org_unit":{"type":"integer","description":"ID da unidade organizacional (usa o do login se omitido)"},"order_by":{"type":"string","default":"id","description":"Campo para ordenacao"},"order":{"type":"string","enum":["asc","desc"],"default":"asc"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_history_dept_whatsapp","title":"WeAction Histórico Dept WhatsApp [INTERNO]","description":"[INTERNO] Histórico de atendimentos WhatsApp por departamento.\nPOST /v1/supervisor/history/department/whatsapp","inputSchema":{"type":"object","properties":{"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"start_date":{"type":"string"},"end_date":{"type":"string"},"department_id":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_history_dept_voice","title":"WeAction Histórico Dept Voz [INTERNO]","description":"[INTERNO] Histórico de atendimentos de voz por departamento.\nPOST /v1/supervisor/history/department/voice","inputSchema":{"type":"object","properties":{"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"start_date":{"type":"string"},"end_date":{"type":"string"},"department_id":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_search_attendances","title":"WeAction Buscar Atendimentos [INTERNO]","description":"[INTERNO] Busca atendimentos com filtros avançados.\nPOST /v1/attendances/search","inputSchema":{"type":"object","properties":{"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1},"start_date":{"type":"string","description":"YYYY-MM-DD HH:mm:ss"},"end_date":{"type":"string","description":"YYYY-MM-DD HH:mm:ss"},"agent_id":{"type":"integer"},"department_id":{"type":"integer"},"contact_id":{"type":"integer"},"channel":{"type":"string","description":"whatsapp, voice, etc."}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_monitoring_dashboard_agent","title":"WeAction Monitoria Dashboard Agente [INTERNO]","description":"[INTERNO] Dashboard de monitoria por agente.\nPOST /v1/monitoring/dashboard/agent","inputSchema":{"type":"object","properties":{"agent_id":{"type":"integer"},"start_date":{"type":"string"},"end_date":{"type":"string"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_monitoring_analysis","title":"WeAction Monitoria - Análise [INTERNO]","description":"[INTERNO] Cria uma análise de monitoria.\nPOST /v1/monitoring/analysis","inputSchema":{"type":"object","properties":{"attendance_id":{"type":"integer"},"evaluation_model_id":{"type":"integer"},"topics":{}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_monitoring_evaluation_models","title":"WeAction Monitoria - Modelos de Avaliação [INTERNO]","description":"[INTERNO] Lista modelos de avaliação de monitoria.\nPOST /v1/monitoring/evaluation-models","inputSchema":{"type":"object","properties":{"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_supervisor_agents_kpi","title":"WeAction Supervisor - KPI Agentes [INTERNO]","description":"[INTERNO] KPI de agentes supervisionados por um supervisor.\nPOST /v1/supervisor/{identifier}/agents/kpi","inputSchema":{"type":"object","properties":{"supervisor_identifier":{"type":"string","description":"Identifier (login) do supervisor"},"start_date":{"type":"string"},"end_date":{"type":"string"}},"required":["supervisor_identifier"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_supervisor_agents_performance","title":"WeAction Supervisor - Desempenho dos Atendentes","description":"Desempenho por atendente na visão do SUPERVISOR (tela \"Desempenho\"): contatos, qualificações, receita, última atividade, avaliação média, grupos.\nPOST /v1/supervisor/{supervisor_identifier}/agents/performance\n\nEXCLUSIVA DE SUPERVISOR: exige supervisor_identifier = LOGIN do supervisor (ex: suprogerio; normalmente vem do contexto como supervisor_login). NUNCA passe agent_id numérico de atendente. Sem o login no contexto, pergunte ao usuário qual supervisor (não chute).\nUSE para \"como está o time?\", \"quem produz mais?\", \"quem está parado?\". Cruze com weaction_carteira_visao_unidade: atendente parado + carteira com risco = prioridade de gestão.\n\nArgs:\n  - supervisor_identifier (string): login de um SUPERVISOR real (ex: suprogerio)\n  - org_unit_id / attendance_group_id (number, opcionais): filtros\n  - supervised (boolean, default false): só os marcados como supervisionados\n  - search (string, opcional), order_by/order (opcionais)\n  - per_page (default 25, máx 500), page (default 1)","inputSchema":{"type":"object","properties":{"supervisor_identifier":{"type":"string","description":"Login de um SUPERVISOR real (ex: suprogerio)"},"org_unit_id":{"anyOf":[{"type":"integer"},{"type":"null"}]},"attendance_group_id":{"anyOf":[{"type":"integer"},{"type":"null"}]},"supervised":{"type":"boolean"},"search":{"type":"string"},"order_by":{"type":"string"},"order":{"type":"string"},"per_page":{"type":"integer"},"page":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_department_dashboard_statistics","title":"WeAction Dashboard Estatísticas Departamento [INTERNO]","description":"[INTERNO] Estatísticas do dashboard por departamento.\nPOST /v1/department/dashboard/statistics","inputSchema":{"type":"object","properties":{"department_id":{"type":"integer"},"start_date":{"type":"string"},"end_date":{"type":"string"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_supervisor_dashboard","title":"WeAction Supervisor - Dashboard Agente [INTERNO]","description":"[INTERNO] Dashboard em tempo real do agente supervisionado.\nPOST /v1/supervisor/{identifier}/agentDashboard","inputSchema":{"type":"object","properties":{"supervisor_identifier":{"type":"string","description":"Identifier (login) do supervisor"}},"required":["supervisor_identifier"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_dialer_statistics","title":"WeAction Discador - Estatísticas [INTERNO]","description":"[INTERNO] Estatísticas em tempo real do discador de uma campanha.\nGET /v1/campaign-dialer/{id}/dialer/statistics","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"integer"}},"required":["campaign_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_dialer_qualifications","title":"WeAction Discador - Qualificações [INTERNO]","description":"[INTERNO] Lista as qualificações disponíveis para uma campanha discador.\nGET /v1/campaign-dialer/{id}/qualifications","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"integer"}},"required":["campaign_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_dialer_call_history","title":"WeAction Discador - Histórico de Chamadas [INTERNO]","description":"[INTERNO] Histórico de chamadas de uma campanha discador.\nGET /v1/campaign-dialer/history/calls/campaign/{id}","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"integer"},"per_page":{"type":"integer","default":25},"page":{"type":"integer","default":1}},"required":["campaign_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_dialer_strategy_results","title":"WeAction Discador - Resultados por Estratégia [INTERNO]","description":"[INTERNO] Resultados consolidados de uma campanha por estratégia.\nGET /v1/campaign-dialer/results/strategycampaign/{id}","inputSchema":{"type":"object","properties":{"strategy_id":{"type":"integer"}},"required":["strategy_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_dialer_start","title":"WeAction Discador - Iniciar [INTERNO]","description":"[INTERNO] Inicia o discador de uma campanha.\nPOST /v1/campaign-dialer/{id}/dialer/start","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"integer"}},"required":["campaign_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_dialer_stop","title":"WeAction Discador - Parar [INTERNO]","description":"[INTERNO] Para o discador de uma campanha.\nPOST /v1/campaign-dialer/{id}/dialer/stop","inputSchema":{"type":"object","properties":{"campaign_id":{"type":"integer"}},"required":["campaign_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_chamados_suporte","title":"WeAction Chamados de Suporte (visão GERAL da unidade)","description":"CHAMADOS de suporte da unidade INTEIRA, NUNCA filtrado por atendente (chamado é da operação, não do dono da tarefa). Detecta pelos DOIS eixos: quadro com nome contendo suporte/chamado/support/ticket E/OU tipo de tarefa de chamado (ex. \"chamado_de_suport\"), mesmo em quadro comum.\nRetorna: total, ABERTOS, por criticidade (P0-P3; \"crítico/urgente\" = P0), por quadro, recorrência por contato/empresa (3+ chamados), lista (abertos/críticos primeiro).\nUSE para \"tem chamado aberto?\", \"chamados do cliente X\", \"recorrência de chamados\". Para TAREFAS comuns (do atendente) use weaction_list_tasks.\n\nArgs:\n- org_unit_id (number, opcional): default = do contexto\n- contact_id (number, opcional): só chamados de um contato\n- empresa (string, opcional): filtra por nome da empresa (match parcial)\n- somente_abertos (boolean, default false)\n- quadros (string[], opcional): nomes de quadro extras a tratar como suporte","inputSchema":{"type":"object","properties":{"org_unit_id":{"type":"integer"},"contact_id":{"type":"integer"},"empresa":{"type":"string"},"somente_abertos":{"type":"boolean"},"quadros":{"type":"array","items":{"type":"string"}}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_tasks","title":"WeAction Listar Tarefas (atividades externas)","description":"Lista tarefas/atividades (QBR, check-in, follow-up, etc.) da unidade ou de um atendente.\nPOST /v1/tasks (endpoint de LISTAGEM, não de criação).\n\n- SEM agent_id = TODAS as tarefas da unidade (visão supervisor). Use assim para perguntas gerais (\"tem tarefas vencidas?\") e sobre UM CONTATO (a tarefa pode ser de outro atendente). COM agent_id = só as daquele atendente; para \"MINHAS tarefas\", passe o agent_id do SEU contexto de identidade. NÃO reaproveite agent_id de outra conversa se a pergunta é geral.\n- NUNCA passe 0 como agent_id, contact_id ou data_field_status_group_id: para \"todos\", OMITA o campo (0 é tratado como ausência).\n- resumo.atrasadas é o número autoritativo.\n- contact_id é o ID INTERNO (não o código/identificador da tela): se o usuário citou nome/código/telefone, resolva ANTES via weaction_search_contacts ou pela carteira (weaction_portfolio_*) e use o campo id.\n- CHAMADOS de suporte NÃO são tarefas comuns: use weaction_chamados_suporte (sempre visão geral da unidade).\n\nArgs:\n- org_unit_id (number): unidade organizacional (do contexto do usuário)\n- agent_id (number, opcional): filtra por atendente; OMITA para a unidade inteira\n- contact_id (number, opcional): só tarefas de um contato (ID interno, resolva antes)\n- status (number[], opcional): IDs de status (weaction_list_task_status_groups)\n- init_date / final_date (string, opcional): intervalo \"YYYY-MM-DD HH:mm:ss\"\n- search (string, opcional): busca textual\n- per_page (number, opcional, default 100), page (number, opcional)","inputSchema":{"type":"object","properties":{"org_unit_id":{"type":"integer"},"agent_id":{"type":"integer"},"contact_id":{"type":"integer"},"data_field_status_group_id":{"type":"integer","description":"Grupo de status (board). Se omitido, resolve automaticamente os grupos ativos."},"status":{"type":"array","items":{"type":"integer"}},"init_date":{"type":"string"},"final_date":{"type":"string"},"search":{"type":"string"},"per_page":{"type":"integer"},"page":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_task_status_groups","title":"WeAction Status de Tarefas","description":"Lista os grupos de status de tarefas e seus status (A Fazer/Fazendo/Feito).\nGET /v1/external-activities/status-groups?org_unit_id={id}\nUse para descobrir os data_field_status_id (filtrar/criar tarefas) e o data_field_status_group_id.\n\nArgs:\n  - org_unit_id (number, opcional): default = do contexto","inputSchema":{"type":"object","properties":{"org_unit_id":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_task_channels","title":"WeAction Canais/Tipos de Tarefa","description":"Lista os canais/tipos de tarefa e seus campos (Título, Detalhes, Contato, Qualificação, etc.).\nGET /v1/external-activities/channel/list?org_unit_id={id}\nUse ANTES de criar uma tarefa, para descobrir o canal e os campos obrigatórios.\n\nArgs:\n  - org_unit_id (number, opcional): default = do contexto\n  - data_field_status_group_id (number, opcional)","inputSchema":{"type":"object","properties":{"org_unit_id":{"type":"integer"},"data_field_status_group_id":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_task","title":"WeAction Criar Tarefa (atividade externa)","description":"Cria uma tarefa/atividade (QBR, check-in, follow-up, ligação) ligada a um contato.\nPOST /v1/external-activities/qualify\n\nCAMINHO RÁPIDO (o comum): chame DIRETO com title + start_datetime + contact. channel e status_id são OPCIONAIS: a tool resolve sozinha o canal (pelo título: ligação/e-mail/visita/reunião) e o QUADRO PADRÃO + status inicial. NÃO chame weaction_list_task_channels nem weaction_list_task_status_groups antes (1 chamada basta). Só passe channel/status_id se o usuário PEDIU um quadro/tipo específico.\nTarefa = atividade externa DINÂMICA: os campos variam por canal/tipo; a tool descobre e preenche automaticamente.\n\nArgs:\n- channel (string, opcional): label_identifier do canal; omita para o default\n- org_unit_id (number): unidade org (do seu contexto); org_unit_name (string, opcional)\n- title (string): título da tarefa\n- status_id (number, opcional): data_field_status_id; omita p/ quadro padrão\n- start_datetime (string): \"YYYY-MM-DD HH:mm:ss\"; end_datetime (string, opcional)\n- details (string, opcional)\n- contact (object): objeto do contato (id, identifier, fullname, contact_fullname, employer_*...)\n- qualification (object, opcional): {qualify_id, qualify_type, qualify_path}\n- agent_id (number, opcional) / agent_name (string, opcional): responsável (default logado)","inputSchema":{"type":"object","properties":{"channel":{"type":"string","description":"label_identifier do canal (omita p/ default)"},"org_unit_id":{"type":"integer"},"org_unit_name":{"type":"string"},"title":{"type":"string","minLength":1,"description":"Título da tarefa"},"quadro":{"type":"string","description":"NOME do quadro onde criar (ex: \"Padrão\", \"Comercial\"). Use SEMPRE que o usuário — ou uma memória dele — disser em qual quadro quer as tarefas. É o jeito de obedecer a preferência sem saber ids."},"status_id":{"type":"integer","description":"data_field_status_id (omita p/ quadro padrão)"},"start_datetime":{"type":"string","description":"YYYY-MM-DD HH:mm:ss"},"end_datetime":{"type":"string"},"details":{"type":"string"},"contact":{"type":"object","additionalProperties":{},"description":"Objeto do contato"},"qualification":{"type":"object","properties":{"qualify_id":{"anyOf":[{"type":"integer"},{"type":"null"}]},"qualify_type":{"type":"string"},"qualify_path":{"type":"string"}},"additionalProperties":false},"agent_id":{"type":"integer"},"agent_name":{"type":"string"},"_debug":{"type":"boolean"}},"required":["title","start_datetime","contact"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_list_external_activity_status_groups","title":"WeAction Grupos de Status de Atividade Externa [INTERNO]","description":"[INTERNO] Lista os grupos de status de atividades externas.\nGET /v1/external-activities/status-groups","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_qualify_external_activity_v1","title":"WeAction Qualificar Atividade Externa [INTERNO]","description":"[INTERNO] Qualifica uma atividade externa.\nPOST /v1/external-activities/qualify","inputSchema":{"type":"object","properties":{"activity_id":{"type":"integer"},"qualification_id":{"type":"integer"},"notes":{"type":"string"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_create_external_activity_status","title":"WeAction Criar Status de Atividade Externa [INTERNO]","description":"[INTERNO] Cria um novo status dentro de um grupo de status.\nPOST /v1/external-activities/status-groups/{id}/status/create","inputSchema":{"type":"object","properties":{"group_id":{"type":"integer"},"name":{"type":"string"},"color":{"type":"string"},"order":{"type":"integer"}},"required":["group_id","name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_get_automation","title":"WeAction Get Automação [INTERNO]","description":"[INTERNO] Retorna detalhes de uma automação.\nGET /v1/automation/{id}","inputSchema":{"type":"object","properties":{"automation_id":{"type":"integer"}},"required":["automation_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_automation","title":"WeAction Criar Automação [INTERNO]","description":"[INTERNO] Cria uma nova automação na plataforma.\nPOST /v1/automation/create","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"trigger":{"type":"string"},"actions":{},"active":{"type":"boolean","default":true}},"required":["name"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_update_automation","title":"WeAction Atualizar Automação [INTERNO]","description":"[INTERNO] Atualiza uma automação existente.\nPOST /v1/automation/update/{id}","inputSchema":{"type":"object","properties":{"automation_id":{"type":"integer"},"name":{"type":"string"},"trigger":{"type":"string"},"actions":{},"active":{"type":"boolean"}},"required":["automation_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_remove_automation","title":"WeAction Remover Automação [INTERNO]","description":"[INTERNO] Remove uma automação.\nPOST /v1/automation/remove/{id}","inputSchema":{"type":"object","properties":{"automation_id":{"type":"integer"}},"required":["automation_id"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":true,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]},{"name":"weaction_tags_skip_ivr","title":"WeAction Tags - Pular IVR [INTERNO]","description":"[INTERNO] Lista as tags que permitem pular o IVR.\nGET /v1/tags/can-skip-ivr","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_tags_skip_queue","title":"WeAction Tags - Pular Fila [INTERNO]","description":"[INTERNO] Lista as tags que permitem pular a fila de atendimento.\nGET /v1/tags/can-skip-queue","inputSchema":{"type":"object","properties":{},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_scheduler","title":"WeAction Listar Agendamentos [INTERNO]","description":"[INTERNO] Lista os agendamentos do calendário.\nGET /v1/scheduler","inputSchema":{"type":"object","properties":{"start_date":{"type":"string","description":"YYYY-MM-DD"},"end_date":{"type":"string","description":"YYYY-MM-DD"},"agent_id":{"type":"integer"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_list_quick_messages","title":"WeAction Listar Mensagens Rápidas [INTERNO]","description":"[INTERNO] Lista as mensagens rápidas (respostas prontas) da unidade.\nGET /v1/quick-reply-messages\n\nUSE ANTES de criar uma nova: se já existe uma equivalente, reuse/edite em vez\nde duplicar o catálogo.\n\nArgs:\n  - search (string, opcional): filtra por nome no resultado\n  - page (number, opcional, default 1) · per_page (number, opcional, default 50)","inputSchema":{"type":"object","properties":{"search":{"type":"string","description":"Filtro por nome (aplicado no resultado)"},"page":{"type":"integer","description":"Página (default 1)"},"per_page":{"type":"integer","description":"Itens por página (default 50)"}},"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true,"answers_query_types":["filtered_list"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["filtered_list"]},"answers_query_types":["filtered_list"]},{"name":"weaction_create_quick_message","title":"WeAction Criar Mensagem Rápida [INTERNO]","description":"[INTERNO] Cria uma mensagem rápida (resposta pronta) na unidade, igual à tela \"Mensagens rápidas\".\nPOST /v1/quick-reply-messages\n\nANTES de criar:\n  1. Liste as existentes (weaction_list_quick_messages); se há equivalente, NÃO duplique;\n  2. Nome curto e buscável (é como o atendente a encontra na conversa);\n  3. Conteúdo em TEXTO PURO, tom da empresa, sem dado interno (NPS/risco), sem prometer o que a operação não cumpre.\n\nArgs:\n  - name (string): nome curto (como aparece na busca)\n  - content (string): texto enviado ao cliente","inputSchema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"description":"Nome curto e buscável"},"content":{"type":"string","minLength":1,"description":"Texto puro enviado ao cliente"}},"required":["name","content"],"additionalProperties":false,"$schema":"http://json-schema.org/draft-07/schema#"},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"answers_query_types":["mutation"]},"execution":{"taskSupport":"forbidden"},"_meta":{"answers_query_types":["mutation"]},"answers_query_types":["mutation"]}]