Edamam · Capability

Edamam Food Database — Food Database

Food Database — Parser, Nutrients, AI Vision, Autocomplete. 4 operations. Lead operation: Food Search. Self-contained Naftiko capability covering one Edamam business surface.

Run with Naftiko EdamamFood DatabaseFood And Drink

What You Can Do

GET
Searchfood — Search foods by keyword, brand, or UPC.
/v1/foods/search
POST
Lookupnutrients — Full nutrition lookup.
/v1/foods/nutrients
POST
Analyzefoodimage — Nutrition lookup from a food image.
/v1/foods/image
GET
Autocompletefoodsearch — Food search autocomplete.
/v1/foods/autocomplete

MCP Tools

search-foods

Search foods by keyword, brand, or UPC.

read-only idempotent
lookup-nutrients

Resolve nutrients for foods + measures.

read-only
analyze-food-image

Nutrition lookup from a food image (AI Vision).

read-only
autocomplete-foods

Autocomplete food search.

read-only idempotent

Capability Spec

food-database-food-database.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "Edamam Food Database — Food Database"
  description: >-
    Food Database — Parser, Nutrients, AI Vision, Autocomplete. 4 operations. Lead operation: Food Search.
    Self-contained Naftiko capability covering one Edamam business surface.
  tags:
    - Edamam
    - Food Database
    - Food And Drink
  created: "2026-05-30"
  modified: "2026-05-30"

binds:
  - namespace: env
    keys:
      EDAMAM_FOOD_APP_ID: EDAMAM_FOOD_APP_ID
      EDAMAM_FOOD_APP_KEY: EDAMAM_FOOD_APP_KEY

