Agent Documentation
Structured data endpoints, MCP server, and tool schemas for AI systems interacting with Holy Basil
MCPModel Context Protocol Server
Connect AI tools (Claude Desktop, Cursor, VS Code) to this restaurant's data via MCP. The server exposes 8 tools, 2 prompts, and per-restaurant resources for semantic search and context-aware queries.
Add this to your Claude Desktop config (~/Library/Application Support/Claude/claude_desktop_config.json) or Cursor MCP settings:
{
"mcpServers": {
"restodocs": {
"command": "pnpm",
"args": [
"mcp"
],
"cwd": "/path/to/restaurant-mcp"
}
}
}POST JSON-RPC 2.0 requests to the MCP endpoint:
# Initialize the session
curl -X POST /mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}'
# List available tools
curl -X POST /mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}'
# Call a tool
curl -X POST /mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_menu","arguments":{"query":"spicy"}}}'MCP Tools
Available via both stdio and HTTP transports. Compatible with OpenAI function calling, Anthropic tool use, and MCP tool definitions.
list_restaurantsList all available restaurants with name, slug, cuisine, location, and price range.
get_restaurant_infoGet detailed information about a restaurant including hours, location, contact, cuisine type, and what it's known for.
get_menuGet the full menu, optionally filtered by category name.
search_menuSearch menu items by keyword — matches names, descriptions, and dietary tags (e.g. "vegan", "spicy").
get_order_optionsGet delivery, pickup, and reservation links. Returns URLs for DoorDash, Uber Eats, Resy, OpenTable, etc.
get_faqGet frequently asked questions with answers and source citations.
get_hoursGet hours of operation and whether the restaurant is likely open right now.
get_reviewsGet curated review highlights from Google, Yelp, and other sources.
MCP Prompts
Pre-built prompt templates for common tasks.
recommend_dishGet a personalized dish recommendation based on dietary preferences, cravings, or constraints.
plan_orderPlan a group order with budget and party size considerations.
Discovery & Machine-Readable Specs
/llms-txtLLM discovery file — lightweight index with restaurant info, endpoints, and menu summary.
/llms-full-txtFull content dump — complete restaurant data as plain text for LLM ingestion.
/openapi.jsonOpenAPI 3.1 specification for all API endpoints. Import into any agent framework.
/mcpMCP server over Streamable HTTP — JSON-RPC 2.0 protocol for web-based agents.
/.well-known/ai-plugin.jsonAI plugin discovery manifest listing all restaurants and their agent endpoints.
REST API Endpoints
/api/restaurantFull restaurant info: name, address, hours, contact, cuisines, price range, links.
/api/menuStructured menu with categories, items, prices, descriptions, and dietary tags.
/api/menu?q={keyword}Search menu items by keyword — matches names, descriptions, and tags (e.g. "vegan", "spicy", "noodles").
/api/order-optionsDelivery, pickup, and reservation links for agent handoff ordering.
/api/faqQ&A pairs optimized for LLM consumption, each with source citations.
Quick Start: curl Examples
# Get full restaurant data as plain text (for LLM context)
curl -s /llms-full-txt
# Get structured menu as JSON
curl -s /api/menu | jq .
# Search for vegan items
curl -s "/api/menu?q=vegan" | jq .
# Get the OpenAPI spec
curl -s /openapi.json | jq .info
# Get ordering links for agent handoff
curl -s /api/order-options | jq .
# Discover all restaurants and endpoints
curl -s /.well-known/ai-plugin.json | jq .endpointsMachine-readable files following the llms.txt proposal:
GET /llms-txt # Lightweight index (links + summary)GET /llms-full-txt # Full content dump (everything in one file)The robots.txt explicitly allows AI agent crawlers (GPTBot, Claude-Web, PerplexityBot, etc.) on all machine-readable endpoints.
WebMCP Support
This page registers read-only tools via navigator.modelContext.registerTool() when supported by the browser. Tools provide the same data as the REST endpoints above.