Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

Forkmate

REMOTE · MCP.FORKMATE.AI

Free AI calorie & macro tracker: tell your AI what you ate and it logs it to your private food diary

Available components

+3 this week 93 Trust /100

Last scanned (7 hours ago)

Scores higher than 99% of remote servers

Reachable. Last reached 5 Nov 2026.

Category Health and Science

Trust breakdown (7 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →

Endpoint Security97
Transport & Reachability100
Schema Quality & AI Usability77
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 4789 tokens (~342/item across 14 items; 14 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management100
  • No destabilizing schema changes in the last 30 days.Pass
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
  • Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
  • No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
  • All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
  • An AI judge read all 15 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
  • Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 1 Nov 26 +3
    • Stability: fail → pass ▲ security
  • 15 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “send_feedback” rewrote its description, which is the text the model reads security
    • New prompt “fix-last-entry” functional
    • New prompt “give-feedback” functional
    • New prompt “log-my-usual” functional
    • “send_feedback” added an optional parameter “category” cosmetic
    • “send_feedback” reworded the description of “message” cosmetic
  • 14 Oct 26 0
    • New prompt “fuel-for-a-pr” functional
    • New prompt “fuel-for-a-race” functional
    • New prompt “how-am-i-eating” functional
    • New prompt “long-ride-fueling” functional
  • 12 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “log_meal” rewrote its description, which is the text the model reads security
    • “log_meal” reworded the description of “said” cosmetic
    • “update_meal” reworded the description of “said” cosmetic
  • 10 Oct 26 0
    • Tool “log_meal” rewrote its description, which is the text the model reads security
    • Tool “search_foods” rewrote its description, which is the text the model reads security
    • “log_meal” added an optional parameter “said” cosmetic
    • “update_meal” added an optional parameter “said” cosmetic
  • 9 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “search_foods” rewrote its description, which is the text the model reads security
    • Schema quality: 3468 → 4102 ▼ functional
    • Server version: 0.1.7 → 0.1.11 functional
    • New tool “get_notifications” functional
    • New tool “give_consent” functional
    • New tool “send_feedback” functional
    • “log_meal” reworded the description of “source” cosmetic
  • 7 Oct 26 0
    • Tool “log_meal” rewrote its description, which is the text the model reads security
  • 4 Oct 26 0
    • The server rewrote its instructions, which are the text every model session reads security
    • Tool “update_preferences” rewrote its description, which is the text the model reads security
    • “update_preferences” reworded the description of “user_approved” cosmetic
Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 5 Nov 2026 · Probed https://mcp.forkmate.ai/

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=forkmate.ai CN=WE1,O=Google Trust Services,C=US 22 Oct 2026 20 Jan 2027 ECDSA 256 ECDSA-SHA256 3ec3d9ea068a866a13e00ce8e8ab1981
SANs: forkmate.ai, mcp.forkmate.ai, *.mcp.forkmate.ai
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b

Background: What to check on a remote MCP endpoint →

DNSSEC insecure

Validation of mcp.forkmate.ai. — Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
ai. present 1814, 3799 8, 8 Verified
forkmate.ai. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication Enforced and verified

The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.

Result Enforced and verified
Enforced On tool calls
HTTP status 200

WWW-Authenticate challenge Bearer resource_metadata="https://mcp.forkmate.ai/.well-known/oauth-protected-resource"

Bearer resource_metadata="https://mcp.forkmate.ai/.well-known/oauth-protected-resource"
Header Value
strict-transport-security max-age=63072000; includeSubDomains
content-security-policy default-src 'self'; script-src https://mcp.forkmate.ai/assets/ https://mcp.forkmate.ai/theme-init.js https://challenges.cloudflare.com 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https://cdn.workos.com https://images.workoscdn.com; connect-src 'self' https://api.workos.com; font-src 'self'; frame-src https://challenges.cloudflare.com; worker-src https://mcp.forkmate.ai/sw.js https://mcp.forkmate.ai/assets/; frame-ancestors 'none'; base-uri 'none'; object-src 'none'; form-action 'self'
x-content-type-options nosniff
x-frame-options DENY
referrer-policy strict-origin-when-cross-origin
permissions-policy camera=(self), microphone=()

Protected resource metadata

Document https://mcp.forkmate.ai/.well-known/oauth-protected-resource
Retrieved Yes
Resource https://mcp.forkmate.ai
Authorisation server https://flexible-thought-84.authkit.app

Background: How OAuth 2.1 works in the 2026 MCP spec →

Transports 2 probes
Transport URL Outcome Status Location
streamable-http https://mcp.forkmate.ai/ Verified 200
http (plaintext) http://mcp.forkmate.ai/ HTTPS enforced 301 https://mcp.forkmate.ai/
MCP tools · 14 exposed · ~3,164 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →

Tool Tokens
delete_meal ~224

Delete one food from a diary entry (by `item_index`), or the whole entry (without it). The entry is identified by `id` and `local_date`. Deletion is permanent, with no undo; deleting the last food removes the entry, and an `id` that matches no entry on that date returns a not-found error and deletes nothing. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.

NameTypeReqDescription
idstringyesThe entry id, shown with each entry in the reply text when a meal is logged or a day or range is read.
item_indexnumber–Which food to remove (0-based). Omit to delete the whole entry.
local_datestringyesYYYY-MM-DD diary date of the entry.
NameTypeReqDescription
day_totalsobjectyes–
entry–yesWhat remains of the entry, or null.
removedbooleanyes–

No examples provided.

get_day ~132

Read the user's food diary for one day: its entries, each listed with its `id` and each food with its item_index, quantity and macros, and calorie/macro totals. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.

NameTypeReqDescription
local_datestring–YYYY-MM-DD; defaults to today.
NameTypeReqDescription
entriesarrayyes–
local_datestringyesA local date, YYYY-MM-DD.
totalsobjectyes–

No examples provided.

get_notifications ~131

Reads the user's Forkmate notifications, newest first: notices that something the user reported was fixed, Forkmate release notes (what's new), and account messages. Each one has a kind, a title, a body, an optional link, the day it arrived and whether it is unread, and the reply includes the unread count. Read-only: reading marks nothing as read. Notifications older than 180 days are not kept.

NameTypeReqDescription
limitinteger–How many to return, newest first (1 to 20, default 10).
unread_onlyboolean–Only unread notifications. Defaults to false.
NameTypeReqDescription
notificationsarrayyes–
unread_countintegeryes–

No examples provided.

get_preferences ~75

Read the user's food profile: diet style, allergies (a structured list of the major US allergens), foods they like, foods they dislike, and a typical-portion note. Allergies are self-reported and not a safety guarantee; the response includes an allergy_disclaimer. Likes and dislikes are taste preferences, not allergies or restrictions.

Input schema present but exposes no named parameters.

NameTypeReqDescription
allergiesarrayyes–
allergy_disclaimerstringyes–
diet_stylestring|nullyes–
dislikesarrayyes–
likesarrayyes–
portion_notestring|nullyes–

No examples provided.

get_range ~130

Read the user's food diary across a date range, with per-day calorie/macro totals and each entry listed with its `id`. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.

NameTypeReqDescription
endstringyesYYYY-MM-DD (inclusive).
startstringyesYYYY-MM-DD (inclusive).
NameTypeReqDescription
daysarrayyes–
endstringyesA local date, YYYY-MM-DD.
entriesarrayyes–
startstringyesA local date, YYYY-MM-DD.

No examples provided.

get_usual_foods ~189

Read what the user usually and recently eats. `usual` lists their most-logged foods, most frequent first, each with how many times it was logged, the date last eaten, the meal it is usually logged under, and the portion and macros from the last time. `recent` lists each distinct food from the last seven days with the date last eaten, its meal and how many times. An optional `meal` narrows both lists to one meal. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.

NameTypeReqDescription
mealstring–Only foods logged under this meal.
NameTypeReqDescription
mealstring|nullyes–
recentarrayyes–
recent_windowobjectyes–
usualarrayyes–

No examples provided.

give_consent ~135

Records the user's consent to Forkmate storing and processing their health-related data, as summarised in the consent text that a refused log reply shows. Valid only as the user's own explicit agreement given in this conversation; an assistant agreeing on the user's behalf is not consent. Stores the consent version, the time, the connected app and the user's words, then logs any meal that was waiting for consent. Withdrawal is in Forkmate Settings.

NameTypeReqDescription
user_statementstringyesThe user's own words agreeing, as they replied, e.g. 'yes, I agree'.
versionstringyesThe consent version shown to the user.
NameTypeReqDescription
consentedbooleanyes–
loggedarrayyesMeals held until consent, now logged.
versionstringyes–

No examples provided.

log_meal ~488

Add a meal to the user's food diary: one or more food items, each with an optional quantity and macros, plus an optional meal label, date, note and provenance `source`. The reply names the new entry's `id` and `local_date`, which identify it for a later edit or deletion. A restaurant meal's numbers depend most on the restaurant, the specific menu item, its size and its add-ons (cheese, fries, sauce, dressing); a bare dish name is logged as a typical serving. When the user names one of their saved recipes ("my chicken and rice", "half my chili"), send their words as one item's name, with any amount in quantity; Forkmate logs the recipe's own foods and numbers in its place. Portion amounts are checked against the user's own words for the meal when they arrive in `said`, and the reply lists each food with the amount it was logged at. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.

NameTypeReqDescription
atstring–ISO-8601 instant the meal was eaten; defaults to now.
itemsarrayyesThe foods in this meal, one entry per food.
local_datestring–YYYY-MM-DD diary date; defaults to the user's local date (from their timezone).
mealstring–Which meal of the day this was.
notestring–Optional free-text note stored with the meal, e.g. 'post-run'.
saidstring–The amounts are checked against this: the user's own words for this meal, verbatim (e.g. 'a pint of IPA and wings at the bar'). Only the meal description — not other parts of the conversation. Option…
sourcestring–Optional provenance for these items: the `source` label of the food-database candidate they came from ('USDA', 'Open Food Facts', 'Forkmate' or 'product label'), or 'estimate'. Defaults to 'estimate'…
NameTypeReqDescription
day_totalsobjectyes–
entryobjectyesOne diary entry: a meal with its foods.

No examples provided.

lookup_barcode ~156

Look up a packaged food by its UPC/EAN barcode in Open Food Facts. Returns macros per 100 g, a `source` label ('Open Food Facts'), and, when known, `serving_grams`/`serving_label` for one household serving. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.

NameTypeReqDescription
upcstringyesUPC/EAN barcode, digits only (8–14 digits).
NameTypeReqDescription
candidatesarrayyes–

No examples provided.

search_foods ~324

Search USDA FoodData Central, Open Food Facts and Forkmate's curated restaurant menus for a named food. Returns up to 5 candidates, each with macros per 100 g, a `source` label ('USDA', 'Open Food Facts', 'Forkmate' or 'product label', a packaged product's published label read from a cited page and not yet checked by Forkmate), and, when known, `serving_grams`/`serving_label` for one household serving. Curated chain-menu candidates include a `provenance` object that may carry a portion caveat. A query names a food (at least 2 letters, no wildcards); there is no paging. For a bare generic dish ("a burger", "coffee"), the reply also lists `details_that_change_it`: the details that change that dish's numbers most, such as where it is from, which item, its size and add-ons. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.

