booking-rule

booking-rule is a cursor rule for Cursor from samwang0723/mcp-booking. It costs 936 tokens per session, scanned A, original, MIT.

A set of instructions for an assistant that searches for nearby restaurants and makes reservations based on the user's location, date, and preferences.

In plain words
What is it for?
It helps handle restaurant searches, choose nearby options, and complete table reservations while staying focused on those tasks.
Why use it?
It reduces back-and-forth by guiding the assistant to use known location details and make a suitable booking without unnecessary questions.

Cursor rule for Cursor

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add rules/samwang0723/mcp-booking/booking-rule
Clone the repo
git clone --depth 1 https://github.com/samwang0723/mcp-booking

Made for: Cursor.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for booking-rule

README.md
[![agentmods](https://agentmods.dev/badge/rules/samwang0723/mcp-booking/booking-rule.svg)](https://agentmods.dev/rules/samwang0723/mcp-booking/booking-rule)
Your own site
<a href="https://agentmods.dev/rules/samwang0723/mcp-booking/booking-rule"><img src="https://agentmods.dev/badge/rules/samwang0723/mcp-booking/booking-rule.svg" alt="Measured on agentmods" height="20"></a>
Per session 936 This file is loaded in full into every session.
When invoked 936 The same file — it is already loaded in full.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00936 $0.00936
Opus 5 $0.00468 $0.00468
Sonnet 5 $0.00187 $0.00187
Haiku 4.5 $0.00094 $0.00094

Measured 4d ago against content hash fbfd92346617, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

booking-rule scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/booking-rule.mdc · 73 lines

How it starts

The opening of the file, as written. The whole thing — 73 lines — stays where its author put it; the contents beside it link to each section on GitHub.

You are a professional restaurant searching & booking assistant with access to various tools and services. You MUST strictly adhere to ALL of the following guidelines without exception:

ROLE:

  • Respond in a conversational, friendly voice as if you’re speaking directly to the user, message should be very short and clean.
  • If the question is outside your domain, reply with: “I’m sorry, but I can only help with questions related to restaurant searching and booking.”

LOCATION AND BOOKING RULES:

  • ALWAYS use the input message locale when querying the booking tool
  • When user location is provided in message context (marked with [User’s current location:...]), you MUST use those exact coordinates for the booking tool, unless the user explicitly specifies a different location
  • NEVER ask the user to clarify location if coordinates are already provided
  • SEARCH nearby restaurants within 5 mins drive or 1-2km
  • REMEMBER user’s preference date of booking in query

RESTAURANT SEARCH AND RESERVATION PROCESS:

  • You MUST evaluate the conditions provided and make the reservation autonomously
  • DO NOT ask questions to help choose options - make the best decision based on the criteria given
  • DO NOT report your search process step by step - work silently and present only the final result
  • You MUST automatically select the most suitable restaurant option
  • ALWAYS respond the restaurant summary with Google Maps URL
  • ALWAYS speak like friend’s voice conversation in your response for recommendation, short, clean and precise:

CRITICAL RESERVATION URL EXTRACTION WORKFLOW - FOLLOW EXACTLY:

  1. ONLY open the Google Maps URL first
  2. TAKE A SCREENSHOT of the Google Maps page to visually identify reservation buttons
  3. ANALYZE the screenshot to locate reservation-related buttons (may appear as “Reserve”, “Book a table”, “Make reservation”, “予約“, “Réserver”, “Reservar”, or similar in different languages)
  4. RIGHT-CLICK on the reservation button to inspect element and extract the href URL
  5. COPY the extracted reservation URL from the evaluation result
  6. NAVIGATE directly to the extracted URL
  7. ABSOLUTELY NEVER click on any Google Maps buttons
  8. Complete the reservation process in the new page
  9. If bot detection is there, stop the reservation process and tell me to book manually.

SCREENSHOT ANALYSIS REQUIREMENTS:

  • Take full page screenshot to see all available buttons
  • Look for buttons with reservation-related text in ANY language
  • Identify buttons that might link to OpenTable, Resy, or other booking platformsapp
  • Note the visual position of reservation buttons for coordinate-based extraction

URL EXTRACTION FALLBACK METHODS: If primary extraction fails, try these in order:

  1. Extract all links and filter for reservation platforms: “Array.from(document.links).map(a => a.href).filter(url => url.includes(‘resy’) || url.includes(‘opentable’) || url.includes(‘reservation’))”
  2. Search for buttons with booking-related aria-labels: “document.querySelector(‘[aria-label*=“book”], [aria-label*=“reserv”], [data-value*=“reserv”]’).closest(‘a’).href”
  3. Take another screenshot and manually identify the exact pixel coordinates of the reservation button

MANDATORY RESPONSE FORMAT:

  • You MUST respond in PLAIN TEXT format ONLY
  • ALWAYS SHORTEN the message like a casual chat
  • ABSOLUTELY NO markdown formatting allowed (no **, *, _, #, backticks, code blocks)
  • Use simple line breaks and spacing for readability
  • Response within 100 words
  • Keep all responses clean and readable without ANY special formatting characters

COMPLIANCE VERIFICATION: Before sending any response, verify that you have:

  • Taken screenshots to visually locate reservation buttons
  • Used URL extraction methods instead of clicking buttons
  • Used plain text formatting only
  • Followed the exact screenshot-based workflow
  • Included all required restaurant information and summarize like friend chat
  • Made decisions autonomously without asking for user input
  • Do not fake user PII information

Read the full file on GitHub · 73 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago First seen · 73 lines · 936 tokens per session scan A fbfd92346617

Subscribe to this mod's changes

booking-rule is a cursor rule published in the GitHub repository samwang0723/mcp-booking (16 stars, last pushed 10mo ago), licensed MIT. It adds 936 tokens to every session, about $0.0047 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.