New York Public Library What's On The Menu · Capability
NYPL What's On The Menu API
The New York Public Library's What's On The Menu API provides programmatic access to over 17,000 historical restaurant menus from the New York City area dating back to the 1850s. Explore menus, pages, and dishes including prices, names, dates, and full-text search across the dataset.
What You Can Do
GET
Get menus
— List menus
/menus
GET
Get menus id
— Get menu
/menus/{id}
GET
Get menus id pages
— Get menu pages
/menus/{id}/pages
GET
Get menus id dishes
— Get menu dishes
/menus/{id}/dishes
GET
Get menus search
— Search menus
/menus/search
GET
Get dishes
— List dishes
/dishes
GET
Get dishes id
— Get dish
/dishes/{id}
GET
Get dishes id menus
— Get menus for a dish
/dishes/{id}/menus
GET
Get dishes search
— Search dishes
/dishes/search
MCP Tools
get-menus
List menus
read-only
idempotent
get-menus-id
Get menu
read-only
idempotent
get-menus-id-pages
Get menu pages
read-only
idempotent
get-menus-id-dishes
Get menu dishes
read-only
idempotent
get-menus-search
Search menus
read-only
idempotent
get-dishes
List dishes
read-only
idempotent
get-dishes-id
Get dish
read-only
idempotent
get-dishes-id-menus
Get menus for a dish
read-only
idempotent
get-dishes-search
Search dishes
read-only
idempotent
Capability Spec
naftiko: 1.0.0-alpha2
info:
label: NYPL What's On The Menu API
description: The New York Public Library's What's On The Menu API provides programmatic access to over 17,000 historical
restaurant menus from the New York City area dating back to the 1850s. Explore menus, pages, and dishes including prices,
names, dates, and full-text search across the dataset.
tags:
- New
- York
- Public
- Library
- Whats
- 'On'
created: '2026-05-06'
modified: '2026-05-06'
capability:
consumes:
- type: http
namespace: new-york-public-library-whats-on-the-menu
baseUri: http://api.menus.nypl.org
description: NYPL What's On The Menu API HTTP API.
authentication:
type: apikey
in: query
name: token
value: '{{NEW_YORK_PUBLIC_LIBRARY_WHATS_ON_THE_MENU_TOKEN}}'
resources:
- name: menus
path: /menus
operations:
- name: get-menus
method: GET
description: List menus
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
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: menus-id
path: /menus/{id}
operations:
- name: get-menus-id
method: GET
description: Get menu
inputParameters:
- name: id
in: path
type: integer
required: true
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: menus-id-pages
path: /menus/{id}/pages
operations:
- name: get-menus-id-pages
method: GET
description: Get menu pages
inputParameters:
- name: id
in: path
type: integer
required: true
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: menus-id-dishes
path: /menus/{id}/dishes
operations:
- name: get-menus-id-dishes
method: GET
description: Get menu dishes
inputParameters:
- name: id
in: path
type: integer
required: true
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: menus-search
path: /menus/search
operations:
- name: get-menus-search
method: GET
description: Search menus
inputParameters:
- name: query
in: query
type: string
required: true
- name: sort_by
in: query
type: string
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: dishes
path: /dishes
operations:
- name: get-dishes
method: GET
description: List dishes
inputParameters:
- name: min_year
in: query
type: integer
- name: max_year
in: query
type: integer
- name: sort_by
in: query
type: string
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: dishes-id
path: /dishes/{id}
operations:
- name: get-dishes-id
method: GET
description: Get dish
inputParameters:
- name: id
in: path
type: integer
required: true
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: dishes-id-menus
path: /dishes/{id}/menus
operations:
- name: get-dishes-id-menus
method: GET
description: Get menus for a dish
inputParameters:
- name: id
in: path
type: integer
required: true
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
- name: dishes-search
path: /dishes/search
operations:
- name: get-dishes-search
method: GET
description: Search dishes
inputParameters:
- name: query
in: query
type: string
required: true
- name: sort_by
in: query
type: string
outputRawFormat: json
outputParameters:
- name: result
type: object
value: $.
exposes:
- type: rest
port: 8080
namespace: new-york-public-library-whats-on-the-menu-rest
description: REST adapter for NYPL What's On The Menu API.
resources:
- path: /menus
name: get-menus
operations:
- method: GET
name: get-menus
description: List menus
call: new-york-public-library-whats-on-the-menu.get-menus
outputParameters:
- type: object
mapping: $.
- path: /menus/{id}
name: get-menus-id
operations:
- method: GET
name: get-menus-id
description: Get menu
call: new-york-public-library-whats-on-the-menu.get-menus-id
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- path: /menus/{id}/pages
name: get-menus-id-pages
operations:
- method: GET
name: get-menus-id-pages
description: Get menu pages
call: new-york-public-library-whats-on-the-menu.get-menus-id-pages
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- path: /menus/{id}/dishes
name: get-menus-id-dishes
operations:
- method: GET
name: get-menus-id-dishes
description: Get menu dishes
call: new-york-public-library-whats-on-the-menu.get-menus-id-dishes
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- path: /menus/search
name: get-menus-search
operations:
- method: GET
name: get-menus-search
description: Search menus
call: new-york-public-library-whats-on-the-menu.get-menus-search
outputParameters:
- type: object
mapping: $.
- path: /dishes
name: get-dishes
operations:
- method: GET
name: get-dishes
description: List dishes
call: new-york-public-library-whats-on-the-menu.get-dishes
outputParameters:
- type: object
mapping: $.
- path: /dishes/{id}
name: get-dishes-id
operations:
- method: GET
name: get-dishes-id
description: Get dish
call: new-york-public-library-whats-on-the-menu.get-dishes-id
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- path: /dishes/{id}/menus
name: get-dishes-id-menus
operations:
- method: GET
name: get-dishes-id-menus
description: Get menus for a dish
call: new-york-public-library-whats-on-the-menu.get-dishes-id-menus
with:
id: rest.id
outputParameters:
- type: object
mapping: $.
- path: /dishes/search
name: get-dishes-search
operations:
- method: GET
name: get-dishes-search
description: Search dishes
call: new-york-public-library-whats-on-the-menu.get-dishes-search
outputParameters:
- type: object
mapping: $.
- type: mcp
port: 9090
namespace: new-york-public-library-whats-on-the-menu-mcp
transport: http
description: MCP adapter for NYPL What's On The Menu API for AI agent use.
tools:
- name: get-menus
description: List menus
hints:
readOnly: true
destructive: false
idempotent: true
call: new-york-public-library-whats-on-the-menu.get-menus
with:
min_year: tools.min_year
max_year: tools.max_year
sort_by: tools.sort_by
status: tools.status
inputParameters:
- name: min_year
type: integer
description: min_year
- name: max_year
type: integer
description: max_year
- name: sort_by
type: string
description: sort_by
- name: status
type: string
description: status
outputParameters:
- type: object
mapping: $.
- name: get-menus-id
description: Get menu
hints:
readOnly: true
destructive: false
idempotent: true
call: new-york-public-library-whats-on-the-menu.get-menus-id
with:
id: tools.id
inputParameters:
- name: id
type: integer
description: id
required: true
outputParameters:
- type: object
mapping: $.
- name: get-menus-id-pages
description: Get menu pages
hints:
readOnly: true
destructive: false
idempotent: true
call: new-york-public-library-whats-on-the-menu.get-menus-id-pages
with:
id: tools.id
inputParameters:
- name: id
type: integer
description: id
required: true
outputParameters:
- type: object
mapping: $.
- name: get-menus-id-dishes
description: Get menu dishes
hints:
readOnly: true
destructive: false
idempotent: true
call: new-york-public-library-whats-on-the-menu.get-menus-id-dishes
with:
id: tools.id
inputParameters:
- name: id
type: integer
description: id
required: true
outputParameters:
- type: object
mapping: $.
- name: get-menus-search
description: Search menus
hints:
readOnly: true
destructive: false
idempotent: true
call: new-york-public-library-whats-on-the-menu.get-menus-search
with:
query: tools.query
sort_by: tools.sort_by
inputParameters:
- name: query
type: string
description: query
required: true
- name: sort_by
type: string
description: sort_by
outputParameters:
- type: object
mapping: $.
- name: get-dishes
description: List dishes
hints:
readOnly: true
destructive: false
idempotent: true
call: new-york-public-library-whats-on-the-menu.get-dishes
with:
min_year: tools.min_year
max_year: tools.max_year
sort_by: tools.sort_by
inputParameters:
- name: min_year
type: integer
description: min_year
- name: max_year
type: integer
description: max_year
- name: sort_by
type: string
description: sort_by
outputParameters:
- type: object
mapping: $.
- name: get-dishes-id
description: Get dish
hints:
readOnly: true
destructive: false
idempotent: true
call: new-york-public-library-whats-on-the-menu.get-dishes-id
with:
id: tools.id
inputParameters:
- name: id
type: integer
description: id
required: true
outputParameters:
- type: object
mapping: $.
- name: get-dishes-id-menus
description: Get menus for a dish
hints:
readOnly: true
destructive: false
idempotent: true
call: new-york-public-library-whats-on-the-menu.get-dishes-id-menus
with:
id: tools.id
inputParameters:
- name: id
type: integer
description: id
required: true
outputParameters:
- type: object
mapping: $.
- name: get-dishes-search
description: Search dishes
hints:
readOnly: true
destructive: false
idempotent: true
call: new-york-public-library-whats-on-the-menu.get-dishes-search
with:
query: tools.query
sort_by: tools.sort_by
inputParameters:
- name: query
type: string
description: query
required: true
- name: sort_by
type: string
description: sort_by
outputParameters:
- type: object
mapping: $.
binds:
- namespace: env
keys:
NEW_YORK_PUBLIC_LIBRARY_WHATS_ON_THE_MENU_TOKEN: NEW_YORK_PUBLIC_LIBRARY_WHATS_ON_THE_MENU_TOKEN