Skip to main content
Glama
chrischall

tock-mcp

by chrischall

tock-mcp

MCP server for Tock (exploretock.com) — restaurant discovery and availability for Claude. List cities, search a metro, and get a venue's details plus its bookable experiences, prices, party sizes, and open dates/times.

Every request is relayed through your own signed-in browser tab via the fetchproxy extension — no cookie paste, no bot-wall dance, no password handling. This project was developed and is maintained by AI (Claude Code).

Tock publishes no official consumer API, and exploretock.com sits behind a Cloudflare challenge. tock-mcp fetches the same server-rendered pages the Tock web app uses (parsing their embedded window.$REDUX_STATE store) through your signed-in tab. It is read-only — Tock reservations are prepaid tickets, so booking stays on exploretock.com. Use at your own discretion.

Install

// .mcp.json
{
  "mcpServers": {
    "tock": { "command": "npx", "args": ["-y", "tock-mcp"] }
  }
}

You also need the fetchproxy browser extension (shared across the fleet) running in a Chrome/Safari tab. The first tool call prints a one-time pair code to approve in the extension popup — run tock_healthcheck to trigger it. Discovery works signed-out; the account tools need you signed in to exploretock.com.

Related MCP server: Restaurant Reservation MCP Server

Tools

  • tock_list_metros — Tock cities/metros with business counts; filter by name/country.

  • tock_search_restaurants — venues in a metro slug (cuisine, price, neighborhood, slug).

  • tock_get_restaurant — venue details + its bookable experiences.

  • tock_get_availability — a venue's bookable calendar (experiences, prices, open dates/times).

  • tock_list_reservations / tock_get_profile — the signed-in user's purchases and profile.

  • tock_verify_reservation — after a booking attempt, re-query the account and return an explicit confirmed / cancelled / not_found verdict. A success screen is not proof; this is.

  • tock_healthcheck — bridge status + the one-time pair code.

Develop

npm install
npm run build     # tsc + esbuild bundle → dist/bundle.js
npm test          # vitest

Architecture and the reverse-engineered Tock surface are documented in docs/TOCK-API.md.

License

MIT

Available Tools

8 tools
tock_get_availabilityA
Read-only

Get a venue's bookable calendar: each experience (seating/menu) with its price, party sizes, cancellation policy, plus the dates and times the venue is open. Tock returns the full open-date/time set; pass a date to focus the summary. Reservations are prepaid tickets — this MCP does not book; open the venue on exploretock.com to reserve.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoYYYY-MM-DD to center the calendar on (optional).
slugYesTock venue slug, e.g. "alinea" (the exploretock.com/{slug} segment).
party_sizeNoGuests — filters experiences to those accepting this size.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint and openWorldHint annotations, the description reveals important behavioral details: Tock returns the full open-date/time set by default, passing a date only focuses the summary, and no booking side effect occurs. The external reservation redirect adds practical context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences carry distinct, high-value information: what the tool returns, how the date parameter behaves, and the non-booking caveat. There is no filler or repetition of schema details.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only availability tool with no output schema, the description adequately explains the return contents, the date behavior, and the reservation limitation. The party_size parameter is already fully described in the schema, so nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds extra meaning for the date parameter by explaining how it affects the output ('focus the summary') while noting the full set is still returned. This goes beyond the schema's simple 'center the calendar on' wording.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb-object pair ('Get a venue's bookable calendar') and enumerates the returned content: experiences, prices, party sizes, cancellation policy, and open dates/times. This clearly distinguishes it from sibling tools like tock_get_restaurant or tock_list_reservations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains when the optional date parameter is useful ('pass a date to focus the summary') and explicitly warns that this MCP does not book, directing the agent to exploretock.com for reservations. It does not explicitly compare against sibling tools, but the usage context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tock_get_profileA
Read-only

Get the signed-in user's Tock account identity (name, email). Requires a browser tab signed in to exploretock.com via the fetchproxy extension. Derived from your reservation records, so it needs at least one reservation on the account.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNoResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full" returns Tock's payload untouched. No field projection: this server has no verified record of which Tock fields matter, and inventing one would risk dropping a field a caller needs.

TDQS

