ReciPal MCP by usefulapi

io.usefulapiPublished by usefulapi.ioOfficial publisherv1.8.4Updated Nov 7, 2026

Read recipes, nutrition and inventory, manage ingredients and costs, and render ReciPal labels.

The publisher's own server: Ably MCP by usefulapi

VerifiedStreamable HTTPWeb executableFinanceData & AnalyticsBusiness & Commerce

Overview

AI-generated overview

Connects an assistant to a ReciPal account to read recipes, nutrition, costs and inventory, edit ingredients and recipes, and render nutrition labels.

What you can do
  • List and read recipes with yield, servings, allergens, costs and full per-serving nutrition
  • Read and edit recipe formulas: add, change or remove ingredient lines, copy or scale a recipe, turn a recipe into a subrecipe
  • List and manage ingredients and their cost history, including creating and updating prices
  • Read nutrition-facts label settings and start asynchronous PDF or PNG label renders, then poll for the download link
  • Read raw-material and finished-goods inventory with reorder risk, plus ingredient and recipe tags
  • Check usage, request a feature, and manage or cancel a paid subscription
When to use it
Useful for food producers and recipe developers who keep their formulas, nutrition, costing and stock in ReciPal and want an assistant to query them, adjust recipes, or produce label files without switching apps.
Requirements
Remote MCP endpoint reached by URL only; no API key or Authorization header in the client config. Sign-in is via OAuth with the user's ReciPal credentials. An inventory plan is needed for inventory tools. Free tier allows 50 tool calls per month; paid plans raise the limit.
Before you install
Many tools write to the ReciPal account: creating, updating and deleting recipe ingredient lines, recipes, ingredients and cost entries, and starting label renders. Removing an ingredient line is permanent, and cost changes affect every recipe using that ingredient. Label renders are limited per account and polling counts toward request limits. Subscription tools can start a paid Stripe checkout or cancel Pro, with no refund for the current period.

Installation

In SourceWeft

  1. Open ReciPal MCP by usefulapi in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.usefulapi%2Frecipal/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "recipal-by-usefulapi": {
      "type": "http",
      "url": "https://recipal.usefulapi.io/mcp"
    }
  }
}

README

ReciPal MCP by usefulapi

Connect your ReciPal account.

Connect

  • Claude (claude.ai, Desktop): open Customize → Connectors, click + Add → Add custom connector, and paste https://recipal.usefulapi.io/mcp.
  • Claude Code: claude mcp add --transport http recipal https://recipal.usefulapi.io/mcp, then run /mcp to log in.
  • VS Code: Add to VS Code.
  • Cursor and other clients: add the URL as a remote MCP server:
json
{  "mcpServers": {    "recipal": {      "url": "https://recipal.usefulapi.io/mcp"    }  }}

Add only the URL. Do not add an Authorization header or an API key to the client config: the server signs you in with OAuth, and the login page asks for your ReciPal credentials.

Step-by-step setup, where to find your credentials, and FAQ: https://usefulapi.io/recipal/

Tools

ToolTypeWhat it does
recipal_list_recipesreadList recipes
recipal_get_recipereadGet recipe
recipal_list_recipe_ingredientsreadList recipe ingredients
recipal_get_recipe_ingredientreadGet recipe ingredient
recipal_list_ingredientsreadList ingredients
recipal_get_ingredientreadGet ingredient
recipal_list_ingredient_costsreadList costs of an ingredient
recipal_list_current_ingredient_costsreadList current ingredient costs
recipal_get_ingredient_costreadGet ingredient cost
recipal_get_labelreadGet label
recipal_start_label_renderwriteStart label render
recipal_get_label_render_statusreadGet label render status
recipal_list_inventoriesreadList raw-material inventory
recipal_get_inventoryreadGet raw-material inventory row
recipal_list_inventory_tagsreadList ingredient tags
recipal_list_finished_goodsreadList finished goods inventory
recipal_get_finished_goodreadGet finished goods row
recipal_list_finished_good_tagsreadList recipe tags
recipal_create_recipewriteCreate recipe
recipal_update_recipewriteUpdate recipe
recipal_scale_recipewriteCopy or scale recipe
recipal_create_recipe_from_ingredientswriteCreate recipe with ingredients
recipal_create_subrecipewriteTurn recipe into subrecipe
recipal_add_recipe_ingredientwriteAdd ingredient to recipe
recipal_update_recipe_ingredientwriteUpdate recipe ingredient amount
recipal_remove_recipe_ingredientwriteRemove ingredient from recipe
recipal_create_ingredientwriteCreate ingredient
recipal_update_ingredientwriteUpdate ingredient
recipal_create_ingredient_costwriteAdd ingredient cost
recipal_update_ingredient_costwriteUpdate ingredient cost
recipal_usage_statusmetaUsage status (free-tier meter)
recipal_request_featuremetaRequest a missing feature
recipal_upgrademetaUpgrade to Pro or Pro+
recipal_cancel_subscriptionmetaCancel the Pro subscription

