# DietBox

> Patient, prescription, anthropometry, scheduling, chat and food diary management for dietitians.

- name: io.github.mcp-dir/dietbox-mcp
- version: 0.1.0
- connection class: R0 (autonomous)
- trust: 87/100
- quality: 85/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.mcp-dir%2Fdietbox-mcp
- tools: https://api.protogrid.dev/v1/servers/io.github.mcp-dir%2Fdietbox-mcp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "dietbox-mcp": {
      "type": "http",
      "url": "https://api.mcp.ai/p_dietbox"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 99
- freshness: 65
- provenance: 80
- drivers: +repository +namespace-matches-repo +reachable +uptime-97% ~updated-132d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 85/100 (good)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- warn `tools.description_length`: 3 tools have descriptions over 1,024 characters, which crowds the context
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 42 of 42 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- warn `tools.token_cost`: about 9,081 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 42, about 9,081 tokens to load them all
- tool set hash: da124a99b630d530e7e90c9cbd589cf6
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.mcp-dir/dietbox-mcp.svg)](https://protogrid.dev/servers/io.github.mcp-dir/dietbox-mcp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://api.mcp.ai/p_dietbox (streamable-http, auth none, reachable true, uptime30d 0.9655172)

## Packages

_none_

## Tools (42)

- `authenticate`: MCP.AI for IDE agents (Cursor, etc.): log in in the browser, copy the access token. Best: add it to this server's config as a header `Authorization: Bearer <token>` for a permanent, non-expiring connection. Or paste it here for a session-only login: call with { token: "<jwt>" } after the user pastes, or with no args to get the link.
- `connect`: Returns connection status and URLs. When all providers are connected, returns authenticated:true and empty pending[]. When credentials are missing, returns connect_url for the toolkit and per-install URLs.
- `dietbox_agenda_list`: Read schedule/agenda in Dietbox.
Actions: list (filter by date range/patient), summary (today's overview).

[Flattened action: list]

Bulk support: accepts patient_ids for batched execution.
- `dietbox_agenda_summary`: Read schedule/agenda in Dietbox.
Actions: list (filter by date range/patient), summary (today's overview).

[Flattened action: summary]

Bulk support: accepts patient_ids for batched execution.
- `dietbox_agenda_write`: Create a new event/appointment in the Dietbox agenda.
Requires Start and End as ISO datetime strings. Timezone defaults to America/Sao_Paulo (IANA format).
Valid Tipo values: "consulta" (appointment), "retorno" (follow-up), "bloqueio" (block).

Bulk support: accepts patient_ids for batched execution.
- `dietbox_anamnese_delete`: Remove uma anamnese do Dietbox. Ação irreversível.

Bulk support: accepts anamnesis_ids, patient_ids for batched execution.
- `dietbox_anamnese_get`: Read anamnesis (health history questionnaire) records in Dietbox.
Actions: list (paginated), get (by ID), get_latest (most recent for patient).

[Flattened action: get]

Bulk support: accepts patient_ids, anamnesis_ids for batched execution.
- `dietbox_anamnese_get_latest`: Read anamnesis (health history questionnaire) records in Dietbox.
Actions: list (paginated), get (by ID), get_latest (most recent for patient).

[Flattened action: get_latest]

Bulk support: accepts patient_ids, anamnesis_ids for batched execution.
- `dietbox_anamnese_list`: Read anamnesis (health history questionnaire) records in Dietbox.
Actions: list (paginated), get (by ID), get_latest (most recent for patient).

[Flattened action: list]

Bulk support: accepts patient_ids, anamnesis_ids for batched execution.
- `dietbox_anamnese_write_create`: Create or update an anamnesis (health history questionnaire) in Dietbox.
Actions:
- create: cria nova anamnese. Obrigatório: patient_id. Opcional: descricao, texto_livre (HTML), tipo (1=completa default, 2=simplificada), data (ISO), overrides (map com qualquer campo extra: fuma, diabetes, medicamentos, alergias, ...).
- update: atualiza uma anamnese existente. Obrigatório: anamnesis_id. Demais campos sobrescrevem os atuais.
Retorna { id } da anamnese criada/atualizada.

[Flattened action: create]

Bulk support: accepts patient_ids, anamnesis_ids for batched execution.
- `dietbox_anamnese_write_update`: Create or update an anamnesis (health history questionnaire) in Dietbox.
Actions:
- create: cria nova anamnese. Obrigatório: patient_id. Opcional: descricao, texto_livre (HTML), tipo (1=completa default, 2=simplificada), data (ISO), overrides (map com qualquer campo extra: fuma, diabetes, medicamentos, alergias, ...).
- update: atualiza uma anamnese existente. Obrigatório: anamnesis_id. Demais campos sobrescrevem os atuais.
Retorna { id } da anamnese criada/atualizada.

[Flattened action: update]

Bulk support: accepts patient_ids, anamnesis_ids for batched execution.
- `dietbox_antropometria_delete`: Delete an anthropometric evaluation from Dietbox. This is irreversible.

Bulk support: accepts anthropometry_ids for batched execution.
- `dietbox_antropometria_get`: Read anthropometric evaluations in Dietbox (weight, height, BMI, body composition).
Actions: list (paginated, filter by tipo), get (by ID), get_latest (current measurements).

[Flattened action: get]

Bulk support: accepts patient_ids, anthropometry_ids for batched execution.
- `dietbox_antropometria_get_latest`: Read anthropometric evaluations in Dietbox (weight, height, BMI, body composition).
Actions: list (paginated, filter by tipo), get (by ID), get_latest (current measurements).

[Flattened action: get_latest]

Bulk support: accepts patient_ids, anthropometry_ids for batched execution.
- `dietbox_antropometria_list`: Read anthropometric evaluations in Dietbox (weight, height, BMI, body composition).
Actions: list (paginated, filter by tipo), get (by ID), get_latest (current measurements).

[Flattened action: list]

Bulk support: accepts patient_ids, anthropometry_ids for batched execution.
- `dietbox_antropometria_write`: Create a new anthropometric evaluation in Dietbox.
Required: patient_id, weight (kg, 0.1-1000), height (meters, 0.1-3.0).
Type: 1=physical evaluation (default), 4=bioimpedance. All measurement fields (circumferences, skinfolds, bioimpedance) default to null.

Bulk support: accepts patient_ids for batched execution.
- `dietbox_chat_list`: Read chat conversations in Dietbox.
Actions: list (conversations, filter by patient/unread), messages (message history for patient).

[Flattened action: list]

Bulk support: accepts patient_ids for batched execution.
- `dietbox_chat_messages`: Read chat conversations in Dietbox.
Actions: list (conversations, filter by patient/unread), messages (message history for patient).

[Flattened action: messages]

Bulk support: accepts patient_ids for batched execution.
- `dietbox_chat_write`: Send a chat message to a patient in Dietbox. Pass message data as a JSON string.
- `dietbox_get_goal_progress`: Get goal progress for a Dietbox patient: completion percentages, streaks, recent activity.

Bulk support: accepts patient_ids for batched execution.
- `dietbox_get_nutritionist`: Get the nutritionist's professional profile in Dietbox: CRN, specialties, signature, subscription details.
- `dietbox_get_profile`: Get the nutritionist's Dietbox profile (perfil): name, email, subscription plan, features.
- `dietbox_list_accounts`: List all Dietbox accounts linked to this install.
Returns each account's id, email, label, and an "is_default" flag (true when only one is linked — no need to pass `account` in other tools). When multiple accounts are linked, every other dietbox_* tool accepts an optional `account` parameter; pass id, email, or label (full or partial).
- `dietbox_list_diario`: List food diary entries for a Dietbox patient on a specific date. Shows what the patient ate, meal photos, comments.

Bulk support: accepts patient_ids for batched execution.
- `dietbox_list_finance_transactions`: List financial transactions in Dietbox: payments, receivables, filtered by date and status.
- `dietbox_list_goals`: List nutrition/health goals for a Dietbox patient: weight targets, habit goals, custom objectives.

Bulk support: accepts patient_ids for batched execution.
- `dietbox_meal_plan`: Get the active meal plan (plano alimentar) for a patient in Dietbox.
Returns the full list of meals with foods, portions, schedule, and day-of-week assignments.
Each meal has: title (e.g. "Café da manhã"), time, text (food items with portions), observacao, and weekday flags.

NOTE: This is different from "prescriptions" — prescriptions in Dietbox are supplement/herbal medicine prescriptions. Use this tool for food/meal plans.

READ-ONLY (UPSTREAM LIMITATION): A API v2 do Dietbox não expõe endpoint público de criação/edição de plano alimentar — a interface web usa rotas MVC internas (dietbox.me/PlanoAlimentar/...) que exigem cookies de sessão do browser, inacessíveis programaticamente. Por isso não existe dietbox_meal_plan_write. Para criar/editar planos, use a UI web do Dietbox, ou considere webdiet_prescription_write (WebDiet) quando for opção. Caso a Dietbox venha a expor esse endpoint na API, o adapter será atualizado.

Bulk support: accepts patient_ids for batched execution.
- `dietbox_patient_delete`: Permanently delete a patient from Dietbox. Irreversible.

Bulk support: accepts patient_ids for batched execution.
- `dietbox_patient_get`: Read patients in Dietbox.
Actions: list (paginated, search by name), get (full detail).

[Flattened action: get]

Bulk support: accepts patient_ids for batched execution.
- `dietbox_patient_list`: Read patients in Dietbox.
Actions: list (paginated, search by name), get (full detail).

[Flattened action: list]

Bulk support: accepts patient_ids for batched execution.
- `dietbox_patient_write_create`: Create or update patients in Dietbox.
Actions: create (Name required, uses POST), update (partial fields, uses PATCH — no need to send all fields).
Gender: Masculino or Feminino (converted to boolean for the API). Observation field for notes.
Endereço, dados civis e de acesso (Address, Number, Complement, Neighborhood, State, City, Cep, MaritalStatus, Occupancy, Expire) são suportados em create e update — use os mesmos nomes de campo retornados pelo dietbox_patient (get); o adapter mapeia internamente a divergência de nomes do endpoint de update.

Phone / MobilePhone são normalizados automaticamente para E.164 em create e update (o endpoint update/PATCH /patients rejeita HTTP 400 "'Body Mobile Phone Value' is not in format 'E.164'" quando recebe número sem prefixo internacional). Envie "67991234567", "(67) 99123-4567" ou "+5567991234567" indistintamente — o adapter ajusta para "+5567991234567" antes de chamar a API. Para números não-brasileiros, envie já com "+{código}".

For destructive removal use dietbox_patient_delete.

[Flattened action: create]

Bulk support: accepts patient_ids for batched execution.
- `dietbox_patient_write_update`: Create or update patients in Dietbox.
Actions: create (Name required, uses POST), update (partial fields, uses PATCH — no need to send all fields).
Gender: Masculino or Feminino (converted to boolean for the API). Observation field for notes.
Endereço, dados civis e de acesso (Address, Number, Complement, Neighborhood, State, City, Cep, MaritalStatus, Occupancy, Expire) são suportados em create e update — use os mesmos nomes de campo retornados pelo dietbox_patient (get); o adapter mapeia internamente a divergência de nomes do endpoint de update.

Phone / MobilePhone são normalizados automaticamente para E.164 em create e update (o endpoint update/PATCH /patients rejeita HTTP 400 "'Body Mobile Phone Value' is not in format 'E.164'" quando recebe número sem prefixo internacional). Envie "67991234567", "(67) 99123-4567" ou "+5567991234567" indistintamente — o adapter ajusta para "+5567991234567" antes de chamar a API. Para números não-brasileiros, envie já com "+{código}".

For destructive removal use dietbox_patient_delete.

[Flattened action: update]

Bulk support: accepts patient_ids for batched execution.
- `dietbox_prescription_get`: Read supplement/herbal medicine prescriptions in Dietbox (NOT meal plans — use dietbox_meal_plan for food plans).
Actions: list (by patient), get (full detail by ID), list_models (reusable templates).

[Flattened action: get]

Bulk support: accepts patient_ids, prescription_ids for batched execution.
- `dietbox_prescription_list`: Read supplement/herbal medicine prescriptions in Dietbox (NOT meal plans — use dietbox_meal_plan for food plans).
Actions: list (by patient), get (full detail by ID), list_models (reusable templates).

[Flattened action: list]

Bulk support: accepts patient_ids, prescription_ids for batched execution.
- `dietbox_prescription_list_models`: Read supplement/herbal medicine prescriptions in Dietbox (NOT meal plans — use dietbox_meal_plan for food plans).
Actions: list (by patient), get (full detail by ID), list_models (reusable templates).

[Flattened action: list_models]

Bulk support: accepts patient_ids, prescription_ids for batched execution.
- `dietbox_prescription_write`: Create a new supplement/herbal medicine prescription in Dietbox. For meal plans, use dietbox_meal_plan (read-only — Dietbox não expõe escrita via API).

Required: title (nome da prescrição) and patient_id. Without title the API returns 400 "'Title' deve ser informado / 'Title' não pode ser nulo".

"data" is a JSON string with the remaining prescription payload (Items, Orientations etc.); title and patient_id são mesclados automaticamente antes do POST.

Bulk support: accepts patient_ids for batched execution.
- `dietbox_prontuario`: Get the clinical record (prontuario) for a Dietbox patient: medical history, notes.

Bulk support: accepts patient_ids for batched execution.
- `dietbox_prontuario_write`: Update the clinical record (prontuario) for a Dietbox patient. Pass the text content directly (HTML supported). Returns 204 on success.

Bulk support: accepts patient_ids for batched execution.
- `marketplace`: The official mcp.ai marketplace — the in-platform catalog of every MCP/tool, AND the way to run them. Covers capability requests like "find an MCP that does X", "consulta um CPF", "is there a tool for Y". Core flow: action=search discovers MCPs by intent → describe returns one MCP's full profile (every tool with its id + params, pricing, auth) so you pick the right tool_id → invoke RUNS that tool. KEY: invoke works even when the MCP is NOT installed — it runs the tool pontualmente (one-off), without adding the MCP to the toolkit and without bloating the tool list. If the MCP needs a credential/login, invoke returns a connect link; if it is paid and the wallet is empty, invoke returns a checkout/top-up link (the user opens it, then you retry). Use install only to make an MCP PERMANENT in the active toolkit (its tools then show up natively in future sessions); prefer invoke for a single/occasional use. list_tools lists what is callable right now. subscribe/cancel handle per-MCP billing; report_bug sends feedback; request_mcp asks us to build a NEW MCP when nothing fits. Search/describe flag installed_in_toolkit vs installed_in_workspace. Writes (install/uninstall/subscribe/cancel and the one-off install behind invoke) require workspace owner/admin. It also carries the mcp.ai PROMPT LIBRARY, which is about ready-made prompt TEXT rather than MCPs: search_prompts finds one, get_prompt returns its full text with {{variables}} filled, and publish_prompt saves a prompt and returns a shareable mcp.ai/p/<slug> link that opens without login.
- `report_bug`: Report a bug, missing feature, or send feedback. Include the conversation array with recent messages for reproduction.
- `show_version`: Show the current MCP platform and adapter versions.
- `toolkit_info`: Returns the current toolkit state: installed MCPs, their connection status, the accounts connected to each one, and how many catalog tools each exposes.
