naftiko: "1.0.0-alpha2" info: label: "Edamam Recipe Search — Recipe Search" description: >- Recipe Search — Recipe Search. 3 operations. Lead operation: Search for a Recipe. Self-contained Naftiko capability covering one Edamam business surface. tags: - Edamam - Recipe Search - Food And Drink created: "2026-05-30" modified: "2026-05-30" binds: - namespace: env keys: EDAMAM_RECIPE_APP_ID: EDAMAM_RECIPE_APP_ID EDAMAM_RECIPE_APP_KEY: EDAMAM_RECIPE_APP_KEY EDAMAM_ACCOUNT_USER: EDAMAM_ACCOUNT_USER capability: consumes: - type: http namespace: "recipe-search-recipe-search" baseUri: "https://api.edamam.com" description: "Edamam Recipe Search API v2 — Recipe Search surface. Self-contained, no shared references." authentication: type: apikey key: app_id value: "{{env.EDAMAM_RECIPE_APP_ID}}" placement: query resources: - name: "recipes-v2" path: "/api/recipes/v2" operations: - name: "searchForRecipe" method: GET description: "Search for a recipe by query, filters, diet, health labels, cuisine, meal, dish type." inputParameters: - name: type in: query type: string required: true description: "public | user | any (request type)." - name: q in: query type: string required: false description: "Free-text query for recipe search." - name: app_id in: query type: string required: true description: "Edamam Recipe app_id." - name: app_key in: query type: string required: true description: "Edamam Recipe app_key." - name: diet in: query type: array required: false description: "Diet labels (balanced, high-fiber, high-protein, low-carb, low-fat, low-sodium)." - name: health in: query type: array required: false description: "Health/allergen labels (vegan, gluten-free, keto-friendly, etc.)." - name: cuisineType in: query type: array required: false description: "Cuisine filter (American, Asian, Chinese, French, Indian, Italian, etc.)." - name: mealType in: query type: array required: false description: "Meal type (breakfast, brunch, lunch/dinner, snack, teatime)." - name: dishType in: query type: array required: false description: "Dish type filter." - name: calories in: query type: string required: false description: "Calorie range filter (e.g. 100-300, 500+)." - name: time in: query type: string required: false description: "Total time range in minutes." - name: excluded in: query type: array required: false description: "Ingredients to exclude." - name: nutrients in: query type: array required: false description: "Per-nutrient range filters (e.g. nutrients[PROCNT]=20+)." - name: glycemicIndex in: query type: string required: false description: "Glycemic index range." - name: random in: query type: boolean required: false description: "Return random subset of matches." - name: imageSize in: query type: array required: false description: "Image sizes to include (THUMBNAIL, SMALL, REGULAR, LARGE)." - name: beta in: query type: boolean required: false description: "Include beta features such as CO2e emissions." - name: Edamam-Account-User in: header type: string required: false description: "Active User Tracking header (required for Enterprise plans)." outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: "recipes-v2-by-uri" path: "/api/recipes/v2/by-uri" operations: - name: "lookupRecipesByUri" method: GET description: "Lookup one or more recipes by their Edamam URIs." inputParameters: - name: type in: query type: string required: true - name: uri in: query type: array required: true description: "One or more recipe URIs." - name: app_id in: query type: string required: true - name: app_key in: query type: string required: true - name: Edamam-Account-User in: header type: string required: false outputRawFormat: json outputParameters: - name: result type: object value: "$." - name: "recipes-v2-by-id" path: "/api/recipes/v2/{id}" operations: - name: "lookupRecipeById" method: GET description: "Lookup a single recipe by its Edamam ID." inputParameters: - name: id in: path type: string required: true description: "Recipe ID." - name: type in: query type: string required: true - name: app_id in: query type: string required: true - name: app_key in: query type: string required: true - name: Edamam-Account-User in: header type: string required: false outputRawFormat: json outputParameters: - name: result type: object value: "$." exposes: - type: rest namespace: "recipe-search-recipe-search-rest" port: 8080 description: "REST adapter for Edamam Recipe Search. One Spectral-compliant resource per consumed operation, prefixed with /v1." resources: - path: "/v1/recipes" name: "recipes" description: "REST surface for recipe search." operations: - method: GET name: "searchForRecipe" description: "Search for a recipe." call: "recipe-search-recipe-search.searchForRecipe" with: type: "rest.type" q: "rest.q" app_id: "rest.app_id" app_key: "rest.app_key" diet: "rest.diet" health: "rest.health" cuisineType: "rest.cuisineType" mealType: "rest.mealType" dishType: "rest.dishType" calories: "rest.calories" time: "rest.time" excluded: "rest.excluded" nutrients: "rest.nutrients" glycemicIndex: "rest.glycemicIndex" random: "rest.random" imageSize: "rest.imageSize" beta: "rest.beta" Edamam-Account-User: "rest.Edamam-Account-User" outputParameters: - type: object mapping: "$." - path: "/v1/recipes/by-uri" name: "recipes-by-uri" description: "Lookup recipes by URI." operations: - method: GET name: "lookupRecipesByUri" description: "Lookup recipes by URI." call: "recipe-search-recipe-search.lookupRecipesByUri" with: type: "rest.type" uri: "rest.uri" app_id: "rest.app_id" app_key: "rest.app_key" Edamam-Account-User: "rest.Edamam-Account-User" outputParameters: - type: object mapping: "$." - path: "/v1/recipes/{id}" name: "recipes-by-id" description: "Lookup a recipe by ID." operations: - method: GET name: "lookupRecipeById" description: "Lookup a recipe by ID." call: "recipe-search-recipe-search.lookupRecipeById" with: id: "rest.id" type: "rest.type" app_id: "rest.app_id" app_key: "rest.app_key" Edamam-Account-User: "rest.Edamam-Account-User" outputParameters: - type: object mapping: "$." - type: mcp namespace: "recipe-search-recipe-search-mcp" port: 9090 transport: http description: "MCP adapter for Edamam Recipe Search. One tool per consumed operation." tools: - name: "search-recipes" description: "Search for recipes by query and filters." hints: readOnly: true destructive: false idempotent: true call: "recipe-search-recipe-search.searchForRecipe" with: type: "tools.type" q: "tools.q" app_id: "tools.app_id" app_key: "tools.app_key" diet: "tools.diet" health: "tools.health" cuisineType: "tools.cuisineType" mealType: "tools.mealType" dishType: "tools.dishType" calories: "tools.calories" time: "tools.time" excluded: "tools.excluded" nutrients: "tools.nutrients" glycemicIndex: "tools.glycemicIndex" random: "tools.random" imageSize: "tools.imageSize" beta: "tools.beta" Edamam-Account-User: "tools.Edamam-Account-User" outputParameters: - type: object mapping: "$." - name: "lookup-recipes-by-uri" description: "Lookup one or more recipes by URI." hints: readOnly: true destructive: false idempotent: true call: "recipe-search-recipe-search.lookupRecipesByUri" with: type: "tools.type" uri: "tools.uri" app_id: "tools.app_id" app_key: "tools.app_key" Edamam-Account-User: "tools.Edamam-Account-User" outputParameters: - type: object mapping: "$." - name: "lookup-recipe-by-id" description: "Lookup a specific recipe by ID." hints: readOnly: true destructive: false idempotent: true call: "recipe-search-recipe-search.lookupRecipeById" with: id: "tools.id" type: "tools.type" app_id: "tools.app_id" app_key: "tools.app_key" Edamam-Account-User: "tools.Edamam-Account-User" outputParameters: - type: object mapping: "$."