Para quem cria agentes · Funciona com o Claude
Dê mãos ao seu agente.
O TaskQ é um servidor MCP em que cada ferramenta é executada por uma pessoa. O seu agente planeia; as pessoas fazem; as evidências voltam estruturadas.
Grátis até 3 pessoas. Sem cartão.
https://taskq.isat.pt/mcp- Servidor MCP remoto com OAuth
- Standard Webhooks para acordar o seu executor
- As pessoas aprovam; o servidor aplica as regras
Capacidades
Ferramentas executadas por pessoas.
Uma capacidade é um tipo de passo com um contrato: medir, fazer uma compra, mover um item. Para o seu agente, funciona como qualquer outra ferramenta. Lê as instruções, preenche o esquema de entrada e recebe evidências estruturadas. A única diferença é quem a executa: uma pessoa, no telemóvel.
Cada capacidade tem um contrato em cinco partes
Instruções para o agente
agent_instructionsEm markdown: quando a usar, como escrever o passo, erros comuns.
Esquema de entrada
input_schemaO que o seu agente tem de preencher, em JSON Schema.
Esquema de evidências
evidence_schemaO que volta. Sem ele, o passo não pode fechar.
Requisitos de execução
requirementsQualificações, recursos e tipo de localização.
Regras impostas pelo servidor
rulesLimite por pedido, limiar de aprovação, orçamento e risco.
As regras vivem no servidor; as orientações vivem no texto. O seu agente pode propor o que quiser. Não consegue contornar um limite de gastos com argumentos, porque é o TaskQ que o impõe.
key: purchase
version: 1
name:
en: Purchase
pt-PT: Compra
agent_instructions: |
Use when the task is missing material. Always give an estimated price
and an alternative in case the item is out of stock.
input_schema:
item: string
quantity: number
suggested_store: string
estimated_price: { amount: number, currency: string }
evidence_schema:
- kind: document
description: invoice issued to the workspace tax ID
requirements:
qualifications: []
rules:
max_per_request: { amount: 50, currency: EUR }
approval_above: { amount: 50, currency: EUR }
budget: task
default_gadget: purchase-receipt
risk: medium10 capacidades prontas desde o primeiro dia
As capacidades são configuráveis e têm versões, como as skills, e nenhuma está fixa no código. O seu agente pode propor uma capacidade nova ou uma nova versão; cada uma passa por um pedido de aprovação.
label_locationColar uma etiqueta impressa com um código legível (como A3) numa localização e fotografá-la.
photographFotografar uma localização, um objeto ou um estado, como referência ou para o seu agente analisar.
inventory_locationListar o que está numa localização, com quantidades e uma fotografia, podendo esvaziá-la para uma área de preparação.
move_itemMover itens de uma localização para outra e fotografá-los no novo lugar.
measureMedir uma dimensão ou grandeza com uma ferramenta e indicar o valor na unidade pedida.
purchaseIr buscar material em falta a uma loja e trazer a fatura emitida com o NIF da organização. O TaskQ regista a compra; nunca movimenta dinheiro.
transport_resourceLevar uma ferramenta, um veículo ou material para outro local ou morada e registar onde fica.
operate_toolUsar uma ferramenta ou máquina (corte a laser, impressora 3D, berbequim) numa operação definida, seguindo as notas de segurança.
verify_resultVerificar o resultado com critérios explícitos e fotografar o estado final.
sync_with_orchestratorUma reunião curta no local entre operadores e o orquestrador, com um resumo escrito.
Servidor MCP
Um servidor MCP remoto. 16 ferramentas. Pessoas do outro lado.
Adicione o TaskQ ao claude.ai ou ao Claude Code como conector personalizado. O seu agente lê o espaço de trabalho, propõe fases e lê as evidências que as pessoas enviam.
Remoto, por Streamable HTTP
Nada para instalar nem alojar. Aponte o seu cliente para o endereço.
Início de sessão com OAuth
Inicia sessão com a sua conta do TaskQ e escolhe o espaço de trabalho. Sem chaves de API para colar ou deixar escapar.
Um orquestrador, um espaço de trabalho
Cada token fica associado a um membro com a função de orquestrador e só vê o espaço de trabalho desse membro. Cada chamada volta a verificar a função.
Inglês para as máquinas
Os nomes das ferramentas, as descrições, os parâmetros e os erros estão em inglês, seja qual for a língua de trabalho da sua equipa.
Ligue o seu cliente
https://taskq.isat.pt/mcpclaude.ai e aplicações Claude: Definições → Conectores → Adicionar conector personalizado. Cole o endereço, inicie sessão no TaskQ e escolha o espaço de trabalho.
Claude Code: adicione o servidor e execute /mcp para iniciar sessão.
Só os orquestradores podem ligar. Se a sua organização no Claude esconder a opção, peça ao administrador para permitir conectores personalizados.
claude mcp add --transport http taskq https://taskq.isat.pt/mcpAs 16 ferramentas
- Leitura
- Lê o estado atual e nada mais.
- Proposta
- Abre um pedido de aprovação. Nada acontece até uma pessoa aprovar.
- Escrita direta
- Escreve diretamente, dentro do espaço de trabalho do token.
| Ferramenta | O que faz | Efeito |
|---|---|---|
get_workspace | Locais, mapa de localizações, recursos e o seu estado, membros com qualificações e disponibilidade agregada | Leitura |
list_capabilities | Catálogo com contratos e gadgets predefinidos | Leitura |
list_gadgets | Biblioteca de gadgets aprovados, com esquemas de dados | Leitura |
create_task | Título, objetivo, local, orçamento e quem decide nos pontos de decisão | Escrita direta |
propose_phase | Conjunto de passos com entradas, localizações, recursos, dependências, blocos, gadgets e anexos | Proposta |
propose_capability | Capacidade nova ou nova versão de uma existente | Proposta |
propose_gadget | Código, esquema e dados de exemplo para pré-visualização | Proposta |
propose_map_change | Novas localizações, etiquetas ou disposição | Proposta |
get_task | Estado, fases, passos e exceções | Leitura |
get_evidence | Fotografias (como imagens), medições, documentos e anotações de um passo ou de uma fase | Leitura |
attach_file | Carrega um ficheiro do agente para anexar a um passo proposto (por exemplo, um desenho ou uma lista de materiais) | Escrita direta |
list_unarchived_files | Ficheiros enviados pelos operadores e ainda não arquivados, por tarefa ou em todo o espaço de trabalho | Leitura |
get_file | Conteúdo do ficheiro na resposta, mais um link assinado válido durante alguns minutos | Leitura |
mark_file_archived | Marca um ficheiro como arquivado com a referência do destino e inicia o período de retenção | Escrita direta |
list_pending_decision_points | O que está à espera de decisão, por tarefa | Leitura |
close_task | Fecha a tarefa com um resumo | Escrita direta |
Erros que o seu agente consegue corrigir
propose_phase verifica tudo antes de abrir o pedido de aprovação: as capacidades existem, as entradas cumprem os esquemas, as regras de orçamento são respeitadas, os recursos e as localizações são conhecidos e as dependências não têm ciclos. Devolve todos os erros de uma vez, para o seu agente os corrigir numa só passagem.
Propostas por omissão
Tudo o que o seu agente escreve é uma proposta, exceto o que o espaço de trabalho marca para aprovação automática por nível de risco (Premium, desligada por omissão).
Trabalho em paralelo · Várias mãos, sem choques
Paralelo por declaração.
O seu agente declara as dependências, os recursos exclusivos e a localização de cada passo. O distribuidor calcula o que pode correr ao mesmo tempo, como threads com locks. Se já escreveu código multithread, conhece o modelo. O seu agente nunca tem de decidir quem faz o quê.
- O Operador 1 faz um bloco: Esvaziar A3, Medir A3, Medir A4. O bloco fica com o paquímetro do início ao fim.
- Ao mesmo tempo, o Operador 2 esvazia e fotografa B1.
- Medir B2 também precisa do paquímetro, por isso espera até o bloco o libertar. Os dois passos de medição nunca se sobrepõem.
- Levar o armário precisa de duas pessoas: o distribuidor reserva os dois operadores em conjunto.
Ferramentas e lugares exclusivos são locks
Um paquímetro, um carro, uma gaveta: uma pessoa de cada vez. As reservas são valores
tstzrangedo Postgres com uma restriçãoEXCLUDE USING gist, por isso duas reservas do mesmo recurso nunca se sobrepõem.Os blocos reservam tudo ou nada
Um bloco mantém uma sequência de passos com a mesma pessoa e reserva todos os recursos no início, ou nenhum. Sem bloqueios mútuos entre duas pessoas à espera uma da outra.
Passos com várias pessoas
Levar um armário, alinhar com o orquestrador: um passo pode exigir várias pessoas, e o distribuidor reserva-as em conjunto.
Determinístico, e diz porquê
Não há nenhum modelo de IA no distribuidor. Filtra por qualificações, acesso ao local, disponibilidade e recursos e localizações livres, equilibra a carga de trabalho e guarda um motivo legível em cada atribuição.
{
"ref": "measure-A3",
"capability_key": "measure",
"title": "Measure drawer A3",
"instruction": "Measure the inside width of drawer A3, wall to wall.",
"source_locale": "en",
"input": { "target": "drawer A3", "dimension": "inside width", "unit": "mm" },
"location_id": "<drawer A3>",
"resources": [{ "resource_id": "<caliper>" }],
"depends_on": ["empty-A3"],
"block_ref": "measuring-round",
"people_required": 1
}«Tem acesso à Oficina, paquímetro livre, livre até às 18:00»
Standard Webhooks
Eventos assinados, segundo o padrão.
O TaskQ envia eventos por webhook, para que o seu executor, uma automação ou outra ferramenta possa reagir sem ninguém abrir o Claude. Os webhooks são só de saída.
13 eventos
| Evento | Enviado quando |
|---|---|
task.created | É criada uma tarefa |
phase.proposed | O agente propõe uma fase e abre-se o pedido de aprovação |
phase.approvedphase.rejected | O orquestrador decide sobre a fase |
step.assigned | O distribuidor atribui um passo |
step.done | As evidências são enviadas e validadas |
step.blocked | Um operador toca em Não consigo ou Parar por segurança |
decision_point.opened | A fase fechou, ou uma exceção bloqueou o resto dela |
file.uploaded | Um operador envia um ficheiro |
file.archive_overdue | O prazo de arquivo passa sem o ficheiro ser marcado |
approval.requestedapproval.decided | Compra, horário, gadget, capacidade ou recurso pessoal |
task.closed | A tarefa é fechada |
Assinatura
- Cabeçalhos
webhook-id,webhook-timestamp,webhook-signature, segundo a especificação Standard Webhooks. - HMAC-SHA256 sobre o id, a hora e o corpo, com um segredo
whsec_. - Troque os segredos sem interrupções: durante a rotação, cada pedido leva duas assinaturas.
- Rejeite tudo o que tenha mais de 300 segundos. As bibliotecas da especificação fazem-no por si.
Entrega
- Pelo menos uma vez, com novas tentativas a intervalos crescentes. O
webhook-idmantém-se entre tentativas, por isso elimine duplicados com base nele. - A ordem não é garantida. Cada evento leva um número de sequência por tarefa,
task_sequence, para poder reordenar. - Após falhas repetidas, a subscrição é suspensa e os administradores são notificados. A consola mostra o registo de entregas, com reenvio manual e evento de teste.
Só os administradores criam webhooks, na consola
O servidor MCP não pode criar nem alterar webhooks. Uma instrução escondida num ficheiro ou numa fotografia não consegue desviar os seus eventos para o URL de outra pessoa. Os URL têm de ser HTTPS, os endereços privados e de loopback são recusados e os redirecionamentos não são seguidos.
Endpoints de webhook: 1 no Gratuito, 25 no Premium.
Corpos mínimos
Ids e uma ligação para a consola, nada mais. Obtenha os detalhes pelo MCP com as suas próprias credenciais, para ler sempre dados atuais. Os eventos nunca levam registos de tempo, preferências de detalhe, nomes completos nem conteúdo de ficheiros.
{
"id": "0b6f3c1e-5d2a-4f7e-9a51-2c8d4e6f7a90",
"type": "decision_point.opened",
"timestamp": "2026-11-09T15:42:07.000Z",
"workspace_id": "5a1e9d3b-7c40-4b8e-a2f1-93d6c0e4b215",
"task_sequence": 7,
"data": {
"task_id": "c3d9a7f2-1b6e-4e0a-8f53-6a2b9d1c4e78",
"phase_id": "e81f4b26-9c3a-4d57-b0e2-7f5a1c8d3b49",
"decision_point_id": "4f2a8c61-3e9b-4d0f-a7c5-1b6e2d9f8a30",
"reason": "phase_closed"
},
"links": { "console": "https://taskq.isat.pt/console/tasks/c3d9a7f2-1b6e-4e0a-8f53-6a2b9d1c4e78" }
}npm install standardwebhooksimport { Webhook } from "standardwebhooks";
const wh = new Webhook(process.env.TASKQ_WEBHOOK_SECRET!); // "whsec_..."
export async function handle(req: Request): Promise<Response> {
const body = await req.text(); // the raw body, before JSON.parse
try {
// HMAC-SHA256 check; rejects timestamps more than 5 minutes off
const event = wh.verify(body, Object.fromEntries(req.headers)) as { id: string; type: string };
if (event.type === "decision_point.opened") await wakeRunner(event); // dedupe on event.id
return new Response(null, { status: 204 });
} catch {
return new Response("Invalid signature", { status: 400 });
}
}Modo executor
Ninguém tem de colar um prompt.
Por omissão, o orquestrador recebe em cada ponto de decisão um prompt pronto a enviar ao Claude. Ligue um executor seu e o ciclo avança sozinho, até ao único passo que continua humano: a aprovação.
decision_point.openedUma fase fecha, ou uma exceção bloqueia o resto dela. O TaskQ assina o evento e envia-o.
O seu executor acorda
Verifica a assinatura e chama o servidor MCP do TaskQ.
Lê e depois propõe
get_taskeget_evidencepara ver o que aconteceu;propose_phasepara o que vem a seguir, ouclose_task.Uma pessoa aprova
A proposta fica à espera nas aprovações. A automação acelera o ciclo; o orquestrador mantém a decisão.
O distribuidor atribui
Os passos vão para quem está livre, tem acesso e tem a ferramenta, com o motivo guardado.
O mesmo padrão serve para file.uploaded: arquive uma fatura no seu próprio sistema assim que é enviada e depois chame mark_file_archived.
Ecrãs de passo à medida
Um ecrã feito para o trabalho. Isolado.
O seu agente pode desenhar o passo: o armário com a gaveta ativa iluminada, uma grelha para assinalar o que saiu de uma gaveta. Os gadgets correm dentro de uma moldura fixa que pertence à app.
A moldura fixa (a app)
- O contexto no topo, como «Passo 2 de 5 · Arrumar o armário A»
- Instrução, localização e evidências pedidas
- Concluído, Não consigo, Mais detalhe e Parar por segurança, sempre fora do gadget
- A câmara e o envio de ficheiros, que nunca pertencem ao gadget
O gadget (iframe isolado)
sandbox="allow-scripts", nuncaallow-same-originO gadget corre com uma origem opaca: sem acesso à app, à sessão nem ao armazenamento.
Uma CSP que bloqueia todo o acesso à rede
default-src 'none': sem fetch, sem beacons, sem imagens nem tipos de letra externos.Aprovado com a fase
Os gadgets novos são aprovados juntamente com a fase, com pré-visualização com dados reais na consola. Os gadgets aprovados entram na biblioteca.
Uma API postMessage com quatro métodos
| Método | O que faz |
|---|---|
getStepData() | O passo, os dados do gadget, o idioma do operador, o ramo da localização e as evidências pedidas. |
requestPhoto({ prompt }) | Pede à app que abra o fluxo da câmara e devolve o id da evidência. |
submitEvidence({ kind, value }) | Entrega evidências à app, que as valida e guarda. |
markReady() | Indica à app que o operador já pode tocar em Concluído. |
Incluídos em todos os planos: cabinet-diagram, item-checklist, purchase-receipt. Os ecrãs de passo feitos pelo seu agente fazem parte do Premium.
{ taskq: 1, id, type: "request", method, params }
{ taskq: 1, id, type: "response", result | error }Justo para as pessoas
O que a API nunca devolve.
O seu agente planeia o trabalho. Nunca fica a ver as pessoas que o fazem.
Registos de tempo
Entradas, pausas e presenças nunca são expostas ao seu agente.
Preferências de detalhe
O nível de detalhe que cada pessoa prefere só a ela diz respeito. Nunca afeta quem recebe o quê.
Durações individuais
As estimativas de duração são corrigidas por capacidade, nunca por pessoa.
Os eventos de webhook levam ids, nunca nomes. O distribuidor nunca pontua pessoas nem as ordena por desempenho; em vez disso, equilibra a carga de trabalho.
Comece no Gratuito. Cresça no Premium.
O servidor MCP e as 16 ferramentas estão em todos os planos, incluindo o Gratuito. O planeamento corre no seu próprio Claude.
| Funcionalidade | Gratuito | Premium |
|---|---|---|
| Servidor MCP, as 16 ferramentas | ||
| Webhooks (Standard Webhooks) | 1 endpoint | 25 endpoints |
| Acordar o seu agente nos pontos de decisão | usa o webhook | |
| Aprovação automática por nível de risco | desligada por omissão | |
| Ecrãs de passo incluídos (diagrama do armário, lista de itens, talão de compra) | ||
| Ecrãs de passo feitos pelo agente | Ilimitados |
O seu plano do Claude é independente e faturado pela Anthropic. O preço do TaskQ inclui o Assistente de IA.
O seu agente planeia. As pessoas fazem. A aprovação é sua.
Crie um espaço de trabalho grátis, abra a página Ligar o Claude na consola e adicione o TaskQ ao claude.ai ou ao Claude Code como conector personalizado.
Grátis até 3 pessoas. Sem cartão.
Referência pública da API Brevemente
Até lá, as descrições das ferramentas MCP e a página Ligar o Claude na app cobrem o que o seu agente precisa.
Claude é uma marca comercial da Anthropic.