ServeCounter booking
Server Details
Find businesses that use ServeCounter, see their services, prices and free times, and book.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 5 tools
Each tool targets a clearly distinct action: find_business searches by name, get_business retrieves details of a specific business, get_free_times fetches availability, prepare_booking initiates an order, and get_booking_status checks an existing order. There is no meaningful overlap in purpose, and descriptions clarify any potential confusion between find and get.
All names follow a consistent snake_case verb_noun pattern (find_business, get_business, get_free_times, prepare_booking, get_booking_status). The only variation is a three-part name for get_booking_status, but it still fits the same predictable convention.
Five tools are well-scoped for a booking-assistant server, covering discovery, details, availability, preparation, and status without redundancy. Each tool earns its place and the count feels neither thin nor bloated.
The core booking workflow is fully covered from finding a business to preparing a booking and checking its status. However, there are minor gaps around post-booking management (e.g., cancel or reschedule), though the returned orderUrl may partially address this.
Available Tools
5 toolsfind_businessFind BusinessARead-onlyInspect
Find businesses on ServeCounter by name, such as "studio noord", that take bookings from assistants. Needs no sign-in. Answers up to 10 businesses with their address, which the other tools take as business.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | Part of the business's name or booking address, at least 3 letters. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so the description doesn't need to explain safety. It adds valuable behavioral details: no authentication required, returns up to 10 results, and includes addresses that other tools consume via the `business` parameter. It doesn't detail pagination or error cases, but that's minor given the read-only nature.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action, followed by authentication status and return behavior. No wasted words; every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with one parameter and no output schema, the description covers purpose, prerequisites (no sign-in), result limit, and return format (addresses for downstream use). It's nearly complete; missing only whether results are ranked or exhaustive beyond the 10 cap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already fully documents the single `query` parameter (name or booking address, at least 3 letters). The description adds a usage example ('studio noord') but no additional semantic constraints beyond what the schema provides. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource ('Find businesses on ServeCounter') and names the platform, so it's clearly distinct from siblings like get_business (which presumably fetches one business by ID). It also scopes the search to businesses that take booking from assistants, adding a meaningful qualifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear context for use: to find a business by name before using other tools, and notes 'Needs no sign-in'. However, it doesn't explicitly state when not to use it versus get_business, though the distinction is implied (search vs. retrieve by ID).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_booking_statusGet Booking StatusARead-onlyInspect
Where an order you prepared stands: open (the person has not ordered yet), booked (with a link to manage it) or ended (expired). Only for orders of the person who allowed you. Needs their sign-in.
| Name | Required | Description | Default |
|---|---|---|---|
| order | Yes | The order's code, the last part of the orderUrl, or the whole link. | |
| business | Yes | The business's address. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds genuinely useful behavior beyond that: an authentication prerequisite ('needs their sign-in'), a scope restriction, and the full set of terminal/user states the order can be in.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Compact and front-loaded: the status enumeration comes first, then the two constraints. Slightly terse phrasing ('the person who allowed you') costs a bit of clarity, but there is no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 possible return states and noting a link back to the manage flow, plus the auth requirement. That is close to complete for a two-parameter read tool, though it does not say what happens for an invalid or unrecognized order.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the two parameters (order, business) are documented in the schema with accepted formats, so the description needs to add little. It adds nothing about parameter usage (e.g., whether business and order must match), so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb+resource (retrieve where a prepared order stands) and enumerates the three possible statuses with meanings, which is more than a restatement of the name. It does not explicitly contrast itself with siblings like prepare_booking or get_free_times, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear applicability context: the tool covers only orders of the person who authorized the agent, and requires their sign-in. No sibling alternative is named for the reverse case, but the scoping condition is explicit and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_businessGet BusinessARead-onlyInspect
A business's locations, services, prices, add-ons and what it asks to be paid up front, the same as its booking page shows and nothing else. Needs no sign-in. With more than one open location, answer again with its locationId to see its services.
| Name | Required | Description | Default |
|---|---|---|---|
| business | Yes | The business's address from find_business, such as "studio-noord", or its booking page link. | |
| locationId | No | A location's id, when the business has more than one open location. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint and openWorldHint, and the description adds meaningful extras: an auth fact ("Needs no sign-in") and a data-scope guarantee ("and nothing else"), telling the agent no private or extra data surfaces. It omits return format and any rate/pagination behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences, front-loaded with what the agent receives, followed by the auth fact and the multi-location procedure. The phrasing "answer again with its locationId" is slightly awkward but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter read tool with no output schema, the description covers the returned content, the auth requirement, and the multi-location branch — enough to call it correctly. Return structure and format are left unspecified, which is acceptable here.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, giving a baseline of 3. The description adds only marginal semantics: that supplying `locationId` on a repeat call is what unlocks the services list, slightly clarifying why the parameter exists.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description enumerates exactly what the tool surfaces (locations, services, prices, add-ons, deposit) and scopes it as "the same as its booking page shows and nothing else." That is a specific resource with a real boundary, though it never names a sibling tool to contrast against (find_business only appears in the schema).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful operational context — no sign-in needed, and re-call with `locationId` when there is more than one open location — but it never states when to reach for this tool over find_business or the booking-flow siblings. Usage is implied rather than routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_free_timesGet Free TimesARead-onlyInspect
The free times for one service at one location, day by day, as the booking page offers them: at most 14 days a request. Needs no sign-in. Times are in the location's own time zone.
| Name | Required | Description | Default |
|---|---|---|---|
| from | Yes | The first day, YYYY-MM-DD. | |
| until | Yes | The last day, YYYY-MM-DD, at most 14 days from `from`. | |
| addOnIds | No | Add-ons chosen with the service. | |
| business | Yes | The business's address, such as "studio-noord". | |
| personId | No | Who it is with, from get_business people; leave out for no preference. | |
| serviceId | Yes | The service's id from get_business. | |
| variantId | No | A variant of the service, when it has them. | |
| locationId | Yes | The location's id from get_business. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnlyHint and openWorldHint, and the description adds genuinely new behavioral facts beyond them: no authentication is required, each request spans at most 14 days, and returned times use the location's own time zone. It does not describe pagination or response shape, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool returns, followed by the two constraints an agent would trip over. No filler or restatement of the name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only availability query with a fully documented eight-parameter schema and no output schema, the description covers the essentials: scope, request-size limit, auth posture, and time-zone interpretation of results. Only the response structure ('day by day') is left slightly vague.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all eight parameters are already documented in the schema, including the 14-day bound on `until` and the source of the ids. The description restates the one-service/one-location constraint and the time-zone semantics but adds no per-parameter meaning the schema lacks, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: free/available times for exactly one service at one location, returned day by day. That cleanly separates it from get_business and prepare_booking, but the description never names or contrasts those siblings explicitly, so differentiation is inferential rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Needs no sign-in' and the 14-day cap give real operational context for when this call is usable, and the 'as the booking page offers them' framing implies it is the availability lookup that precedes prepare_booking. However, there is no explicit when-to-use or when-not-to-use guidance and no alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_bookingPrepare BookingAInspect
Prepares a booking for the person who allowed you, for a free time. Nothing is booked yet: it returns a link (orderUrl) to give to the person. They read who the seller is and the terms, tick two boxes and press the button, and only then is it booked. Needs the person's own ServeCounter sign-in (OAuth). The booking is always for that person, whatever name or email you send; their phone number and full name are needed only when their account has none.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | The day, YYYY-MM-DD, from get_free_times. | |
| name | No | The person's full name, if their account has none. | |
| phone | No | The person's phone number, if their account has none. | |
| start | Yes | The start time, HH:MM, from get_free_times. | |
| payment | No | Only where the business lets the customer choose: pay the full amount now, or pay at the business with a deposit now. Defaults to the deposit. | |
| addOnIds | No | Add-ons chosen with the service. | |
| business | Yes | The business's address, such as "studio-noord". | |
| personId | No | Who it is with; leave out for no preference. | |
| serviceId | Yes | The service's id from get_business. | |
| variantId | No | A variant of the service, when it has them. | |
| locationId | Yes | The location's id from get_business. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial behavior beyond the annotations: nothing is committed until the person reads terms, ticks two boxes and presses the button; it returns an orderUrl link; it requires the person's own OAuth sign-in; and the booking always binds to that person regardless of name/email. This is exactly the surprising behavior an agent needs to know.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the outcome, then the consent flow, then identity requirements. Dense but every clause carries information; no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter, no-output-schema tool it covers the critical unknowns (no commit yet, orderUrl returned, OAuth requirement, identity binding). Given 100% schema coverage on parameters, remaining gaps are minor.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, including the conditional nature of name/phone and the payment enum. The description reinforces identity semantics (name/email ignored) but adds little beyond what the schema states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Prepares a booking') and immediately scopes it ('Nothing is booked yet'), which distinguishes it from any sibling that actually creates a booking. The agent knows this is the pre-booking step that yields an orderUrl.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description situates the tool in the workflow: the date/start come from get_free_times and the service/location from get_business, and the person must sign in with OAuth. It gives clear context but does not explicitly name alternatives or state 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.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
- First observed
find_business - First observed
get_booking_status - First observed
get_business - First observed
get_free_times - First observed
prepare_booking
Related MCP Connectors
Discover local services and availability, then create, track, reschedule, or cancel bookings.
Search and book appointments at local businesses. Barbershops, salons, spas, and more.
Find participating local service providers and book live appointment times.
Find, compare, and book local service businesses: live availability, prices, reviews, booking.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables AI agents to look up businesses, find free appointment slots, book, list and cancel appointments at salons, barbershops, nail and brow studios and clinics. Works read-only without a customer login by returning a pre-filled booking link, and can also run against a built-in demo with sample businesses.5MIT
- AlicenseNot gradedqualityBmaintenanceEnables small local businesses to offer Alexa+ voice booking from one self-hosted, multi-business deployment with strict per-business isolation. It supports finding businesses, searching slots, two-step booking, rescheduling and cancellation with deposits, cross-session memory, bookings for people you care for, agentic waitlist recovery, notifications, and an owner dashboard.MIT
- AlicenseAqualityDmaintenanceEnables AI assistants to find, book, and cancel salon appointments via SalonRunner accounts. Self-hosted for local or remote use.628 npmMIT
- AlicenseAqualityAmaintenanceBook a table, an appointment or a place in a class at a real local business. Live availability, instant confirmation, no account and no API key. Eight tools: search, fetch, get_business, check_availability, create_booking, check_booking, cancel_booking and request_listing. Guest emails in eight languages. Hosted at https://g-guest.app/api/mcp86 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.