read tools are read-only; write tools mutate data (clients should confirm them); meta tools report usage, manage your subscription or send a feature request.

Pricing

PlanPriceLimit
Free$050 tool calls / month
Pro (per ReciPal API key)$9/mo or $90/yr (2 months free)Unlimited*

*Pro has a fair use limit of 10,000 tool calls a month on this server. For more, write to [email protected].

Pro covers this server only. Subscribe with recipal_upgrade (it returns a Stripe Checkout link). Cancel any time with recipal_cancel_subscription: Pro continues to the end of the paid period, with no refund for the current period, and running recipal_upgrade before then undoes the cancel. Or write to [email protected].

License

MIT

Source: servers/recipal/README.md at commit 4046075

Tools

30

recipal_list_recipes

List recipes

List your recipes (products) with yield, servings, cost per batch/package and the headline per-serving nutrition (calories, fat, sodium, carbohydrate, protein). Sorted by last update by default. Set full=true for the complete object with every nutrient. Pages of up to 20; a page with fewer rows is the last. GET /recipes.

Parametersfullpagearchivedper_pagesort_fieldsort_direction

recipal_get_recipe

Get recipe

One recipe in full: yield, servings, packages, allergens, costs (ingredient + packaging/labor/overhead), ingredient list, tags, primary label path and the complete per-serving nutrition. GET /recipes/{id}.

Parametersrecipe_idrequired

recipal_list_recipe_ingredients

List recipe ingredients

The formula of one recipe: every recipe ingredient line with ingredient id, name, quantity, unit, waste %, total grams and the display name per label language. Use the line ids with recipal_update_recipe_ingredient. GET /recipes/{id}/recipe_ingredients.

Parametersrecipe_idrequired

recipal_get_recipe_ingredient

Get recipe ingredient

One ingredient line of a recipe, including units_and_grams (the units you can use for it, each with its weight in grams). GET /recipes/{recipe_id}/recipe_ingredients/{id}.

Parametersrecipe_idrequiredrecipe_ingredient_idrequired

recipal_list_ingredients

List ingredients

List your own ingredients (custom and subrecipe ingredients) with allergens, units and headline nutrition per 100 g. Set full=true for every nutrient. Archived ones are hidden unless asked for. GET /ingredients.

Parametersfullpagearchivedper_pagesort_fieldsort_direction

recipal_get_ingredient

Get ingredient

One ingredient in full (yours or a public one): allergens, ingredient-list text, custom units, and every nutrient per 100 grams. GET /ingredients/{id}.

Parametersingredient_idrequired

recipal_list_ingredient_costs

List costs of an ingredient

The cost history of one ingredient: effective date, quantity, unit, price and shipping per entry (the entry with the latest effective_at not in the future is the active one). GET /ingredients/{id}/ingredient_costs.

Parameterspageper_pageingredient_idrequired

recipal_list_current_ingredient_costs

List current ingredient costs

The currently active cost of every ingredient (one entry per ingredient): price, shipping, quantity and unit. GET /ingredient_costs.

Parameterspageper_page

recipal_get_ingredient_cost

Get ingredient cost

One ingredient cost entry by id. GET /ingredient_costs/{id}.

Parametersingredient_cost_idrequired

recipal_get_label

Get label

A recipe's saved nutrition-facts label settings (format, which rows show, styling) plus the computed nutrition claims (e.g. Fat Free) and ingredient list per language. The token is the last part of the recipe's primary_label path (/api/v1/labels/{token}). Optionally compute claims and ingredient list for another format. GET /labels/{token}.

Parameterslabel_tokenrequiredresult_format

recipal_start_label_render

Start label render

WRITE (render job): start rendering a recipe's nutrition label as a PDF or PNG and return the render status with a token. Always asynchronous: poll recipal_get_label_render_status with the token until status is ready, then give the user the temporary download url. Each account may run 5 renders in parallel. GET /recipes/{id}/label.pdf|label.png?async=true.

Parameterszoomformatrequiredpage_sizerecipe_idrequired

recipal_get_label_render_status

Get label render status

Status of a label render started with recipal_start_label_render: waiting, processing, ready or error. When ready, url is a temporary presigned download link. Poll about once a second; each poll counts toward the weekly request limit. GET /recipes/label_renders/{token}.

Parameterstokenrequired

recipal_list_inventories

List raw-material inventory

Raw-material (ingredient) stock rows: quantity on hand, weeks remaining, daily consumption, quantity on order, reorder risk (safe, warning, critical), reorder level and the on-hand value. Needs an inventory plan (otherwise 403 INVENTORY_PLAN_REQUIRED). By default sorted by weeks remaining, lowest first. GET /inventories.

Parametersqpagetagsarchivedper_pagesort_fieldsupplier_idsort_direction

recipal_get_inventory

Get raw-material inventory row

One raw-material stock row by id (quantity, unit, weeks remaining, reorder guideline, on-hand value). Needs an inventory plan. GET /inventories/{id}.

Parametersinventory_idrequired

recipal_list_inventory_tags

List ingredient tags

Ingredient tags in use with the number of ingredients carrying each, most used first. Use them to filter recipal_list_inventories. Needs an inventory plan. GET /inventories/tags.

Takes no parameters.

recipal_list_finished_goods

List finished goods inventory

Finished-goods stock rows: recipe, quantity on hand, unit, total packages, lot-code settings, case/pallet sizes and the on-hand value. Needs an inventory plan. GET /finished_goods.

Parametersqpagetagsarchivedper_pagesort_fieldsort_direction

recipal_get_finished_good

Get finished goods row

One finished-goods stock row by id. Needs an inventory plan. GET /finished_goods/{id}.

Parametersfinished_good_idrequired

recipal_list_finished_good_tags

List recipe tags

Recipe tags in use with the number of recipes carrying each, most used first. Use them to filter recipal_list_finished_goods. Needs an inventory plan. GET /finished_goods/tags.

Takes no parameters.

recipal_create_recipe

Create recipe

WRITE: create a new, empty recipe (add ingredient lines with recipal_add_recipe_ingredient, or use recipal_create_recipe_from_ingredients to do both at once). All fields are optional. Creates a record in your ReciPal account; it counts against the plan's recipe allowance. POST /recipes.

Parametersskunamepackagesservingsallergenslabor_costpreparationoverhead_costpackaging_costsubrecipe_nameingredient_listsuggested_serving+5 more

recipal_update_recipe

Update recipe

WRITE: change fields of one recipe; fields you leave out stay unchanged. package_yield_quantity "default" sets the package weight to the total weight of the current ingredients (no moisture loss accounted for); ingredient_list "default" rebuilds the label ingredient list in descending weight order. Changes labels and costs of this recipe. Tags cannot be set here. PUT /recipes/{id}.

Parametersskunamepackagesservingsallergensrecipe_idrequiredlabor_costpreparationoverhead_costpackaging_costsubrecipe_nameingredient_list+6 more

recipal_scale_recipe

Copy or scale recipe

WRITE: create a NEW recipe as a copy of an existing one, with every ingredient quantity and the yield multiplied by scale_amount (1 = plain copy; per-serving nutrition stays the same; scaling down cannot take packages below 1). Costs and tags carry over. The original is not changed. Without a name the copy is called "<name> (copy)" or "<name> <n>x". POST /recipes/{id}/scale.

Parametersnamerecipe_idrequiredscale_amount

recipal_create_recipe_from_ingredients

Create recipe with ingredients

WRITE: create a new recipe and its ingredient lines in one call. ingredients lists ingredient ids with the weight of each in grams. Optional yield, servings and packaging fields as in recipal_create_recipe. Creates a record in your ReciPal account. POST /recipes/shortcut.

Parametersskunamepackagesservingsallergenslabor_costingredientsrequiredpreparationoverhead_costpackaging_costsubrecipe_nameingredient_list+6 more

recipal_create_subrecipe

Turn recipe into subrecipe

WRITE: turn a recipe into an ingredient (a subrecipe) with its nutrition, costing and ingredient list, so it can be used inside other recipes. Later changes to the recipe flow through to the ingredient. Fails if the recipe is empty. Returns the new ingredient. POST /recipes/{id}/create_subrecipe.

Parametersrecipe_idrequired

recipal_add_recipe_ingredient

Add ingredient to recipe

WRITE: add an ingredient line to a recipe, by unit and quantity (the unit must be one the ingredient offers, e.g. "1 cup" or "1 gram"; see units_and_grams from recipal_get_recipe_ingredient or valid_units from recipal_get_ingredient) or directly by total_grams (overrides unit and quantity). Changes the recipe's nutrition, label and cost. POST /recipes/{id}/recipe_ingredients.

Parametersunitwastequantityrecipe_idrequiredtotal_gramsingredient_idrequired

recipal_update_recipe_ingredient

Update recipe ingredient amount

WRITE: change the AMOUNT of one ingredient line in a recipe (unit, quantity, waste or total_grams; total_grams overrides unit and quantity). It cannot swap the ingredient: remove the line and add another instead. Changes the recipe's nutrition, label and cost. PUT /recipes/{recipe_id}/recipe_ingredients/{id}.

Parametersunitwastequantityrecipe_idrequiredtotal_gramsrecipe_ingredient_idrequired

recipal_remove_recipe_ingredient

Remove ingredient from recipe

WRITE (destructive): permanently remove one ingredient line from a recipe. It cannot be undone, but the same ingredient can be added back (with recipal_add_recipe_ingredient). Changes the recipe's nutrition, label and cost. The ingredient itself is not deleted. DELETE /recipes/{recipe_id}/recipe_ingredients/{id}.

Parametersrecipe_idrequiredrecipe_ingredient_idrequired

recipal_create_ingredient

Create ingredient

WRITE: create a custom ingredient (private to your account) with its nutrition facts. For a food ingredient give nutrition_unit and nutrition_quantity (the serving the nutrients are entered for, e.g. 1 cup; for units beyond gram/oz/lb/kg add them in measures first) and all required nutrients. food and non_food cannot be changed later. Non-food items: set food=false and non_food to labor, packaging, safety, other_hourly or other_fixed. POST /ingredients.

Parametersfoodnamerequiredbrandsourcemeasuresnon_foodallergensnutrientsnutrition_unitingredient_listnutrition_quantity

recipal_update_ingredient

Update ingredient

WRITE: change fields of one of YOUR ingredients (public ingredients cannot be edited); fields you leave out stay unchanged. If nutrition_unit, nutrition_quantity or their measure change, nutrients you do not pass are rescaled to keep the same amount per serving. measures REPLACES the whole list of custom units, so send them all. Setting archived true hides the ingredient from lists; false restores it. The change flows into every recipe using the ingredient. PUT /ingredients/{id}.

Parametersnamebrandsourcearchivedmeasuresallergensnutrientsingredient_idrequirednutrition_unitingredient_listnutrition_quantity

recipal_create_ingredient_cost

Add ingredient cost

WRITE: add a price for an ingredient that becomes active on effective_at (the active cost is the one with the latest effective_at not after the date; one cost per ingredient per date). price and shipping are per quantity x unit. Changes the cost of every recipe using the ingredient from that date. Not allowed for subrecipe ingredients. POST /ingredient_costs.

Parametersunitrequiredpricequantityshippingeffective_atrequiredingredient_idrequired

recipal_update_ingredient_cost

Update ingredient cost

WRITE: change an existing ingredient cost entry (date, unit, quantity, price, shipping); fields you leave out stay unchanged. Changes recipe costs that depend on it. Not allowed for subrecipe ingredients. PUT /ingredient_costs/{id}.

Parametersunitpricequantityshippingeffective_atingredient_cost_idrequired

Version history

10
  1. v1.8.4LatestNov 7, 2026
  2. v1.7.3Nov 5, 2026
  3. v1.7.2Nov 5, 2026
  4. v1.7.1Nov 4, 2026
  5. v1.7.0Nov 3, 2026
  6. v1.6.1Nov 3, 2026
  7. v1.5.0Nov 1, 2026
  8. v1.3.0Oct 31, 2026
  9. v1.2.0Oct 31, 2026
  10. v1.1.0Oct 31, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts

Other Usefulapi integrations