Skip to main content
AI Integration · MCP

Formul.io MCP Server

Connect your recipes and the ingredient library to Claude, ChatGPT and any MCP-compatible assistant — and formulate in plain conversation.

MCP endpoint
https://api.formul.io/mcp
Speaks MCP 2024-11-05 and the 2026-01-26 UI-widget protocol.

What is the Formul.io MCP server?

MCP (Model Context Protocol) is an open standard that lets AI assistants call external tools. The Formul.io MCP server puts your saved recipes, your custom ingredients and the 10,000+ ingredient library — plus the same food-science engine behind our calculators — directly inside the conversation.

Connect once and ask an assistant to read a recipe, compute water activity and shelf life, run what-if simulations, diagnose problems, find substitutes, or organise recipes into collections — without leaving the chat. You stay in control: the assistant can only do what the scopes you grant allow, and destructive actions require explicit confirmation.

Tools the assistant gets

23 tools, grouped by what they do. Read-only tools are always safe; create, edit and delete tools are gated by the scopes you grant.

Find & read recipes
  • list_recipes
    Find and filter your saved recipes.
  • get_recipe
    Full ingredient list and metrics for one recipe.
Create & edit recipes
  • create_recipe
    Create and save a new recipe.
  • set_recipe_ingredients
    Set the final, verified ingredient list with quantities.
  • update_recipe
    Edit name, settings, tags or ingredients in place.
  • import_recipe
    Import a recipe from pasted text or a URL.
  • delete_recipe
    Delete a recipe — requires confirmation.
Ingredients
  • search_ingredients
    Search your custom items + the global library, with full composition.
  • find_substitutes
    Ranked substitutes by composition, diet and flavour.
  • create_ingredient
    Add a custom ingredient to your library.
Analysis & metrics
  • analyze_recipe
    Quality score, diagnosed issues, rule checks and suggested fixes.
  • get_recipe_metrics
    Water activity, shelf life, composition and nutrition.
  • simulate_changes
    Run what-if scenarios without saving anything.
Reference
  • get_calculator_guide
    Optimal ranges, a metric glossary and pro formulation rules per calculator.
Notes
  • list_recipe_notes
    Read the caveats and tips saved on a recipe.
  • save_recipe_note
    Save a caveat, tip or rationale.
  • delete_recipe_note
    Delete a note — requires confirmation.
Collections
  • list_collections
    Browse your collections or public ones.
  • get_collection
    A collection with its member recipes.
  • save_collection
    Create or update a collection.
  • delete_collection
    Delete a collection — requires confirmation.
Process graph (DAG)
  • get_recipe_dag
    Read a recipe's multi-stage process graph.
  • set_recipe_dag
    Author or replace the process graph.

Option A — Claude.ai web Recommended · no key

The easiest path. Claude.ai runs the whole OAuth flow for you.

  1. 1 Open claude.ai and go to Settings → Connectors.
  2. 2 Click Add custom connector.
  3. 3 Name it Formul.io and paste the Remote MCP server URL below. Leave OAuth Client ID and Secret blank — they are discovered automatically.
  4. 4 Click Add. Claude.ai redirects you to Formul.io to authorize.
  5. 5 Log in if prompted, review the requested permissions, and click Allow.
  6. 6 Start a new chat and ask Formul.io something — see the example prompts below.
MCP endpoint
https://api.formul.io/mcp
Preview
Authorize Access

api.formul.io is requesting access to your Formul.io account.

Tokens will be sent to
https://claude.ai/api/mcp/auth_callback
Requested permissions
  • Run formulation calculations
  • Read your recipes
  • Create and modify your recipes
  • Search ingredient database
  • Create and modify ingredients
  • Diagnose recipe issues
Deny Allow
What the Formul.io authorization screen looks like — review the permissions, then Allow.

Option B — Claude Desktop API key

For Claude Desktop or any client that uses a static bearer token.

1. Create an API key

Log in to Formul.io, open Settings → Security, and create an API key. Pick only the permissions you need:

  • Run formulation calculations
  • Read your recipes
  • Create and modify your recipes
  • Search ingredient database
  • Diagnose recipe issues
Copy the key immediately — it is shown only once.

2. Add it to your config

Edit claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):

