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
ParameterMeaning
qWords to find in the title, description, ingredients, tags or cuisine.
courseOne of breakfast, main, soup, salad, side, snack, dessert, drink, basic.
cuisineA cuisine name, such as Indian.
difficultyOne of easy, medium, hard.
max_minutesLongest total time, prep plus cooking.
tagTags the recipe must have. Repeat it or separate values with commas.
ingredientIngredients the recipe must use. Repeat it or separate with commas.
excludeIngredients the recipe must not use.
sortOne 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

ToolWhat it does
search_recipes Finds recipes by text, course, cuisine, tags, time, and ingredients to include or avoid.
get_recipeReturns one recipe in full, scaled to a number of servings if asked.
random_recipePicks a recipe at random, with the same filters as search.
list_filtersLists the courses, cuisines, difficulties and tags in use.