Foodzilla
For developers

The Foodzilla MCP server

Foodzilla speaks the Model Context Protocol, so an AI assistant can work in a coach's account or a client's diary through a standard interface rather than a scraped one. It's one HTTPS endpoint, OAuth 2.1 with PKCE, and more than 60 tools.

Endpointhttps://api.foodzilla.io/mcp

Looking for what it does rather than how it works? See the Autopilot overview

What the Model Context Protocol is

MCP is an open standard for connecting AI assistants to the systems that hold real data. The assistant asks a server what tools it has, the server answers with names and typed arguments, and the assistant calls them. It replaces the pattern where an assistant guesses its way through a web page or an undocumented endpoint.

For a nutrition practice that matters more than it does elsewhere. A meal a client describes has to land in their diary with nutrition from a real food database, not a number the model made up, and it has to land in their record and nobody else's. Typed tools and per-account scopes are how that stays true.

Connection reference

Everything you need to point an MCP client at Foodzilla.

Endpoint
https://api.foodzilla.io/mcp
Transport
Streamable HTTP, JSON-RPC 2.0 over POST
Authorisation
OAuth 2.1 authorisation code with PKCE, dynamic client registration
Discovery
/.well-known/oauth-protected-resource/mcp
Scopes
autopilot, coach, openid, offline_access
Plan
Professional and above for coaches
autopilot

A coached client. Their own plan and their own diary, and nothing else.

coach

A coach working on their own account. Recipes, templates, forms, bookings, content, store, settings and subscription. No access to any client record.

A token carries one of them, never both. Which one you get is chosen on the consent page, and a coach who also has a client record is asked which they're connecting as.

What an unauthenticated request gets

A 401 with a WWW-Authenticate header naming the resource metadata URL, which is how a well-behaved MCP client finds the authorisation server on its own.

The tools

61 at the time of writing. Names are stable. Anything that overwrites or spends money is marked destructive, so your assistant asks before it runs.

Client scope

16 tools

Logging

log_food, log_planned_meal, log_water, log_exercise, log_sleep, log_weight, delete_food_log

Their plan

get_plan, get_todays_meals, get_recipe

Looking back

get_day, get_progress, get_recent_foods, get_profile, get_status

Account

sign_out_everywhere

log_food takes either a list of foods, matched against the Foodzilla food databases with real per-ingredient nutrition, or plain figures for something no database holds. One line the database doesn't know refuses the whole call and names it, rather than logging a guess.

Coach scope

46 tools

Recipes

generate_recipe, import_recipe_from_url, update_recipe_draft, discard_recipe_draft, save_recipe, list_my_recipes

Meal plan templates

generate_plan_template, list_my_templates, describe_plan_settings

Collections and foods

create_collection, add_recipes_to_collection, list_collections, add_food, add_foods, import_food_from_url, import_food_from_text

Forms and bookings

create_form, update_form, list_forms, get_booking_setup, set_availability, create_appointment_type, update_appointment_type

Content

create_post, update_post, publish_post, pin_post, list_posts

Store

get_store, update_store, create_store_plan, update_store_plan, publish_store, unpublish_store

Settings

get_app_experience, set_app_experience, update_my_profile, get_invoice_settings, update_invoice_settings

Account and billing

get_my_account, get_subscription, preview_plan_change, change_plan, activate_subscription, extend_trial

A coach below Professional connects with five of these: the account and subscription tools, so the assistant can quote an upgrade and apply it. The rest appear the moment the plan moves up, on the same connection.

Connecting an assistant

Nothing to install and no key to generate. The OAuth flow does the rest.

Claude

  1. 1Settings, then Connectors, then Add custom connector.
  2. 2Paste https://api.foodzilla.io/mcp as the URL.
  3. 3Sign in with your Foodzilla email and password when the page opens.
  4. 4Check the account named on the consent page, then press Connect.

ChatGPT

  1. 1Settings, then Connectors, then Advanced, and turn developer mode on. Foodzilla isn't in the connector directory yet.
  2. 2Add a connector with https://api.foodzilla.io/mcp as the URL.
  3. 3Sign in with your Foodzilla email and password.
  4. 4Check the account named on the consent page, then press Connect.
  5. 5Start a chat with the connector turned on.

Anything else that speaks MCP

Point it at the endpoint. It registers itself through dynamic client registration, finds the authorisation server through the protected resource metadata, and runs the authorisation code flow with PKCE. Ask for offline_access if you want the connection to survive past the access token.

Rate limits and usage

Counted weekly

Every plan carries a weekly allowance, reset on Monday. Reads, writes and the calls that spend model time are counted in separate buckets, so a busy week of reading doesn't eat the budget for generating recipes.

Clients share a pool

Your clients draw from one allowance between them rather than one each. It means a single chatty client can't spend the practice's week.

Scales with the plan

White Label carries four times the Professional allowance. Team carries seven times, per coach.

Visible as a percentage

The Autopilot tab in Foodzilla shows how much of the week is gone. Hit the limit and the tool answers with a message saying so, rather than failing silently.

What the server refuses

  • A coach token asking for a client's record. There is no tool that takes a client id, so there's nothing to aim at another client's data.
  • A client token reaching past its own diary and its own plan. Recipes are readable only when they're on that client's plan, which keeps the library from being walked one call at a time.
  • A token for a connection the coach has since disconnected, even while it's still inside its lifetime.
  • A token from an earlier grant after a reconnection, so disconnecting and reconnecting doesn't quietly bring an old key back to life.
  • Anything on an account whose plan no longer carries Autopilot. Eligibility is checked on every call, not just at consent.
  • A client whose coach has switched client access off.

Personally identifiable information stays out of server logs. No client or coach names, email addresses or phone numbers.

Frequently Asked Questions

MCP Server for Nutrition Coaching: Endpoint, Scopes, Tools | Foodzilla