JSON API
The base URL is https://irontofu.com/api/v1. An OpenAPI description is available.
Search and list recipes
GET https://irontofu.com/api/v1/recipes
| Parameter | Meaning |
|---|---|
q | Words to find in the title, description, ingredients, tags or cuisine. |
course | One of breakfast, main, soup, salad, side, snack, dessert, drink, basic. |
cuisine | A cuisine name, such as Indian. |
difficulty | One of easy, medium, hard. |
max_minutes | Longest total time, prep plus cooking. |
tag | Tags the recipe must have. Repeat it or separate values with commas. |
ingredient | Ingredients the recipe must use. Repeat it or separate with commas. |
exclude | Ingredients the recipe must not use. |
sort | One of relevance, newest, quickest, protein, title. |
page, per_page |
Paging. 20 per page unless you ask otherwise, 50 at most. |
curl "https://irontofu.com/api/v1/recipes?ingredient=tofu&max_minutes=30"
The response has a data array of recipe summaries, each with its nutrition per
serving, and a meta object with
total, page, per_page and pages.
Get one recipe
GET https://irontofu.com/api/v1/recipes/{slug}
Returns the full recipe with ingredients, steps, notes and nutrition per serving. Each ingredient comes both
as a display line and split into quantity, unit, name and note, with a metric equivalent in grams
or millilitres when it is measured in spoons or by count. Add servings to scale the quantities.
curl "https://irontofu.com/api/v1/recipes/apple-crumble?servings=6"
Get a random recipe
GET https://irontofu.com/api/v1/recipes/random
Takes the same filters as the list, so you can ask for a random dessert or a random 20-minute main.
List the filter values
GET https://irontofu.com/api/v1/facets
Returns the courses, cuisines, difficulties and tags in use, each with its number of recipes.
Errors
Errors come back as JSON with a matching status code: 400 for a bad parameter, 404 for a recipe that does not exist.
{ "error": { "code": "not_found", "message": "No recipe with the slug \"nope\"" } }
MCP server
The server speaks Streamable HTTP at https://irontofu.com/mcp. Add it to any MCP client that supports remote servers.
In Claude Code:
claude mcp add --transport http irontofu https://irontofu.com/mcp
In clients configured with JSON:
{
"mcpServers": {
"irontofu": {
"type": "http",
"url": "https://irontofu.com/mcp"
}
}
}
Tools
| Tool | What it does |
|---|---|
search_recipes |
Finds recipes by text, course, cuisine, tags, time, and ingredients to include or avoid. |
get_recipe | Returns one recipe in full, scaled to a number of servings if asked. |
random_recipe | Picks a recipe at random, with the same filters as search. |
list_filters | Lists the courses, cuisines, difficulties and tags in use. |