A4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readonly annotation, the description discloses non-obvious behavioral requirements: it depends on a browser tab signed in to exploretock.com via the fetchproxy extension, and it derives identity from reservation records, requiring at least one reservation. This is valuable context that the annotations alone do not provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the core purpose, and then adds only essential prerequisite information. Every sentence earns its place, and there is no redundant phrasing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple profile identity tool, the description covers the core purpose and the key prerequisites. The absence of an output schema is partially mitigated by naming the expected fields (name, email), and the view parameter description in the schema fills in response-shape behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The only parameter, view, is fully documented in the input schema with a clear explanation of compact versus full response shapes. The tool description adds no additional parameter meaning, but since schema description coverage is 100%, the baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific operation: 'Get the signed-in user's Tock account identity (name, email).' It names the resource and output, so an agent can tell this from reservation or restaurant tools. However, it does not explicitly contrast itself with a sibling tool, so it stops short of full differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explains important prerequisites: a signed-in browser tab via the fetchproxy extension and at least one reservation on the account. This gives useful context for when the tool can be used, but it does not state when to choose this tool over alternatives or when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tock_get_restaurantA
Read-only

Get details for a Tock venue by slug: name, cuisine, price band, location, description, and its bookable experiences (with prices and party sizes). Slug comes from tock_search_restaurants (or a exploretock.com/{slug} URL).

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesTock venue slug, e.g. "alinea" (the exploretock.com/{slug} segment).
viewNoResponse shape: "compact" (default) drops fields the response already carries elsewhere; "full" returns every field this server understands. compact strips image/avatar URLs from the response; "full" returns Tock's payload untouched. No field projection: this server has no verified record of which Tock fields matter, and inventing one would risk dropping a field a caller needs.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already carry readOnlyHint=true and openWorldHint=true, covering the safe, read-only nature. The description adds the response field list but discloses no additional behavioral traits such as authentication, rate limits, or error behavior. With annotations present, this meets the baseline without contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no filler. The core action and return contents are front-loaded, followed by the crucial slug-source guidance. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple get-by-identifier tool with a read-only annotation, the description is complete: it names the input, the source of the input, and the expected response fields. No output schema exists, so enumerating the return value in prose fills that gap adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value beyond the schema by telling the agent where the slug comes from (tock_search_restaurants or exploretock.com URLs), which complements the schema's example. This extra provenance guidance justifies a 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: 'Get details for a Tock venue by slug' and enumerates the returned content (name, cuisine, price band, location, description, bookable experiences). It also implicitly distinguishes itself from siblings by indicating the slug comes from tock_search_restaurants, clarifying its role in the workflow.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear usage context: the slug is obtained from tock_search_restaurants or an exploretock.com URL, so an agent knows this tool is the follow-up lookup after a search. It does not explicitly state when not to use it or name alternatives, but the guidance is sufficient for typical selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tock_healthcheckVerify the fetchproxy bridge end-to-endA
Read-onlyIdempotent

Round-trips a small public www.exploretock.com URL (/robots.txt) through the fetchproxy bridge and returns diagnostics: the bridge's role (host/peer/null), port, version, the extension link (linked / pair pending / not attached / never answered), the elapsed round-trip time, and a plain-English hint distinguishing 'bridge never came up' from 'extension not connected' from 'real www.exploretock.com-side problem'. Read-only, no auth required. Call this when a real tool fails and you want to know which hop broke.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description goes beyond the annotations by specifying that the check is read-only and auth-free, and by enumerating the exact diagnostics returned: role, port, version, extension link state, round-trip time, and a plain-English failure-mode hint. This adds meaningful behavioral context beyond readOnlyHint, openWorldHint, and idempotentHint.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is substantial but every clause earns its place: it states the action, the exact test URL, the full set of returned diagnostics, the safety properties, and the intended usage trigger. It is well-structured and front-loads the core purpose before diving into detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters and no output schema, the description carries the full burden of explaining what the tool returns and when to invoke it. It fully covers the return diagnostics and even distinguishes the possible failure modes, making the tool self-contained and easy for an agent to use correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, and the input schema is empty, so the description has no parameter burden. The baseline for zero-parameter tools is 4, and the description appropriately focuses on behavior rather than input semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb ('Round-trips'), a specific resource ('fetchproxy bridge'), and a concrete target URL ('/robots.txt'), making the tool's function unmistakable. It also clearly distinguishes this diagnostic tool from the data-oriented sibling tools like tock_search_restaurants and tock_get_availability.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides an explicit trigger: 'Call this when a real tool fails and you want to know which hop broke.' This gives clear context for when to use the tool, though it does not explicitly discuss when not to use it or name alternative diagnostic tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tock_list_metrosA
Read-only

