Model Context Protocol
Trama para agentes de IA
O Trama tem um servidor MCP hospedado, para que Claude, Cursor e outros clientes MCP leiam seus quadros, criem e movam tarefas, comentem, e leiam e escrevam documentos. Os agentes agem como você, com exatamente o acesso que você tem no app.
https://mcp.ontrama.com/mcpCole a URL no seu cliente, sem headers. Ele abre o Trama no seu navegador para você entrar e aprovar a conexão.
Como funciona
O servidor fala Streamable HTTP. Ele não guarda nada: cada chamada de ferramenta vira requisições à API do Trama com as suas credenciais, então o agente vê os quadros que você vê e só pode alterar o que você mesmo poderia. Há duas formas de entrar.
OAuthRecomendado
- Como usar
- Cole a URL e aprove no navegador
- Acesso
- Por scopes: leitura, escrita, comentários
- Validade
- Tokens de 7 dias que o cliente renova
- Revogar
- ConfiguraçõesApps conectados
Token pessoal
- Como usar
- Crie um token e envie-o em um header
- Acesso
- Tudo o que você pode fazer no app
- Validade
- Até você substituí-lo
- Revogar
- ConfiguraçõesAPI e MCP
Claude
Os dois se conectam com OAuth: adicione a URL uma vez e depois aprove o acesso no navegador.
App do Claude (web e desktop)
- Abra ConfiguraçõesConectores (Settings › Connectors) e escolha Adicionar conector personalizado (Add custom connector).
- Dê o nome Trama e cole
https://mcp.ontrama.com/mcpcomo URL. - Escolha Conectar. O Trama abre para você entrar; revise o acesso e aprove.
Depois pergunte em um chat, por exemplo “O que está em andamento no quadro Website?” Nos planos de equipe, talvez um owner precise adicionar o conector para a organização antes.
Claude Code
Adicione o servidor pelo terminal:
claude mcp add --transport http trama https://mcp.ontrama.com/mcpDepois execute /mcp dentro do Claude Code, escolha trama e entre quando o navegador abrir.
Para compartilhar com todos que trabalham em um repositório, coloque o servidor em .mcp.json, na raiz do projeto:
{
"mcpServers": {
"trama": {
"type": "http",
"url": "https://mcp.ontrama.com/mcp"
}
}
}Cursor
Adicione o servidor em ~/.cursor/mcp.json (todos os projetos) ou .cursor/mcp.json (um projeto), ou pelas configurações de MCP do Cursor. O Cursor descobre o OAuth sozinho e abre o navegador para você aprovar.
{
"mcpServers": {
"trama": {
"url": "https://mcp.ontrama.com/mcp"
}
}
}Outros clientes
Qualquer cliente com suporte a Streamable HTTP e à descoberta de OAuth funciona só com a URL. O que ele precisa saber:
| Valor | |
|---|---|
| URL do servidor | POSThttps://mcp.ontrama.com/mcp |
| Metadados do recurso protegido | GEThttps://mcp.ontrama.com/.well-known/oauth-protected-resource/mcp |
| Servidor de autorização | https://api.ontrama.com |
| Registro do cliente | Dinâmico (RFC 7591), cliente público, PKCE com S256 |
| Scopes | boards.read boards.write comments.write |
O que acontece quando um cliente se conecta pela primeira vez:
- Ele chama
POST /mcpsem token e recebe401com um headerWWW-Authenticateque aponta para os metadados do recurso protegido. - Os metadados indicam o servidor de autorização,
https://api.ontrama.com; o cliente lê o/.well-known/oauth-authorization-serverdele. - Ele se registra com
POST /oauth2/register. - Ele abre
https://ontrama.com/oauth2/authorizeno seu navegador. Você entra, vê o que ele pede e aprova. - Ele troca o código e o seu PKCE verifier em
POST /oauth2/tokenpor um access token (lxt_at_…, 7 dias) e um refresh token que é rotacionado a cada uso. - A partir daí, ele chama
POST /mcpcomAuthorization: Bearer lxt_at_….
O servidor é stateless e só responde a POST; GET e DELETE em /mcp retornam 405.
Token pessoal
Para clientes que não fazem OAuth. Crie um token em ConfiguraçõesAPI e MCP e envie-o como Bearer token. O servidor separa a sua chave de API e o seu segredo antes de chamar a API.
{
"mcpServers": {
"trama": {
"url": "https://mcp.ontrama.com/mcp",
"headers": {
"Authorization": "Bearer YOUR_PERSONAL_TOKEN"
}
}
}
}claude mcp add --transport http trama https://mcp.ontrama.com/mcp \
--header "Authorization: Bearer YOUR_PERSONAL_TOKEN"Ferramentas
O servidor tem 38 ferramentas, todas construídas sobre operações da API que tokens OAuth podem usar. As ferramentas recebem ids, nomes, chaves como ACME-42 ou links; quando um nome pode se referir a várias coisas, a ferramenta responde com os candidatos em vez de adivinhar. Os agentes buscam ou listam suas tarefas, leem uma tarefa ou a página que importa e então agem; especificações e decisões vão para páginas vinculadas às tarefas.
boards.read- search
- Tarefas, documentos, comentários e quadros que você vê, com links para cada um.
- list_my_tasks
- Suas tarefas abertas em todos os quadros, as mais urgentes primeiro.
- find_board_by_name
- Encontra um quadro pelo nome (ou parte dele) e retorna o id.
- get_board_snapshot
- As colunas e seus cartões (títulos, etiquetas, responsáveis e datas), sem as descrições.
- find_column_by_name
- Encontra uma coluna de um quadro, para obter o id de que criar e mover precisam.
- find_task_by_issue_key
- Abre uma tarefa pela chave, como ACME-42.
- find_task_by_name
- A primeira tarefa de um quadro cujo nome corresponde.
- search_tasks_by_name
- Todas as tarefas de um quadro cujo nome corresponde, com a coluna de cada uma.
- get_task_detail
- Uma tarefa completa: descrição, marco, etiquetas, responsáveis, subtarefas, relações, checklists, pull requests, tempo registrado, comentários com respostas e as páginas que a mencionam.
- list_milestones
- Os marcos de um quadro, com as datas-alvo.
- list_tags
- As etiquetas de um quadro.
- list_task_templates
- Os modelos de tarefa de um quadro.
- list_task_pull_requests
- Os pull requests e merge requests vinculados a uma tarefa.
boards.read- list_workspaces
- Seus workspaces, com os quadros e as pessoas de cada um (ids de usuário para menções).
- list_documents
- A árvore de páginas de um workspace como links, com as conversas abertas, a última edição e quais páginas são restritas.
- search_documents
- Encontra páginas por título e texto, com trechos, em um workspace ou em todos os seus.
- get_document
- Uma página em Markdown, com caminho, link, versão, quem pode abri-la, subpáginas, as páginas e tarefas que a mencionam e, se você pedir, as conversas dela.
boards.write- create_task
- Cria uma tarefa em uma coluna, com marco, prioridade, modelo ou tarefa-mãe, opcionalmente depois de um cartão específico.
- create_task_from_template
- Cria uma tarefa a partir de um dos modelos do quadro.
- create_sub_issue
- Adiciona uma subtarefa a uma tarefa.
- move_task
- Move uma tarefa para outra coluna do mesmo quadro, opcionalmente depois de um cartão específico.
- update_task_metadata
- Altera nome, descrição, datas, prioridade, marco e tarefa-mãe, e marca a tarefa como concluída ou não.
- set_task_assignees
- Define, adiciona ou remove responsáveis por nome, e-mail ou “me”.
- set_task_tags
- Define, adiciona ou remove etiquetas por nome, criando as que faltam, como o app faz.
- add_task_relation
- Relaciona duas tarefas: bloqueia, bloqueada por, relacionada a ou duplicata de.
- remove_task_relation
- Remove a relação entre duas tarefas.
- add_checklist
- Adiciona um checklist a uma tarefa, com itens.
- add_check_item
- Adiciona itens a um checklist.
- set_check_item_done
- Marca ou desmarca um item de checklist.
- link_pull_request
- Vincula um pull request do GitHub ou um merge request do GitLab a uma tarefa.
- start_timer
- Inicia o cronômetro da tarefa (não faz nada se ele já estiver rodando).
- stop_timer
- Para o cronômetro da tarefa.
boards.write- create_milestone
- Cria um marco em um quadro, com uma data-alvo.
- update_milestone
- Renomeia um marco ou muda a data ou a descrição dele.
- create_document
- Cria uma página em um workspace, opcionalmente dentro de uma página-mãe ou privada para você.
- update_document
- Renomeia uma página, ou substitui ou complementa o conteúdo dela; nunca sobrescreve uma edição mais recente de outra pessoa.
comments.write- add_comment
- Comenta em uma tarefa ou responde em uma conversa; menções notificam as pessoas.
- add_document_comment
- Abre uma conversa em uma página, opcionalmente citando um trecho, ou responde a uma.
update_task_metadata também lê a tarefa de volta, por isso precisa de boards.read também. As relações que ela adiciona só se acumulam; um link de duplicata pode ser removido passando duplicate_of: null. Os agentes vinculam tarefas e documentos em Markdown, como [ACME-12 Fix the login](/tasks/123) ou [Release plan](/documents/45), e o Trama mostra os backlinks dos dois lados.
Solução de problemas
As ferramentas falham com 401 Unauthorized
Com OAuth, conclua a aprovação no navegador e confira se o cliente salvou a conexão; reconectar recomeça o processo. Com um token pessoal, envie Authorization: Bearer KEY.SECRET exatamente como foi copiado, e copie de novo se ele tiver sido substituído.
Uma ferramenta falha com 403 missing_scope
A conexão foi aprovada sem esse scope. Remova o app em ConfiguraçõesApps conectados e conecte de novo, aprovando o acesso de leitura, escrita e comentários.
O agente diz que um quadro ou uma tarefa não existe
A API responde 404 para tudo o que você não vê, então o agente não consegue distinguir o que não existe do que é privado. Confira se a sua conta consegue abrir o quadro no Trama.
Quais quadros o agente vê?
Os mesmos que você, nem um a mais. Os scopes do OAuth restringem o que ele pode fazer; nunca dão um acesso que o seu papel não tem.
Como desconecto um cliente?
Clientes OAuth: ConfiguraçõesApps conectados, e depois revogue. Clientes que usam o token pessoal: substitua o token em ConfiguraçõesAPI e MCP.