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 ContextMint Bridge browser 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 ContextMint Bridge (the browser extension shared by every fetchproxy-based MCP), installed from its releases page: in Chrome, unzip the chrome zip and load it unpacked (chrome://extensions → Developer mode → Load unpacked). Safari isn't available yet (it will ship inside the ContextMint app, which has no public download), so use Chrome for now. ContextMint Bridge is the fetchproxy browser extension under its new name, from the same maintainer — fetchproxy's own README (https://github.com/chrischall/fetchproxy#extension) points to it. Its source is public at https://github.com/nullnet-app/contextmint-bridge: build it yourself, or check a release zip against the .sha256 file published beside it (shasum -a 256 -c contextmint-bridge-chrome-<version>.zip.sha256). Keep an exploretock.com tab open. The first tool call prints a one-time pair code to approve in the ContextMint Bridge 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 / ambiguous 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 ContextMint Bridge 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/5.0
Behavior5/5

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

The annotations only declare read-only and open-world behavior; the description adds the non-obvious operational facts: a signed-in bridge tab is required and the identity is synthesized from reservation records, so an account with zero reservations will not yield a profile. That is exactly the kind of auth/dependency disclosure the annotations cannot carry.

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 tight sentences: identity and fields first, then the two preconditions. No filler, no restatement of the tool name, and nothing to trim.

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 low-complexity read tool with no output schema, the description covers what is returned, what is required to call it, and the data dependency behind the result. An agent has everything needed to decide to call it and to interpret failure conditions.

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 'view' enum is documented in detail in the schema itself, including what compact strips and why no projection exists. The description never mentions the parameter, so it adds nothing beyond the schema, making the baseline 3 correct.

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?

States a specific verb and resource (get the signed-in user's Tock account identity) and enumerates the returned fields (name, email). None of the sibling tools (reservations, availability, restaurants, healthcheck) overlap with this scope, so an agent can select it unambiguously.

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?

Gives clear preconditions for use: an authenticated browser tab on exploretock.com via the ContextMint Bridge extension, plus at least one existing reservation. No when-not guidance or named alternatives, but no sibling offers profile data, so the missing exclusion is low-cost.

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 ContextMint Bridge connection end-to-endA
Read-onlyIdempotent

Round-trips a small public www.exploretock.com URL (/robots.txt) through ContextMint Bridge (your signed-in browser tab) 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 'this browser can't serve a capability' 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.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and openWorldHint, so the safety profile is covered. The description adds genuinely useful context beyond them: no auth required, that it touches your signed-in browser tab, elapsed round-trip timing, and the four failure classes the hint discriminates between.

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

Conciseness4/5

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

Front-loaded with the core mechanism, then the returned diagnostics, then the usage trigger. Slightly dense in the first sentence's long list of diagnostic fields, but every clause carries information and nothing is wasted.

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?

There is no output schema, and the description fully enumerates the return shape (bridge role, port, version, link state, elapsed time, hint), so an agent knows exactly what it gets back. Combined with the trigger guidance and auth note, nothing needed to call it correctly is absent.

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 takes zero parameters, so per the rubric the baseline is 4; there is no parameter semantics to clarify and the description does not invent any. Nothing here is missing or misleading on the parameter axis.

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?

States a specific verb and resource: it round-trips a small public URL (/robots.txt) through ContextMint Bridge and returns diagnostics. It also enumerates what the diagnostics contain, so an agent can distinguish it immediately from the tock_* data tools in the sibling list.

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?

Explicitly says when to call it: 'Call this when a real tool fails and you want to know which hop broke.' That is a clear trigger condition, though it does not name a specific alternative diagnostic tool to prefer and leaves the 'when not to call' case implicit.

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 ContextMint Bridge extension.

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

TDQS

A4.1/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=true, openWorldHint=true), so the bar is lower, and the description adds the genuinely useful operational precondition that a browser tab signed in to exploretock.com is required. It also discloses the shape of what comes back (venue, date/time, party size, experience), though it says nothing about pagination behavior or empty-list handling.

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, zero filler: the first front-loads the resource, scope, and return fields; the second carries the prerequisite. Every clause 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 low-complexity, read-only list tool with no output schema and a fully documented input schema, the description covers purpose, filterable statuses, and the authentication environment an agent must satisfy before calling. Nothing required for correct invocation 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 limit, offset, and status are already fully documented in the schema, and the enum values named in the description mirror rather than extend the schema. The description contributes no additional format, default, or interaction semantics, so baseline 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?

States a specific verb and resource ('List the signed-in user's Tock reservations') and enumerates the returned fields (venue, date/time, party size, experience), which no sibling provides. An agent can distinguish it from tock_get_availability, tock_verify_reservation, and the restaurant-lookup siblings without opening a schema.

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?

Usage is implied by the reservation scope, and the description does state a hard precondition (a signed-in exploretock.com tab via the ContextMint Bridge extension). However, it never says when to prefer this over siblings like tock_verify_reservation or tock_get_profile, and gives no explicit when-not guidance.

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 ContextMint Bridge 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.7/5.0
Behavior5/5

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

Annotations cover readOnly/openWorld, but the description adds real behavioral context: the verdict enum, the caveat that a not_found within minutes of booking is inconclusive rather than proof, and the hard prerequisite of a signed-in browser tab via the ContextMint Bridge. The auth requirement would be undiscoverable otherwise, so the description carries its own weight.

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?

Dense but front-loaded: the core action and verdict semantics come first, followed by the usage mandate, then the reporting rule and the prerequisite. No sentence is filler.

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 still supplies the return contract by naming all three verdicts, states the auth prerequisite, and gives downstream reporting instructions for the inconclusive case. Nothing an agent needs to call and correctly interpret this tool 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 (date, venue, partySize, bookedMinutesAgo) are documented in the schema itself, which already notes that bookedMinutesAgo drives the lag caveat. The description repeats that lag concept but adds no syntax or matching detail beyond the schema.

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?

States a specific verb and resource — verifying a Tock reservation by re-querying the account's own reservation lists — and explicitly enumerates the three verdict outcomes. This is clearly distinct from the tock_list_reservations sibling, which merely lists reservations without returning a verdict.

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?

Explicitly says when to use it ('after ANY booking attempt') and why (a success screen or screenshot is not proof), and it also gives handling guidance for the not_found case ('report as attempted, unverified'). That is usable when/when-not guidance that pins down behavior well beyond the obvious.

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.3/5.0

Scored across 8 tools

Disambiguation5/5

Every tool targets a distinct resource/action: reservation listing vs. availability vs. metro listing vs. profile vs. verification vs. venue detail vs. search vs. bridge diagnostics. There is no meaningful overlap; even the closely related get_restaurant/search_restaurants and list_reservations/verify_reservation have clearly separated roles.

Naming Consistency4/5

Almost all tools follow a clean tock_verb_noun pattern (list_reservations, get_availability, list_metros, get_profile, verify_reservation, get_restaurant, search_restaurants) with a consistent tock_ prefix. Only healthcheck breaks the verb_noun convention, a minor deviation.

Tool Count5/5

Eight tools is well-scoped for a restaurant discovery/verification server, and each one earns its place (discovery, availability, reservations, profile, verification, diagnostics). Nothing feels redundant or padded.

Completeness3/5

The read surface is solid for discovery and checking reservations, but the server is explicitly read-only: it cannot book or cancel a reservation, even though verify_reservation acknowledges booking attempts and canceled reservations exist. Menus/reviews are also absent, leaving notable gaps in the reservation lifecycle.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers