Ask about dinner. Use your real pantry.
Connect Pantryfy to ChatGPT, Claude, Cursor or another compatible MCP app. Check groceries, find saved recipes, plan meals and build shopping lists.
Free to connect. Your Pantryfy plan’s limits apply.
Setup, permissions, tools and troubleshooting
Illustrated setup guides
Choose your assistant and follow the steps. You connect by signing in to Pantryfy from the assistant (an OAuth sign-in), which works on Free, Pro and Family within your plan’s feature and usage limits.
Claude setup
Add Pantryfy to Claude from its listing in Claude’s connector directory.
Sign in to your Claude account. For a Team or Enterprise workspace, an owner may need to enable Pantryfy for your organization first.
1. Open Pantryfy’s listing
Open Pantryfy’s directory listing and choose Connect. If it says Connected, go straight to a conversation.
2. Choose your kitchen and access
Sign in to Pantryfy, choose your household and approve the permissions you want. No API key is needed.
3. Try it in a conversation
In a new Claude chat, open +, choose Connectors and enable Pantryfy. Ask: “What in my pantry expires this week?”
These are illustrations, so your assistant’s screens may look different.
Open Pantryfy in Claude · Claude’s connector guide
ChatGPT setup
Add the Pantryfy app to ChatGPT.
Pantryfy must be available for your ChatGPT plan, region and workspace. A workspace administrator may need to enable the app.
1. Open Pantryfy’s listing
Open Pantryfy’s ChatGPT listing and follow the connection prompts.
2. Sign in and choose access
Sign in to Pantryfy, choose your household and approve the read and write permissions you want. No API key is needed.
3. Use Pantryfy in a chat
Select Pantryfy from the chat’s app menu or mention it with @. Ask: “Which saved recipes use the ingredients in my pantry?”
These are illustrations, so your assistant’s screens may look different.
Open Pantryfy in ChatGPT · ChatGPT’s connected app guide
Cursor setup
Add Pantryfy to Cursor from its listing in Cursor Directory.
Install Cursor and sign in to your account. Pantryfy is available through the community Cursor Directory.
1. Add Pantryfy to Cursor
Open Pantryfy in Cursor Directory and choose Add to Cursor. Review the server installation in Cursor.
2. Sign in and choose access
Sign in to Pantryfy when prompted. Choose your household and approve the permissions you want. No API key is needed.
3. Ask about your kitchen
With Pantryfy enabled in an agent conversation, ask: “What in my pantry expires this week?” Review tool approvals when prompted.
These are illustrations, so your assistant’s screens may look different.
Open Pantryfy in Cursor Directory · Cursor’s MCP guide
Connect Pantryfy
Use your pantry, saved recipes, meal plan and shopping lists in ChatGPT, Claude, Cursor or another compatible MCP app.
Choose a directory link in the setup guide, connect Pantryfy and sign in. Select your household and approve the permissions you want. OAuth works on Free, Pro and Family, within your plan’s feature and usage limits. You need a Pantryfy account and household.
MCP (Model Context Protocol) lets an AI assistant use tools in another app.
Other MCP apps
Add https://api.pantryfy.ai/mcp/ as a remote server in your app’s MCP settings. Keep the trailing slash. Your app must support Streamable HTTP and OAuth sign-in or bearer-token authentication; no local server installation is needed.
Choose OAuth where supported. If your app needs a bearer token, create a personal API key in Pantryfy Settings (Pro or Family). OAuth connections do not need a personal API key or client secret.
Manage or revoke access in Pantryfy Settings → Agents.
Permissions and household access
Each connection works only with the household you chose when you authorized it. A tool can’t switch to a different household, even by using another household’s object ID. Everyone in the connected household can see the changes an assistant makes to the household’s shared data.
| Scope | Allows |
|---|---|
pantry:read |
Search pantry items, check expiry dates, request substitutes and read a summary of the household’s pantry, meals and lists. |
pantry:write |
Add pantry items and update their details or quantities. |
recipes:read |
Search and read saved recipes and request recipe suggestions based on the pantry. |
recipes:write |
Create recipes, import a recipe from a public URL and edit recipe metadata (title, description, servings, tags and meal types). |
planner:read |
Read a week’s meal plan. |
planner:write |
Add planned meals and mark meals cooked. |
shopping:read |
Read shopping lists and their items. |
shopping:write |
Create lists, add items, check items off and generate a list from planned meals. |
Read permissions only let the assistant look at data. They don’t allow changes. A write permission you approve lets the assistant make that kind of change, and Pantryfy doesn’t show a separate confirmation for each tool call. Look carefully at any request to edit quantities or mark meals cooked, because marking a meal cooked deducts its ingredients from pantry stock. Adding planned meals can also reserve pantry quantities for those meals, which lowers the amount the pantry shows as available.
Tool reference
The default endpoint offers all 21 tools below. Some connector profiles are restricted and offer only some of these tools. Every endpoint uses the same authentication, retention and disconnect controls. An authenticated MCP tools/list request returns each tool’s current description, its JSON input schema, and annotations that say whether the tool is read-only, destructive or open-world (reaches outside Pantryfy). Use IDs from earlier tool results in later calls. Don’t invent IDs.
| Tool | Permission | Inputs and behavior |
|---|---|---|
pantry_search |
pantry:read |
Optional query; returns matching pantry items and their IDs. |
pantry_expiring |
pantry:read |
Optional days (1–30, default 7); returns expiring items. |
pantry_substitute |
pantry:read |
ingredient, optional require_in_pantry; suggests substitutes. |
household_context |
pantry:read |
No inputs; returns pantry and meal/list counts and tonight’s dinner title. |
pantry_add |
pantry:write |
items (1–30), each with name and optional quantity, unit, location; adds items. |
pantry_update |
pantry:write |
item_id and fields to change: name, quantity, unit, location, expiry_date. Changes existing data. |
recipes_search |
recipes:read |
Optional query; searches the household’s saved recipes. |
recipes_get |
recipes:read |
recipe_id; returns ingredients and instructions. |
recipes_make_now |
recipes:read |
Optional limit (1–5); ranks saved recipes by local ingredient overlap with the pantry and applies the household’s allergen and diet exclusions. request is accepted for compatibility but does not change this local ranking. |
recipes_create |
recipes:write |
title, ingredients (objects with name, numeric quantity, unit, and optional preparation/is_optional), instructions (steps); optional description, servings, tags and preparation/cooking minutes. Saves a new recipe. |
recipes_import_url |
recipes:write |
url; fetches a public recipe page and saves the imported recipe. This tool reaches an external website and is available only on the default endpoint. |
recipes_update |
recipes:write |
recipe_id and optional title, description, servings, tags or meal types. Edits metadata, not ingredient or instruction lists. A meal type outside breakfast, lunch, dinner, dessert and snack is refused and the recipe’s current meal types are kept. |
planner_get_week |
planner:read |
week_start; returns meals with their IDs and completion state. |
planner_add_meals |
planner:write |
week_start, meals (1–28), each with recipe_id, day_of_week (0 Monday–6 Sunday), optional meal_type and servings. |
planner_complete_meal |
planner:write |
meal_id; marks the meal cooked and deducts pantry ingredients. |
shopping_list |
shopping:read |
No inputs; returns lists with IDs and item counts. |
shopping_get |
shopping:read |
Optional list_id; reads lists or one list’s items and item IDs. |
shopping_create_list |
shopping:write |
name; creates an empty list. |
shopping_add |
shopping:write |
items (1–30), each with name and optional quantity, unit, category; optional list_id selects a list; without it the items go on the newest open list made in the last 14 days (never a completed one), or a new list. |
shopping_check_item |
shopping:write |
list_id, item_id; marks an item bought. |
shopping_generate_from_week |
shopping:write |
week_start; creates a shopping list from that week’s planned meals. |
Use ISO dates (YYYY-MM-DD), and use a Monday for week_start. Unit values are case-sensitive: item, piece, dozen, bunch, bag, box, can, bottle, jar, package, stick, lb, oz, gallon, quart, pint, cup, fl oz, tbsp, tsp, kg, g, mg, L, ml.
The connector has no tools for purchases, public posting, deleting or removing data, exporting a shopping list to the pantry, or Recipe Studio. Recipe search only searches the household’s saved recipes. Suggestions use the ingredient data and household restrictions that Pantryfy has. Check labels, unknown ingredients and cross-contact yourself, because Pantryfy does not certify allergen safety.
Send every item quantity as a JSON number, never as a fraction string: 0.5 for 1/2, 0.75 for 3/4, and 1.25 for 1 1/4. Keep quantities and units out of item names. A pantry addition needs a positive quantity and defaults to 1 item when you leave the quantity out. A pantry update allows 0 to record that an item has run out. A shopping quantity can be null when no amount is given. If any quantity or unit in a batch is invalid, Pantryfy rejects the whole batch before writing anything, so correct the complete batch and send it again.
For repeating fractions, send a decimal approximation: 0.333333 for 1/3, 0.666667 for 2/3, and 1.333333 for 1 1/3. Keep at least six decimal places, and let the server do the rounding for storage. For example, {"name":"olive oil","quantity":0.333333,"unit":"cup"}. Do not send "1/3" or "0.333333" as strings. Saved recipe, pantry, and shopping quantities round to three decimal places, so these examples become 0.333, 0.667, and 1.333. The app’s fraction formatter displays them as 1/3, 2/3, and 1 1/3. It does not store an exact numerator and denominator, so scaling uses the stored decimal.
Examples
Recipe ingredient amounts and preparation are separate fields. Use numeric quantities (0.5 for 1/2, 0.75 for 3/4), and do not put amounts, units, or preparation in name. For example: {"name":"black pepper","quantity":0.5,"unit":"tsp","preparation":null} and {"name":"onion","quantity":1,"unit":"item","preparation":"sliced"}. Keep varieties and alternatives in the name, such as firm apples (Honeycrisp or Granny Smith). Use an explicit null for an unspecified quantity or unit. Pantryfy rejects the older format that sent ingredients as an array of text strings. After updating your client, refresh the connector’s tool discovery so it picks up the current format.
- “What should I use up this week?” —
pantry_expiringwith{"days":7}. - “Find my saved lentil recipes and show the ingredients.” —
recipes_search, thenrecipes_getusing a returned recipe ID. - “Add two cans of chickpeas to my pantry.” —
pantry_addwith{"items":[{"name":"chickpeas","quantity":2,"unit":"can"}]}. - “Plan that saved recipe for Monday dinner.” —
planner_add_mealswith a returned recipe ID and the selected week. - “Show this week’s shopping list.” —
shopping_list, thenshopping_getusing the chosen list ID.
OAuth and client implementation
Pantryfy uses the OAuth authorization code flow with PKCE (S256) and bearer access tokens. Read the authorization details from the discovery endpoints below instead of hardcoding them:
| Endpoint | URL |
|---|---|
MCP resource / OAuth resource value |
https://api.pantryfy.ai/mcp/; must match the connected endpoint |
| OAuth revocation | https://api.pantryfy.ai/oauth/revoke |
| Protected resource metadata | https://api.pantryfy.ai/.well-known/oauth-protected-resource |
| Authorization server metadata | https://api.pantryfy.ai/.well-known/oauth-authorization-server |
| Authorization | https://api.pantryfy.ai/oauth/authorize |
| Token exchange and refresh | https://api.pantryfy.ai/oauth/token |
| Dynamic client registration | https://api.pantryfy.ai/oauth/register |
The server supports OAuth Client ID Metadata Documents and dynamic client registration. Public clients use the token endpoint authentication method none. Send the exact resource URL above during authorization and token exchange. Access tokens last one hour. Refresh tokens rotate on use and expire after 30 days. Your client must store the new refresh token returned each time and must not replay a rotated token.
For MCP POST requests, send Content-Type: application/json, Accept: application/json, text/event-stream and Authorization: Bearer <access token>. Complete initialize and notifications/initialized before requesting tools/list. Send the negotiated MCP-Protocol-Version on later requests. The server is stateless and does not require a persistent Mcp-Session-Id. The endpoint is not a legacy SSE (server-sent events) URL.
An unauthenticated request that returns 401 with a WWW-Authenticate header is normal, because that is how OAuth discovery starts. Opening the URL in a browser does not test an authenticated MCP connection.
Data handling and disconnecting
Each tool response shares the household data you asked for with the assistant you connected. Depending on the tool and scopes, this includes pantry inventory, recipe content, meal plans and shopping lists. Substitution and recommendation tools may use the household’s dietary restrictions. URL import fetches the recipe website you supply and uses Pantryfy’s configured AI providers to read it. The other connector tools process data locally within Pantryfy. Ingredient matching does not add what you send through the connector to global learning queues. See our Privacy Policy and Terms of Service for data handling details.
Pantryfy processes connector requests and responses to carry out the action you asked for. They are not stored as chat histories, persistent MCP sessions, prompt/result caches or per-call product analytics. Request and response contents are left out of tracing. Account-level usage totals and short-lived rate-limit counters enforce service limits. Content you choose to save stays in your Pantryfy household for your use.
To revoke access, open Pantryfy Settings → Agents and choose Disconnect under Connected apps. Remove the connector from your assistant’s settings to clear it from that app as well. Some assistants remove the connector from their own settings without notifying Pantryfy. For Muse, use Disconnect Muse in Pantryfy to revoke the grant.
Pantryfy erases the connection’s access and refresh tokens, write grants, pending authorization codes, and older external-call analytics that identify the connection. An assistant can trigger the same revocation by sending a token to /oauth/revoke. After revocation, the assistant needs fresh consent to reach your household again. Pantryfy finishes any tool call already in progress before completing the disconnect. Account deactivation also erases OAuth credentials and grants.
Your saved household content stays in Pantryfy. Manage earlier conversations and their retention through your assistant’s own controls.
Troubleshooting
| Symptom | What to do |
|---|---|
| Authorized, but connection or tool discovery fails | Check the exact server URL, including /mcp/, and retry the connection. If it still fails, send support the assistant name, the time and the error or reference ID. A successful sign-in does not mean the MCP transport finished connecting. |
421 Misdirected Request |
The server rejected the request’s host. Use the canonical URL above. If it is already correct, contact support. Changing your password or approving OAuth again will not fix this error, because it comes from the server’s host configuration. |
401 after previously working |
Let the client refresh its token, or reconnect if access was revoked or the refresh token expired. |
403 or a scope error |
Check the approved permissions and household membership. For a write action, reconnect and grant its matching write scope if you want to allow it. |
rate_limited |
Wait for the retry_after_s interval before retrying. Tool calls are limited to 60 per minute per principal. |
usage_limit_reached |
If you reached a time-based allowance, wait for it to reset. If you reached a saved-item limit, delete some saved items in Pantryfy. |
feature_unavailable |
That action is not available for the connected Pantryfy account. Other permitted tools remain available. |
| An item or recipe cannot be found | Confirm the selected household and search again for its current ID. |
| Connection fails after a server restart | Let the client initialize a fresh MCP session. |
Contact [email protected] with the assistant name, the approximate time and timezone, the step that failed, and the error text or support reference. Never send passwords, API keys, access tokens or refresh tokens.
Security incidents
Report connector security concerns through Pantryfy support. If a connector security incident happens, Pantryfy’s process covers containing it, revoking credentials, keeping as little evidence data as possible, working out which users were affected, and notifying the assistant’s provider. We may send the provider a first notice and then updates as we confirm the facts.