Recipe Commerce Intelligence MCP
Integrates with Amazon Associates to match branded ingredients and kitchen tools to affiliate products, generating shoppable ingredient lists with commission estimates.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Recipe Commerce Intelligence MCPTurn this chocolate chip cookie recipe into a shoppable list with affiliate links"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Recipe Commerce Intelligence MCP
Turn recipes into affiliate revenue. Extract every branded ingredient and kitchen tool from any recipe, match each to Amazon Associates, ShareASale, or Awin, and generate a shoppable ingredient list in seconds. F1=100% on eval suite. Free tier: 200 calls/day.
⭐ If this saves you time, please star the repo — it helps other developers find it.
Live endpoint:
https://recipe-commerce-mcp.sincetoday.workers.dev/mcp· See examples
Extract recipes and ingredients from cooking video transcripts, match to purchasable products, and build affiliate shopping lists. Built on x402, the open payment standard backed by Shopify, Google, Microsoft, Visa, and the Linux Foundation.
Tools
Tool | Description |
| Extract structured recipe data from a cooking video transcript or YouTube URL |
| Match ingredients to purchasable products with affiliate program details |
| Generate a ranked affiliate shopping list scored by revenue potential |
Related MCP server: MCP Affiliate Server
Connect in Claude Code — No Install Required
Add to your claude_desktop_config.json or use /add-mcp in Claude Code. Free tier: 200 calls/day, no API key needed:
{
"mcpServers": {
"recipe-commerce": {
"url": "https://recipe-commerce-mcp.sincetoday.workers.dev/mcp"
}
}
}Quick Start
# Install
npm install recipe-commerce-mcp
# Configure
cp .env.example .env
# Edit .env: set OPENAI_API_KEY
# Run (stdio MCP server)
npx recipe-commerce-mcpMCP Client Config
{
"mcpServers": {
"recipe-commerce": {
"command": "npx",
"args": ["recipe-commerce-mcp"],
"env": {
"OPENAI_API_KEY": "sk-..."
}
}
}
}Tool Reference
extract_recipe_ingredients
{
"transcript": "Cooking video transcript or YouTube URL",
"recipe_id": "optional-cache-key",
"api_key": "optional-paid-key"
}Returns:
{
"result": {
"recipeName": "Beef Bourguignon",
"ingredients": [
{ "name": "beef chuck", "quantity": "2", "unit": "lbs", "category": "meat", "is_optional": false }
],
"equipment": [
{ "name": "Le Creuset Dutch oven 5.5qt", "category": "cookware", "requiredForRecipe": true }
],
"techniques": ["braising", "searing"],
"cuisineType": "French",
"difficulty": "medium"
},
"_meta": { "processing_time_ms": 1950, "ai_cost_usd": 0.0024, "cache_hit": false, "recipe_id": "..." }
}match_ingredients_to_products
{
"ingredients": [{ "name": "beef chuck", "quantity": "2", "unit": "lbs" }],
"recipe_id": "optional-uses-cached-ingredients",
"api_key": "optional"
}Returns affiliate program details (Amazon Associates, ShareASale, Awin), price range, commission rate (2–10%), brand? (extracted brand name for branded ingredients, e.g. "Maldon" for "Maldon salt"), estimatedCommission (USD estimate based on price × commission rate), and substitution alternatives.
suggest_affiliate_products
{
"recipe_name": "Beef Bourguignon",
"ingredients": [...],
"api_key": "optional"
}Returns ingredients and equipment ranked by affiliate revenue score. Equipment scores highest (10% commission via Amazon Associates).
Example Output
Real extraction from a Serious Eats beef bourguignon recipe (live eval avg: F1=93%, 98/100 score, $0.000370/call, 2608ms):
{
"recipe_id": "serious-eats-beef-bourguignon",
"ingredients": [
{
"name": "Dutch oven (5.5 qt)",
"brand": "Le Creuset",
"category": "equipment",
"is_optional": false,
"affiliate_revenue_score": 0.92,
"estimatedCommission": 8.50,
"amazon_search_terms": ["dutch oven 5.5 quart", "Le Creuset 5.5 qt"]
},
{
"name": "Maldon sea salt",
"brand": "Maldon",
"category": "ingredient",
"is_optional": false,
"affiliate_revenue_score": 0.18,
"estimatedCommission": 0.42
},
{
"name": "beef chuck",
"brand": null,
"category": "ingredient",
"is_optional": false,
"affiliate_revenue_score": 0.12,
"estimatedCommission": null,
"amazon_search_terms": null
}
]
}See /examples endpoint for full output with value narrative: https://recipe-commerce-mcp.sincetoday.workers.dev/examples
Pricing
Free tier: 200 calls/day per agent (no API key required)
Paid: $0.01/call — set
MCP_API_KEYSwith valid keys
Environment Variables
Variable | Required | Default | Description |
| Yes | — | OpenAI API key |
| No |
| Agent identifier for rate limiting |
| No | — | Comma-separated paid API keys |
| No |
| SQLite cache path |
| No |
| Set |
Development
npm install
npm run typecheck # Zero type errors
npm test # All tests pass
npm run build # Compile to dist/License
MIT — Since Today Studio
Available Tools
3 toolsextract_recipe_ingredientsA
Extract structured recipe data from transcript text or YouTube URL: recipe name, ingredients with quantity and unit, equipment list, and cooking technique tags. YouTube URL transcription requires yt-dlp installed on the server — if not available the call fails; pass raw transcript text for reliable extraction in all environments. Returns ingredient list ready for match_ingredients_to_products and suggest_affiliate_products. Call this first — both downstream tools reuse its cache. Use for recipe monetization, shoppable recipe creation, and cooking content commerce. Example: recipe_id='chocolate-chip-cookies-v1', transcript='2 cups flour...' → returns {ingredients:[{name:'flour',quantity:'2',unit:'cups',category:'pantry'},...]}.
| Name | Required | Description | Default |
|---|---|---|---|
| transcript | Yes | Raw transcript text OR a YouTube URL (e.g. https://youtube.com/watch?v=...) | |
| recipe_id | No | Optional recipe identifier for caching. Auto-derived from content if omitted. | |
| api_key | No | Optional API key for paid access beyond the free tier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It explains the success/failure condition for YouTube URLs (requires yt-dlp), caching behavior via recipe_id, and the nature of the return value. It does not elaborate on edge cases like malformed transcripts or error handling, but covers the main dependencies and output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at 7 sentences. It front-loads the core purpose, then covers critical caveats, return value, ordering, use cases, and an example. Every sentence adds necessary information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 3 parameters with full schema descriptions, no output schema, and moderate complexity. The description compensates by listing returned fields (ingredients with name, quantity, unit, category; plus recipe name, equipment, technique tags). It also explains caching and downstream dependencies, making the tool's role and output clear for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds value beyond schema descriptions by explaining that transcript can be either raw text or a YouTube URL, that recipe_id is for caching and auto-derived if omitted, and by providing an example that illustrates parameter usage and return structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool extracts structured recipe data (recipe name, ingredients, equipment, technique tags) from transcript text or YouTube URL. It distinguishes from sibling tools (match_ingredients_to_products and suggest_affiliate_products) by positioning itself as the first step that populates cache for downstream use.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says 'Call this first' and explains the dependency between this tool and its siblings. It provides clear guidance on when to use raw transcript text versus YouTube URL, including the caveat about yt-dlp installation. Use cases (recipe monetization, shoppable recipe creation) are listed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
match_ingredients_to_productsA
Match recipe ingredients to purchasable products on Amazon and specialty retailers. Returns affiliate program details (Amazon Associates, ShareASale, Awin), estimated price range, estimated commission rate (2–10%), and substitution alternatives. Commission rates are benchmark estimates — not live affiliate platform data. Use this tool for ingredient-level product details and substitutions; use suggest_affiliate_products for a revenue-ranked shopping list instead. Accepts ingredient list directly or recipe_id from a prior extract_recipe_ingredients call. Use for recipe affiliate monetization and shoppable recipe generation. Example: recipe_id='chocolate-chip-cookies-v1' → returns [{name:'flour',product:'King Arthur All-Purpose Flour',program:'Amazon Associates',estimated_commission_pct:4}].
| Name | Required | Description | Default |
|---|---|---|---|
| ingredients | No | Ingredient list from extract_recipe_ingredients. Provide this OR recipe_id. | |
| recipe_id | No | Recipe ID from a prior extraction — loads ingredients from cache. | |
| api_key | No | Optional API key for paid access beyond the free tier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses that commission rates are benchmark estimates (not live data), which is a key behavioral trait. However, it does not mention if any data is persisted or require authentication, missing some context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is concise (6 sentences), front-loaded with the core purpose, covers key aspects without redundancy, and includes a illustrative example.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Moderately complex tool with no output schema; the description adequately explains the return values (affiliate details, price range, commission rate, substitutions) and provides an example, making it complete for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and description adds value by clarifying the mutual exclusivity of ingredients and recipe_id, and providing an example output snippet, going beyond the schema's descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool matches recipe ingredients to purchasable products with affiliate details, and distinguishes itself from the sibling tool 'suggest_affiliate_products' by specifying its focus on ingredient-level details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says when to use (for ingredient-level product details) and when not (use suggest_affiliate_products for revenue-ranked shopping list), and notes that input can be an ingredient list or a recipe_id from a prior extraction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
suggest_affiliate_productsA
Generate a revenue-ranked affiliate shopping list for a recipe, sorted by estimated commission potential. Equipment ranks highest (Amazon Associates ~10% commission). Returns items sorted by affiliate score with estimated price range and commission per item. Revenue estimates are algorithmic benchmarks — not live pricing data. Use this tool for ranked shopping lists and blog monetization strategy; use match_ingredients_to_products for ingredient-level product SKUs and substitutions. Accepts ingredient list or recipe_id from extract_recipe_ingredients. Example: recipe_name='Beef Bourguignon'.
| Name | Required | Description | Default |
|---|---|---|---|
| recipe_name | Yes | Recipe name (e.g. 'Beef Bourguignon', 'Chocolate Chip Cookies') | |
| ingredients | No | Ingredient list. Provide this OR recipe_id. | |
| recipe_id | No | Recipe ID from a prior extraction — loads from cache. | |
| api_key | No | Optional API key for paid access beyond the free tier |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It notes that revenue estimates are algorithmic benchmarks (not live pricing), equipment ranks highest in commission, and the output is sorted by affiliate score with price ranges. It does not cover potential rate limits or caching behavior, but the provided details are substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise—four sentences—with no filler. It front-loads the main purpose, then provides ranking priority, usage guidelines, input constraints, and an example. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 4 parameters, no output schema, and no annotations, the description explains the output format (sorted items with price range and commission) and notes on data accuracy. Missing details like pagination or error handling, but provided information is sufficient for typical use cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with adequate parameter descriptions. The description adds context by stating the tool accepts ingredient list or recipe_id from extract_recipe_ingredients and provides an example ('recipe_name='Beef Bourguignon''). This adds meaningful usage guidance beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description begins with a specific verb-object pair: 'Generate a revenue-ranked affiliate shopping list for a recipe.' It clearly states the resource (shopping list) and the action (generate, sorted by commission). It also distinguishes from sibling tool match_ingredients_to_products by explaining that tool is for ingredient-level SKUs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use this tool ('ranked shopping lists and blog monetization strategy') and when to use the sibling tool ('ingredient-level product SKUs and substitutions'). It also specifies that it accepts an ingredient list or recipe_id from extract_recipe_ingredients, providing clear input guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool has a distinct and clear purpose: extraction, matching, and suggestion. They form a logical pipeline with no overlap.
All tool names follow a consistent verb_noun pattern with underscores: extract_recipe_ingredients, match_ingredients_to_products, suggest_affiliate_products.
Three tools is appropriate for the focused domain of recipe commerce intelligence, covering the essential workflow without excess.
The tool set covers the main workflow from extraction to product suggestion, though live pricing and direct purchase links are not included, but that aligns with the stated purpose of intelligence.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Turn any shopping list into a ready-to-checkout grocery cart across 26 European supermarkets.
Search, save, organize, cook, and share recipes with any AI assistant.
AI-powered kitchen management — pantry, recipes, meal plans, shopping lists
AI-powered recipe platform: 18 MCP tools for meal planning, grocery lists & Instacart.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceHousehold-aware kitchen brain for AI agents: manage pantry inventory with freshness tracking, shopping lists, recipe collections with cook notes and per-diner ratings, dietary profiles with allergen safety, and kitchen equipment — all through 27 tools with OAuth 2.1 authentication. Includes a free tool for ingredient-based recipe generation without an account (accounts are free!).MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to search products and generate affiliate links across European and global affiliate networks, automating product discovery and link creation for monetization.5MIT
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search recipes, compose nutritionally balanced meals, optimize weekly meal plans based on macro targets for family members, and generate consolidated grocery lists from a personal recipe database.
- AlicenseAqualityCmaintenanceConverts recipes from any source (web, YouTube, Instagram, etc.) into Thermomix format with guided cooking steps and uploads them to Cookidoo.4MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/teamsincetoday/recipe-commerce-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server