NameTypeReqDescription
limitnumber–Max candidates to return (default and maximum 5).
querystringyesFood to search, e.g. 'greek yogurt' or 'Chipotle chicken'. At least 2 letters; wildcards are not supported.
NameTypeReqDescription
candidatesarrayyes–
details_that_change_itarray–For a bare generic dish: the details that change its numbers most (where it's from, which item, size, add-ons).

No examples provided.

send_feedback ~215

Sends feedback to Forkmate to improve the app: a bug, a feature request, a food or nutrition figure that looked wrong (food_data), or something else. It is for feedback the user has asked to send, in the user's own words rather than a paraphrase. It changes nothing in the diary. The note is kept in the user's own account and deleted with it, and no reply is sent.

NameTypeReqDescription
aboutstring–What the note is about: logging (saving or editing meals), accuracy (a food or number that looked wrong), connect (connecting this AI app), or other.
categorystring–The kind of feedback: bug (something broken), feature_request (something the user would like), food_data (a wrong food match or nutrition figure), or other.
messagestringyesThe feedback, in the user's own words as they said it (at most 4000 characters).
ratingstring–The user's thumbs up or down on Forkmate, when they gave one.
NameTypeReqDescription
sentbooleanyes–

No examples provided.

update_meal ~511

Correct a food already in the user's diary — its name, quantity, macros, caffeine or fluid — or change an entry's meal label or note. The entry is identified by `id` and `local_date`, and a food by its `item_index`. Only the fields sent change; macros are merged onto the existing values and overwritten in place, with no history kept. A new `quantity` sent without `macros` rescales the food's macros, caffeine and fluid by the new amount ÷ the old one when both are the same kind of amount (a weight, a volume or a count), so '150 g' to '300 g' doubles them; otherwise the macros stay as they were and the reply says so. An entry cannot be moved to another day. All calorie and macro values, including carbohydrates, are estimates from USDA FoodData Central, Open Food Facts, the user's own entry or an AI assistant's estimate — approximate, not lab-measured or specific to a package or batch, and not suitable for insulin dosing (including carb counting for a meal bolus), blood-glucose prediction or any other medical decision.

NameTypeReqDescription
caffeine_mgnumber–Corrected caffeine content, in milligrams.
fluid_mlnumber–Corrected fluid/hydration volume, in millilitres.
idstringyesThe entry id, shown with each entry in the reply text when a meal is logged or a day or range is read.
item_indexnumber–Which food in the entry's items[] to edit (0-based). Required when changing a food's name/quantity/macros/caffeine/fluid; omit for an entry-level change (meal/note).
local_datestringyesYYYY-MM-DD diary date of the entry.
macrosobject–Corrected macros. Only the components included are changed.
mealstring–Move the entry to a different meal label.
namestring–Corrected name of the food.
notestring–Replacement note for the entry.
quantitystring–Portion as stated, e.g. '2' or '1 cup'.
saidstring–The amounts are checked against this: the user's own words for this meal, verbatim (e.g. 'a pint of IPA and wings at the bar'). Only the meal description — not other parts of the conversation. Option…
NameTypeReqDescription
day_totalsobjectyes–
entryobjectyesOne diary entry: a meal with its foods.

No examples provided.

update_preferences ~421

Edit the user's food profile: add or remove foods they like or dislike, add or remove allergies from the major US allergen list, or set their diet style. Only the fields sent change. A removal matches a saved name in any casing; a name that matches nothing is reported in `not_found` and nothing else is affected. Adding a food to likes takes it off dislikes, and the reverse. Lists hold up to 50 foods of up to 80 characters each. The reply is the whole updated profile. It saves what the user states about their own tastes and allergies, not inferences from the diary. Every call carries `user_approved: true`, meaning the user saw this exact change and said yes to it; a call without it changes nothing and returns the change for the user to approve. A user stating a preference (e.g. 'I dislike olives') has not approved saving it: approval is a later message agreeing to the change as proposed. The server cannot verify that a person gave the approval. Removals work without health-data consent and then return only what was removed. The user can see and edit the same profile in Forkmate's Settings.

NameTypeReqDescription
add_allergiesarray–Allergens to add, from the major US allergen list.
add_dislikesarray–Foods the user dislikes, e.g. 'mushrooms'. A taste preference, not an allergy or a restriction.
add_likesarray–Foods the user enjoys, e.g. 'salmon'.
diet_stylestring–The user's diet style; 'none' clears it.
remove_allergiesarray–Allergens to remove.
remove_dislikesarray–Foods to take off the dislikes list.
remove_likesarray–Foods to take off the likes list.
user_approvedbooleanyesTrue only when the previous assistant message proposed this exact change and the user's latest message agreed to it. The user stating the preference itself is not approval.
NameTypeReqDescription
allergiesarray––
allergy_disclaimerstring––
diet_stylestring|null––
dislikesarray––
likesarray––
not_foundobjectyes–
portion_notestring|null––
removedobjectyes–

No examples provided.

whoami ~33

Diagnostic: confirms that this connection is signed in to a Forkmate account. Returns no account id, email or other identifier.

Input schema present but exposes no named parameters.

NameTypeReqDescription
connectedbooleanyes–

No examples provided.

Install

How do I install the Forkmate MCP server?

Forkmate is a hosted endpoint at https://mcp.forkmate.ai/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

remote · mcp.forkmate.ai

# add to Claude Code
claude mcp add --transport http ai-forkmate-forkmate 'https://mcp.forkmate.ai/'
Common questions

What is the Forkmate MCP server?

Forkmate is an MCP server listed in the public MCP registry as ai.forkmate/forkmate. Free AI calorie & macro tracker: tell your AI what you ate and it logs it to your private food diary. This page covers its hosted endpoint (https://mcp.forkmate.ai/).

Is the Forkmate MCP server safe to use?

Forkmate scores 93 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

What tools does the Forkmate MCP server expose?

Forkmate exposes 14 tools: whoami, get_day, get_range, get_preferences, update_preferences, and 9 more. Their descriptions and schemas cost roughly 3,164 tokens of context every time the server is loaded.

Does the Forkmate MCP server require authentication?

Yes. Forkmate asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

Is the Forkmate MCP server still maintained?

Forkmate is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.