Edamam · Capability

Edamam Recipe Search — Recipe Search

Recipe Search — Recipe Search. 3 operations. Lead operation: Search for a Recipe. Self-contained Naftiko capability covering one Edamam business surface.

Run with Naftiko EdamamRecipe SearchFood And Drink

What You Can Do

GET
Searchforrecipe — Search for a recipe.
/v1/recipes
GET
Lookuprecipesbyuri — Lookup recipes by URI.
/v1/recipes/by-uri
GET
Lookuprecipebyid — Lookup a recipe by ID.
/v1/recipes/{id}

MCP Tools

search-recipes

Search for recipes by query and filters.

read-only idempotent
lookup-recipes-by-uri

Lookup one or more recipes by URI.

read-only idempotent
lookup-recipe-by-id

Lookup a specific recipe by ID.

read-only idempotent

Capability Spec

recipe-search-recipe-search.yaml Raw ↑
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: "$."