AI Agents for Enterprise — restaurant-booking demo (openrestaurant/) and deep research agent tutorials (open-deep-research/), combined codespace environment
No tool documents output schemas. Parameter types are present but descriptions are sparse or missing. No error handling guidance. No tool annotations (readOnlyHint/destructiveHint). Naming is verb-forward but generic (search_*, get_*, create_*, cancel_*). Overall: definitions exist but lack LLM-optimization depth.
Cancel an existing booking by id and release its seats back to availability. Returns success status.
Book a table. Confirms the slot still has room, then reserves it and records the booking. date is YYYY-MM-DD, time is HH:MM (24h). Returns the booking confirmation with a booking_id on success, or an error message if the slot no longer has enough seats.
Get open reservation time slots for a restaurant on a given date (YYYY-MM-DD) that can seat at least party_size guests. Returns a list of {time, seats_remaining} for each open slot, soonest first.
Search documentation using semantic similarity. Retrieves relevant document chunks from the vector database based on the query. Use this to find information in the indexed documentation.
Search the restaurant index (mock Elasticsearch) by free-text query, cuisine, and/or neighborhood. All filters are optional and combine with AND. Returns up to 10 matching restaurants with their id, name, cuisine, neighborhood, price_range, rating, and description.
create_booking and cancel_booking lack parameter descriptions. LLMs cannot infer what customer_phone, booking_id, or date format constraints mean without explicit text.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., booking_id from create_booking response).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). create_booking and cancel_booking are state-modifying but lack destructiveHint; search_* and get_* lack readOnlyHint.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
No error handling guidance. If create_booking fails (slot full, invalid date), LLM receives no recovery hint. No categorization of retryable vs. user-fixable errors.
qdrant_search uses InjectedToolArg for top_k and collection_name, hiding them from LLM visibility. LLM cannot control search depth or target collection.