{
  "mcpServers": {
    "formulio": {
      "url": "https://api.formul.io/mcp",
      "headers": {
        "Authorization": "Bearer fio_YOUR_KEY_HERE"
      }
    }
  }
}

Restart Claude Desktop — the Formul.io tools appear in the tool list.

Option C — Custom agents & OAuth 2.1

For your own MCP client or programmatic access. Authenticate with an API key (Bearer fio_…) or an OAuth 2.1 access token.

Transport

POST https://api.formul.io/mcp
JSON-RPC 2.0 over POST
GET https://api.formul.io/mcp/sse
Server-sent events (streaming)

OAuth 2.1 endpoints

Public-client PKCE (authorization_code). No client secret. Access tokens last 1 hour; refresh tokens rotate on use.

Purpose URL
Discovery (RFC 8414) https://api.formul.io/.well-known/oauth-authorization-server
Authorization https://app.formul.io/oauth/authorize
Token exchange https://api.formul.io/api/v1/oauth/token
Client registration https://api.formul.io/api/v1/oauth/register
Token revocation https://api.formul.io/api/v1/oauth/revoke

Quick start

# 1. Register your client once
curl -X POST https://api.formul.io/api/v1/oauth/register \
  -H "Content-Type: application/json" \
  -d '{
    "client_name": "My App",
    "redirect_uris": ["https://myapp.example.com/callback"],
    "grant_types": ["authorization_code", "refresh_token"],
    "scope": "calculate recipes:read ingredients:read"
  }'
# -> { "client_id": "...", "client_secret": null }

# 2. Send the user to authorize (PKCE, S256)
https://app.formul.io/oauth/authorize
  ?client_id=YOUR_CLIENT_ID
  &redirect_uri=https://myapp.example.com/callback
  &response_type=code
  &scope=calculate+recipes:read+ingredients:read
  &code_challenge=BASE64URL(SHA256(code_verifier))
  &code_challenge_method=S256
  &state=RANDOM_STATE

# 3. Exchange the code for tokens
curl -X POST https://api.formul.io/api/v1/oauth/token \
  -d "grant_type=authorization_code" \
  -d "code=AUTH_CODE" \
  -d "redirect_uri=https://myapp.example.com/callback" \
  -d "client_id=YOUR_CLIENT_ID" \
  -d "code_verifier=YOUR_VERIFIER"
# -> { "access_token": "...", "refresh_token": "...", "expires_in": 3600 }

# 4. Call the MCP server
curl -X POST https://api.formul.io/mcp \
  -H "Authorization: Bearer ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","method":"tools/list","id":1}'

Scopes

Grant only what the assistant needs. Each tool requires a scope; without it the call is refused.

Scope Grants
recipes:read List and read recipes, collections, notes and process graphs.
recipes:write Create, edit and delete recipes, notes and collections; author process graphs.
ingredients:read Search the ingredient library and find substitutes.
ingredients:write Create custom ingredients.
calculate Run metrics and simulations, read calculator guides.
diagnose Analyse recipes — quality score, issues and fixes.

Try these once connected

The assistant works against your own account.

What recipes do I have, and which has the shortest shelf life?
Diagnose my dark chocolate ganache and suggest how to improve its shelf life.
What's the water activity and sugar/fat split of my salted caramel?
Simulate raising the glucose in my ganache to 120 g — how does water activity change?
Find a vegan substitute for the cream in my recipe.
Create a free account

Troubleshooting

The assistant connected but shows no tools.
Make sure authorization finished and you granted at least one scope. In Claude.ai, remove and re-add the connector; for an API key, confirm it has the permissions you need.
After authorizing, the browser doesn't return to my app.
For custom OAuth clients the redirect_uri must exactly match one you registered during client registration — including any trailing slash.
I'm getting rate-limited.
The endpoint allows 10 tool calls per minute and 1,000 per day per user. Spread out heavy batches; each call counts once.
The assistant won't delete a recipe or note.
That is deliberate. delete_recipe, delete_collection and delete_recipe_note require an explicit confirmation so nothing is removed by accident — tell the assistant to confirm.
I can't connect at all.
MCP access is governed by a global availability switch and may be briefly turned off for maintenance. Try again later, or email [email protected].

Need help?

This page is the canonical documentation for the Formul.io MCP server. Still stuck? We read every message.