capability:

  consumes:
    - type: http
      namespace: "food-database-food-database"
      baseUri: "https://api.edamam.com"
      description: "Edamam Food Database API v2 — keyword/UPC food parsing, nutrient lookup, AI vision, autocomplete."
      authentication:
        type: apikey
        key: app_id
        value: "{{env.EDAMAM_FOOD_APP_ID}}"
        placement: query
      resources:
        - name: "food-database-parser"
          path: "/api/food-database/v2/parser"
          operations:
            - name: "searchFood"
              method: GET
              description: "Food search by keyword, brand or UPC/EAN barcode."
              inputParameters:
                - name: app_id
                  in: query
                  type: string
                  required: true
                - name: app_key
                  in: query
                  type: string
                  required: true
                - name: ingr
                  in: query
                  type: string
                  required: false
                - name: brand
                  in: query
                  type: string
                  required: false
                - name: upc
                  in: query
                  type: string
                  required: false
                - name: nutrition-type
                  in: query
                  type: string
                  required: false
                - name: health
                  in: query
                  type: array
                  required: false
                - name: calories
                  in: query
                  type: string
                  required: false
                - name: category
                  in: query
                  type: string
                  required: false
                - name: categoryLabel
                  in: query
                  type: string
                  required: false
                - name: Edamam-Account-User
                  in: header
                  type: string
                  required: false
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "food-database-nutrients"
          path: "/api/food-database/v2/nutrients"
          operations:
            - name: "lookupNutrients"
              method: POST
              description: "Full nutrition lookup for one or more resolved food + measure quantities."
              inputParameters:
                - name: app_id
                  in: query
                  type: string
                  required: true
                - name: app_key
                  in: query
                  type: string
                  required: true
                - name: body
                  in: body
                  type: object
                  required: true
                  description: "ingredients[]: {quantity, measureURI, foodId}."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "food-database-image"
          path: "/api/food-database/v2/image"
          operations:
            - name: "analyzeFoodImage"
              method: POST
              description: "Full nutrition lookup from a food image (URL or base64 data URI). Beta."
              inputParameters:
                - name: app_id
                  in: query
                  type: string
                  required: true
                - name: app_key
                  in: query
                  type: string
                  required: true
                - name: body
                  in: body
                  type: object
                  required: true
                  description: "{ image: <url|data:>, ... }."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "food-database-autocomplete"
          path: "/auto-complete"
          operations:
            - name: "autocompleteFoodSearch"
              method: GET
              description: "Autocomplete suggestions for food search input."
              inputParameters:
                - name: app_id
                  in: query
                  type: string
                  required: true
                - name: app_key
                  in: query
                  type: string
                  required: true
                - name: q
                  in: query
                  type: string
                  required: true
                - name: limit
                  in: query
                  type: integer
                  required: false
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."

  exposes:
    - type: rest
      namespace: "food-database-food-database-rest"
      port: 8080
      description: "REST adapter for Edamam Food Database."
      resources:
        - path: "/v1/foods/search"
          name: "foods-search"
          description: "Food search."
          operations:
            - method: GET
              name: "searchFood"
              description: "Search foods by keyword, brand, or UPC."
              call: "food-database-food-database.searchFood"
              with:
                app_id: "rest.app_id"
                app_key: "rest.app_key"
                ingr: "rest.ingr"
                brand: "rest.brand"
                upc: "rest.upc"
                nutrition-type: "rest.nutrition-type"
                health: "rest.health"
                calories: "rest.calories"
                category: "rest.category"
                categoryLabel: "rest.categoryLabel"
                Edamam-Account-User: "rest.Edamam-Account-User"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/foods/nutrients"
          name: "foods-nutrients"
          description: "Resolve nutrients for foods + measures."
          operations:
            - method: POST
              name: "lookupNutrients"
              description: "Full nutrition lookup."
              call: "food-database-food-database.lookupNutrients"
              with:
                app_id: "rest.app_id"
                app_key: "rest.app_key"
                body: "rest.body"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/foods/image"
          name: "foods-image"
          description: "Nutrition from image (AI Vision)."
          operations:
            - method: POST
              name: "analyzeFoodImage"
              description: "Nutrition lookup from a food image."
              call: "food-database-food-database.analyzeFoodImage"
              with:
                app_id: "rest.app_id"
                app_key: "rest.app_key"
                body: "rest.body"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/foods/autocomplete"
          name: "foods-autocomplete"
          description: "Autocomplete food search."
          operations:
            - method: GET
              name: "autocompleteFoodSearch"
              description: "Food search autocomplete."
              call: "food-database-food-database.autocompleteFoodSearch"
              with:
                app_id: "rest.app_id"
                app_key: "rest.app_key"
                q: "rest.q"
                limit: "rest.limit"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      namespace: "food-database-food-database-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for Edamam Food Database."
      tools:
        - name: "search-foods"
          description: "Search foods by keyword, brand, or UPC."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "food-database-food-database.searchFood"
          with:
            app_id: "tools.app_id"
            app_key: "tools.app_key"
            ingr: "tools.ingr"
            brand: "tools.brand"
            upc: "tools.upc"
            nutrition-type: "tools.nutrition-type"
            health: "tools.health"
            calories: "tools.calories"
            category: "tools.category"
            categoryLabel: "tools.categoryLabel"
            Edamam-Account-User: "tools.Edamam-Account-User"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "lookup-nutrients"
          description: "Resolve nutrients for foods + measures."
          hints:
            readOnly: true
            destructive: false
            idempotent: false
          call: "food-database-food-database.lookupNutrients"
          with:
            app_id: "tools.app_id"
            app_key: "tools.app_key"
            body: "tools.body"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "analyze-food-image"
          description: "Nutrition lookup from a food image (AI Vision)."
          hints:
            readOnly: true
            destructive: false
            idempotent: false
          call: "food-database-food-database.analyzeFoodImage"
          with:
            app_id: "tools.app_id"
            app_key: "tools.app_key"
            body: "tools.body"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "autocomplete-foods"
          description: "Autocomplete food search."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "food-database-food-database.autocompleteFoodSearch"
          with:
            app_id: "tools.app_id"
            app_key: "tools.app_key"
            q: "tools.q"
            limit: "tools.limit"
          outputParameters:
            - type: object
              mapping: "$."