NYPL What's On The Menu API — Menus

NYPL What's On The Menu API — Menus. 5 operations. Lead operation: List menus. 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 MenuMenus

What You Can Do

GET
Get — List menus
/v1/menus
GET
Get — Search menus
/v1/menus/search
GET
Get — Get menu
/v1/menus/{id}
GET
Get — Get menu dishes
/v1/menus/{id}/dishes
GET
Get — Get menu pages
/v1/menus/{id}/pages

MCP Tools

list-menus

List menus

read-only idempotent
search-menus

Search menus

read-only idempotent
get-menu

Get menu

read-only idempotent
get-menu-dishes

Get menu dishes

read-only idempotent
get-menu-pages

Get menu pages

read-only idempotent

Capability Spec

new-york-public-library-whats-on-the-menu-menus.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: NYPL What's On The Menu API — Menus
  description: 'NYPL What''s On The Menu API — Menus. 5 operations. Lead operation: List menus. 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
  - Menus
  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-menus
    baseUri: http://api.menus.nypl.org
    description: NYPL What's On The Menu API — Menus business capability. Self-contained, no shared references.
    resources:
    - name: menus
      path: /menus
      operations:
      - name: get
        method: GET
        description: List menus
        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: status
          in: query
          type: string
    - name: menus-search
      path: /menus/search
      operations:
      - name: get
        method: GET
        description: Search menus
        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: menus-id
      path: /menus/{id}
      operations:
      - name: get
        method: GET
        description: Get menu
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
    - name: menus-id-dishes
      path: /menus/{id}/dishes
      operations:
      - name: get
        method: GET
        description: Get menu dishes
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: integer
          required: true
    - name: menus-id-pages
      path: /menus/{id}/pages
      operations:
      - name: get
        method: GET
        description: Get menu pages
        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-menus-rest
    port: 8080
    description: REST adapter for NYPL What's On The Menu API — Menus. One Spectral-compliant resource per consumed operation,
      prefixed with /v1.
    resources:
    - path: /v1/menus
      name: menus
      description: REST surface for menus.
      operations:
      - method: GET
        name: get
        description: List menus
        call: new-york-public-library-whats-on-the-menu-menus.get
        with:
          min_year: rest.min_year
          max_year: rest.max_year
          sort_by: rest.sort_by
          status: rest.status
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/menus/search
      name: menus-search
      description: REST surface for menus-search.
      operations:
      - method: GET
        name: get
        description: Search menus
        call: new-york-public-library-whats-on-the-menu-menus.get
        with:
          query: rest.query
          sort_by: rest.sort_by
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/menus/{id}
      name: menus-id
      description: REST surface for menus-id.
      operations:
      - method: GET
        name: get
        description: Get menu
        call: new-york-public-library-whats-on-the-menu-menus.get
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/menus/{id}/dishes
      name: menus-id-dishes
      description: REST surface for menus-id-dishes.
      operations:
      - method: GET
        name: get
        description: Get menu dishes
        call: new-york-public-library-whats-on-the-menu-menus.get
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
    - path: /v1/menus/{id}/pages
      name: menus-id-pages
      description: REST surface for menus-id-pages.
      operations:
      - method: GET
        name: get
        description: Get menu pages
        call: new-york-public-library-whats-on-the-menu-menus.get
        with:
          id: rest.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: new-york-public-library-whats-on-the-menu-menus-mcp
    port: 9090
    transport: http
    description: MCP adapter for NYPL What's On The Menu API — Menus. One tool per consumed operation, routed inline through
      this capability's consumes block.
    tools:
    - name: list-menus
      description: List menus
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: new-york-public-library-whats-on-the-menu-menus.get
      with:
        min_year: tools.min_year
        max_year: tools.max_year
        sort_by: tools.sort_by
        status: tools.status
      outputParameters:
      - type: object
        mapping: $.
    - name: search-menus
      description: Search menus
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: new-york-public-library-whats-on-the-menu-menus.get
      with:
        query: tools.query
        sort_by: tools.sort_by
      outputParameters:
      - type: object
        mapping: $.
    - name: get-menu
      description: Get menu
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: new-york-public-library-whats-on-the-menu-menus.get
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-menu-dishes
      description: Get menu dishes
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: new-york-public-library-whats-on-the-menu-menus.get
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.
    - name: get-menu-pages
      description: Get menu pages
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: new-york-public-library-whats-on-the-menu-menus.get
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.