NYPL What's On The Menu API — Dishes

NYPL What's On The Menu API — Dishes. 4 operations. Lead operation: List dishes. Self-contained Naftiko capability covering one New York Public Library Whats On The Menu business surface.

Run with Naftiko New York Public Library Whats On The MenuDishes

What You Can Do

GET
Get — List dishes
/v1/dishes
GET
Get — Search dishes
/v1/dishes/search
GET
Get — Get dish
/v1/dishes/{id}
GET
Get — Get menus for a dish
/v1/dishes/{id}/menus

MCP Tools

list-dishes

List dishes

read-only idempotent
search-dishes

Search dishes

read-only idempotent
get-dish

Get dish

read-only idempotent
get-menus-dish

Get menus for a dish

read-only idempotent

Capability Spec

new-york-public-library-whats-on-the-menu-dishes.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: NYPL What's On The Menu API — Dishes
  description: 'NYPL What''s On The Menu API — Dishes. 4 operations. Lead operation: List dishes. Self-contained Naftiko capability
    covering one New York Public Library Whats On The Menu business surface.'
  tags:
  - New York Public Library Whats On The Menu
  - Dishes
  created: '2026-05-19'
  modified: '2026-05-19'
binds:
- namespace: env
  keys:
    NEW_YORK_PUBLIC_LIBRARY_WHATS_ON_THE_MENU_API_KEY: NEW_YORK_PUBLIC_LIBRARY_WHATS_ON_THE_MENU_API_KEY
capability:
  consumes:
  - type: http
    namespace: new-york-public-library-whats-on-the-menu-dishes
    baseUri: http://api.menus.nypl.org
    description: NYPL What's On The Menu API — Dishes business capability. Self-contained, no shared references.
    resources:
    - name: dishes
      path: /dishes
      operations:
      - name: get
        method: GET
        description: List dishes
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: min_year
          in: query
          type: integer
        - name: max_year
          in: query
          type: integer
        - name: sort_by
          in: query
          type: string
    - name: dishes-search
      path: /dishes/search
      operations:
      - name: get
        method: GET
        description: Search dishes
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: query
          in: query
          type: string
          required: true
        - name: sort_by
          in: query
          type: string
    - name: dishes-id
      path: /dishes/{id}
      operations:
      - name: get
        method: GET
        description: Get dish
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
    - name: dishes-id-menus
      path: /dishes/{id}/menus
      operations:
      - name: get
        method: GET
        description: Get menus for a dish
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
    authentication:
      type: apikey
      key: token
      value: '{{env.NEW_YORK_PUBLIC_LIBRARY_WHATS_ON_THE_MENU_API_KEY}}'
      placement: query
  exposes:
  - type: rest
    namespace: new-york-public-library-whats-on-the-menu-dishes-rest
    port: 8080
    description: REST adapter for NYPL What's On The Menu API — Dishes. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/dishes
      name: dishes
      description: REST surface for dishes.
      operations:
      - method: GET
        name: get
        description: List dishes
        call: new-york-public-library-whats-on-the-menu-dishes.get
        with:
          min_year: rest.min_year
          max_year: rest.max_year
          sort_by: rest.sort_by
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/dishes/search
      name: dishes-search
      description: REST surface for dishes-search.
      operations:
      - method: GET
        name: get
        description: Search dishes
        call: new-york-public-library-whats-on-the-menu-dishes.get
        with:
          query: rest.query
          sort_by: rest.sort_by
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/dishes/{id}
      name: dishes-id
      description: REST surface for dishes-id.
      operations:
      - method: GET
        name: get
        description: Get dish
        call: new-york-public-library-whats-on-the-menu-dishes.get
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/dishes/{id}/menus
      name: dishes-id-menus
      description: REST surface for dishes-id-menus.
      operations:
      - method: GET
        name: get
        description: Get menus for a dish
        call: new-york-public-library-whats-on-the-menu-dishes.get
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: new-york-public-library-whats-on-the-menu-dishes-mcp
    port: 9090
    transport: http
    description: MCP adapter for NYPL What's On The Menu API — Dishes. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: list-dishes
      description: List dishes
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: new-york-public-library-whats-on-the-menu-dishes.get
      with:
        min_year: tools.min_year
        max_year: tools.max_year
        sort_by: tools.sort_by
      outputParameters:
      - type: object
        mapping: $.
    - name: search-dishes
      description: Search dishes
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: new-york-public-library-whats-on-the-menu-dishes.get
      with:
        query: tools.query
        sort_by: tools.sort_by
      outputParameters:
      - type: object
        mapping: $.
    - name: get-dish
      description: Get dish
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: new-york-public-library-whats-on-the-menu-dishes.get
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-menus-dish
      description: Get menus for a dish
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: new-york-public-library-whats-on-the-menu-dishes.get
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.