Skip to content

Manifesto (manifest.json)

O manifest.json é o arquivo obrigatório na raiz de todo .adapp. Ele descreve identidade, transporte, endpoint e (para http/sse) as tools do provider MCP empacotado.

Campos

CampoTipoObrigatórioRegra/valores
formatstringsimdeve ser exatamente adapp/v1
checksumstringsimformato sha256:<64 hex> (regex ^sha256:[a-f0-9]{64}$)
namestringsimslug: ^[a-z0-9_-]{1,100}$, max 100
labelstringsimmax 120
descriptionstring|nullnãomax 500
categorystring|nullnãomax 60
iconstring|nullnãonome do arquivo do ícone dentro do ZIP (ex.: icon.png), max 500. null se sem ícone
transportstringsimum de: http, sse, openapi
endpointstring (URL)simURL HTTPS do servidor MCP
toolsarray|nullnãosó em http/sse. Cada item: { "name": string (req), "inputSchema": object (req) }
required_secretsarray|nullnãocada item: { "key": string, "label": string, "required": bool }
Dica

O campo checksum é sempre gerado pelo empacotador (mcp:pack-app) — você nunca escreve esse valor manualmente. Ele é calculado por último, depois que todo o resto do manifest e dos arquivos do pacote está definido.

Template comentado

json
{
  "format": "adapp/v1",
  "checksum": "sha256:<64 hex — gerado pelo empacotador>",
  "name": "test-app",
  "label": "Test App",
  "description": "App de teste",
  "category": "test",
  "icon": null,
  "transport": "http",
  "endpoint": "https://mcp.exemplo.com/v1",
  "required_secrets": null,
  "tools": [
    { "name": "test_tool", "inputSchema": { "type": "object", "properties": {} } }
  ]
}

Subestrutura de tools[]

No modo http/sse, cada entrada de tools[] no manifest só precisa de name e inputSchema. A descrição completa da tool (com description e required_secrets próprios) fica no arquivo correspondente em tools/<name>.json:

json
{
  "name": "test_tool",
  "description": "Test tool",
  "inputSchema": { "type": "object", "properties": {} },
  "required_secrets": null
}

No modo openapi, o campo tools do manifest fica ausente/null — as tools são derivadas do openapi.json no momento do import (ver Empacotar um .adapp).

http_binding (v1)

Cada arquivo tools/<name>.json pode carregar um bloco http_binding que descreve como a tool mapeia para uma chamada HTTP concreta — método, path, parâmetros e autenticação:

json
{
  "version": "v1",
  "method": "POST",
  "path": "/v1/crawl",
  "server": "https://api.exemplo.com",
  "params": { "start_url": "body", "limit": "query", "X-Trace": "header", "id": "path" },
  "auth": { "type": "apiKey", "in": "header", "name": "X-API-Key", "credential_ref": "required_secrets[0].key" }
}
CampoDescrição
paramsmapa argName → location, onde locationbody, query, header, path
authomitido quando a tool não exige autenticação; tipos suportados: apiKey (com in + name), bearer, basic — todos carregam credential_ref

credential_ref sempre aponta para uma entrada de required_secrets (ex.: "required_secrets[0].key") — o segredo em si nunca é embarcado no pacote, só a referência à chave.

No modo openapi, o http_binding de cada tool é gerado automaticamente pelo converter a partir do spec — você não precisa escrevê-lo manualmente.

Subestrutura de required_secrets[]

json
{ "key": "ASAAS_API_KEY", "label": "Chave de API do Asaas", "required": true }

Exemplo — transport openapi

json
{
  "format": "adapp/v1",
  "checksum": "sha256:<64 hex>",
  "name": "openapi-app",
  "label": "OpenAPI App",
  "description": "App OpenAPI de teste",
  "category": "test",
  "icon": null,
  "transport": "openapi",
  "endpoint": "https://api.exemplo.com",
  "required_secrets": null
}

Mapeamento manifest → mcp_catalog

No import, o manifest é convertido numa entrada McpCatalog:

Campo do manifestDestino
iconcoluna image do mcp_catalog
name, label, category, description, transportcolunas homônimas do mcp_catalog
required_secretscoluna required_secrets do mcp_catalog
endpointnão vai para o mcp_catalog — é gravado em McpServer.config
tools (http/sse) ou derivadas do openapi.jsonpersistidas como tools do servidor gerado

Consulte também a Referência MCP para o restante dos campos e endpoints envolvidos.

Próximos passos