List Tock cities/metros (name, slug, business count, country/state). Use a metro slug with tock_search_restaurants. By default only metros with bookable venues are returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax metros to return (default 100).
queryNoCase-insensitive filter on metro name or slug (e.g. "chic").
countryNoFilter by 2-letter country code (e.g. "US", "GB").
include_emptyNoInclude metros with businessCount 0 (default false).

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already convey readOnlyHint=true and openWorldHint=true. The description adds a non-obvious behavioral default ('only metros with bookable venues are returned'), which is useful. However, it does not disclose other behavioral traits such as pagination behavior or what 'bookable' means, so it stays at a baseline acceptable level.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. The first sentence states the resource and output fields, while the second provides the key downstream relationship and default filtering behavior. Everything present earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with no output schema, the description tells the agent what the tool returns, the default behavior, and how to proceed with the result. Parameter details are covered fully by the schema, so nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (limit, query, country, include_empty) are already documented in the schema. The description adds no additional parameter-level meaning, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource ('List Tock cities/metros') and enumerates the returned fields (name, slug, business count, country/state). It also differentiates from the sibling tool by pointing to tock_search_restaurants as the downstream consumer of a metro slug.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly guides the agent to use the returned metro slug with tock_search_restaurants, establishing the tool's role in the workflow. It does not explicitly state when not to use it, but the context is clear enough for an agent to select it appropriately.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tock_list_reservationsA
Read-only

List the signed-in user's Tock reservations (upcoming, past, or canceled) with venue, date/time, party size, and experience. Requires a browser tab signed in to exploretock.com via the fetchproxy extension.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax to return (default 30).
offsetNoPagination offset (default 0).
statusNoWhich reservations to list (default upcoming).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description correctly does not repeat that. It adds useful context beyond annotations: the authentication requirement (browser tab signed in via fetchproxy) and the specific fields returned. It does not contradict annotations. It does not mention pagination behavior, but that is covered in the schema for limit/offset. Given annotation coverage, this is strong.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, tightly worded sentence that leads with the primary action and resource, then lists the returned data and the critical prerequisite. Every phrase earns its place; there is no redundancy or fluff. It is optimally sized for an agent to quickly grasp the tool's function.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list operation with no output schema, the description provides the essential return fields (venue, date/time, party size, experience) and the authentication prerequisite. The pagination parameters are documented in the schema. The openWorldHint annotation suggests the environment may change, which is not contradicted. No critical missing information prevents correct invocation. A small gap is not describing the response format, but that is partially addressed by listing fields. Overall adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, meaning all three parameters (limit, offset, status) already have descriptions. The tool description adds nothing new about parameter semantics. Baseline is 3, which is appropriate since the schema carries the full load and the description does not need to repeat it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List'), a clear resource ('the signed-in user's Tock reservations'), and the scope (upcoming, past, or canceled) plus the data returned (venue, date/time, party size, experience). It clearly distinguishes from sibling tools that focus on metros, restaurants, or availability, leaving no ambiguity about what this tool does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: to fetch the user's own reservations, which is distinct from sibling tools like tock_search_restaurants or tock_get_availability. It also gives a concrete prerequisite ('Requires a browser tab signed in to exploretock.com via the fetchproxy extension'), which is a usage condition. However, it does not explicitly mention when not to use it or point to alternatives (e.g., tock_verify_reservation for a single reservation), but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tock_search_restaurantsA
Read-only

List / search restaurants in a Tock metro. Pass a metro slug (from tock_list_metros, e.g. "chicago") and an optional text query. Returns venues with cuisine, price band, neighborhood, and their Tock slug (use it with tock_get_restaurant / tock_get_availability). Does NOT include bookable slots.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax venues to return (default 50).
metroYesMetro slug, e.g. "chicago" or "new-york".
queryNoFree-text filter (cuisine or venue name) applied server-side.

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered. The description adds useful behavior beyond that: it specifies the returned venue fields (cuisine, price band, neighborhood, Tock slug) and the negative constraint that bookable slots are not included. It does not discuss pagination edge cases, but the schema covers limit.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no wasted words; the main action is front-loaded, the required input and optional behavior are stated next, and the important negative constraint about bookable slots is placed last. Every sentence contributes useful routing or behavioral information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple search/list tool with one required parameter and clear annotations, the description is complete: it tells the caller where to get the metro value, what inputs are optional, what fields are returned, what the output is NOT, and how to chain the result into related sibling tools. No output schema exists, but the return shape is described sufficiently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema handles parameter meaning well. The description still adds value by explaining that the metro slug comes from tock_list_metros, giving an example value, and characterizing query as an optional text filter. This is slightly more than the schema alone provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'List / search restaurants in a Tock metro.' It also draws clear contrast with siblings by noting it returns Tock slugs to use with tock_get_restaurant/tock_get_availability and explicitly excludes bookable slots, so an agent can distinguish it from availability or reservation tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to pass a metro slug from tock_list_metros, making the dependency on a sibling concrete. It also tells the agent what to do with the returned slugs and warns that bookable slots are not included, which positively routes the agent to the correct alternative for availability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tock_verify_reservationA
Read-only

Verify that a Tock reservation actually exists, by re-querying the account's own reservation lists (upcoming, canceled and past) and returning an explicit verdict. Use this after ANY booking attempt — a success screen or screenshot is not proof that a booking landed. Returns verdict confirmed, cancelled (it existed and was voided) or not_found. A not_found must be reported to the user as "attempted, unverified", never as a failure to book and never as a success. Requires a browser tab signed in to exploretock.com via the fetchproxy extension.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateYesThe local date the reservation is for (YYYY-MM-DD).
venueYesRestaurant name or Tock slug; matched case-insensitively as a substring.
partySizeNoIf given, a candidate must also match this party size.
bookedMinutesAgoNoMinutes since the booking was attempted. Drives the lag caveat: an absence seen within a few minutes of booking is inconclusive, not proof. Omit if unknown (treated as inconclusive).

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Beyond the readOnlyHint/openWorldHint annotations, it discloses the exact lists re-queried, the three possible verdicts, the required user-facing phrasing for not_found, and the prerequisite of a signed-in browser tab with the fetchproxy extension. This materially helps the agent interpret outcomes correctly.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences are tightly organized: purpose first, usage trigger second, outcome semantics and prerequisites after. There is no filler, and critical caveats earn their place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no output schema, the description compensates by enumerating the return verdicts and their user-facing meaning. The prerequisite, lag handling via bookedMinutesAgo in the schema, and search scope are all covered sufficiently to invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema already defines date, venue, partySize, and bookedMinutesAgo including the lag caveat. The description adds context about verdict semantics but not additional parameter-level meaning, so the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening verb 'Verify' names a concrete action on a specific resource ('Tock reservation') and explains the mechanism ('re-querying the account's own reservation lists'). It differentiates from siblings by emphasizing the explicit verdict rather than list output, so an agent can distinguish it from tock_list_reservations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit trigger: 'Use this after ANY booking attempt', and reinforces that UI success is not proof. It does not name sibling alternatives or state when to prefer tock_list_reservations, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 8 tool updatesv1.0.0
    • Changedtock_get_availability1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtock_get_profile1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtock_get_restaurant1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtock_healthcheck1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtock_list_metros1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtock_list_reservations1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtock_search_restaurants1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • Changedtock_verify_reservation1 field changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
  2. 2 tool updatesv0.5.0
    • Changedtock_get_profile1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "description": "Response shape: \"compact\" (default) drops fields the response already carries elsewhere; \"full\" returns every field this server understands. compact strips image/avatar URLs from the response; \"full\" returns Tock's payload untouched. No field projection: this server has no verified record of which Tock fields matter, and inventing one would risk dropping a field a caller needs.",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
    • Changedtock_get_restaurant1 field changed
      • addedInput schema / properties / view
        Added value: +{
        +  "description": "Response shape: \"compact\" (default) drops fields the response already carries elsewhere; \"full\" returns every field this server understands. compact strips image/avatar URLs from the response; \"full\" returns Tock's payload untouched. No field projection: this server has no verified record of which Tock fields matter, and inventing one would risk dropping a field a caller needs.",
        +  "enum": [
        +    "compact",
        +    "full"
        +  ],
        +  "type": "string"
        +}
  3. 1 tool updatev0.3.0
    • Addedtock_verify_reservation
  4. 1 tool updatev0.2.3
    • Addedtock_list_metros
  5. 1 tool updatev0.2.1
    • Removedtock_list_metros
  6. 7 tool updatesv0.2.0
    • First observedtock_get_availability
    • First observedtock_get_profile
    • First observedtock_get_restaurant
    • First observedtock_healthcheck
    • First observedtock_list_metros
    • First observedtock_list_reservations
    • First observedtock_search_restaurants

TDQS

A4.4/5.0

Scored across 8 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: listing metros, searching restaurants, fetching venue details, checking availability, managing reservations, profile retrieval, verification, and diagnostics. Even related tools like list_reservations and verify_reservation are cleanly separated by intent.

Naming Consistency5/5

All tools share a consistent 'tock_' prefix and follow a verb_noun pattern (list_metros, search_restaurants, get_restaurant, get_availability, list_reservations, get_profile, verify_reservation). The only deviation is tock_healthcheck, which is a compound noun but still clear and consistent in style.

Tool Count5/5

8 tools is well-scoped for a reservation browsing and verification MCP. Each tool covers a necessary operation without bloat, and the count aligns with typical high-quality servers.

Completeness5/5

The tool surface covers the full read-only lifecycle: discover metros, search restaurants, get details, check availability, manage user reservations, verify bookings, and retrieve profile. Booking is intentionally omitted, so there are no dead ends for the server's stated purpose.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers