Skip to main content
Glama

Crawlora MCP

fresha_search_venues

Read-only

Search Fresha's salon, barber and wellness marketplace and return one page of venues: each venue's id, slug, name, canonical page URL, address with coordinates, business-type label, average rating with its rating count, rating badge, cover image and distance, plus the gateway's own match count and a forward cursor. Pass a latitude/longitude pair to search a place; with neither, the gateway falls back to its own default centre, which is not your market, and the response reports the centre it used. query, min_price, service_gender (EVERYONE, MALE, FEMALE), awards (BEST_IN_CLASS, HIGHLY_RECOMMENDED), sort (DISTANCE, RATING, RECOMMENDED) and the three treatment ids from fresha_taxonomy all change the result set. first is 1 to 200, and larger values are rejected because the gateway rejects them too. Page with next_cursor as after while has_next_page is true; a page past the end is an empty list, count 0 with no error is an honest empty result for a valid filter, and a malformed cursor silently restarts at page one, so a repeated first page does not mean a different result set. Use fresha_taxonomy first when you want a treatment filter: a well-formed id that does not exist returns zero results rather than an error. Results carry no price; fresha_venue is the only tool that returns one.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "fresha_search_venues"
  }
}

Input Schema

NameRequiredDescriptionDefault
sortNoOptional result ordering, one of: DISTANCE, RATING, RECOMMENDED. Omit for the gateway's own default, which is the same order as RECOMMENDED.
afterNoOpaque forward cursor: pass next_cursor from the previous page, or omit for the first page. A page past the end returns zero venues. A malformed cursor is NOT an error upstream: it silently restarts the list at page 1, so do not treat a repeated first page as a different result set.
firstNoVenues per page, default 20, maximum 200. Larger values are rejected because the gateway rejects them too (201 answers Outside of range); the gateway's own fallback for an omitted or zero value is 60, and this route always sends a concrete value.
queryNoOptional free-text query matched by Fresha's own venue search. Empty means no keyword filter.
awardsNoOptional Fresha award filter, one of: BEST_IN_CLASS, HIGHLY_RECOMMENDED. The gateway's own argument is a list; this route exposes one value and sends it as a one-element list.
latitudeNoOptional latitude of the search centre. Supply it together with longitude; with neither, the gateway uses its own default centre.
longitudeNoOptional longitude of the search centre. Supply it together with latitude.
min_priceNoOptional minimum service price in the market's own currency, as the gateway's own filter takes it. A search result carries no price: check a venue's own service menu, which is the only place this API publishes prices.
service_genderNoOptional venue gender focus, one of: EVERYONE, MALE, FEMALE. The gateway's own argument is a list; this route exposes one value and sends it as a one-element list.
treatment_tag_idNoOptional taxonomy tag id in the form tag:<slug>, from fresha-taxonomy. Any other shape is rejected; a well-formed id that does not exist returns zero results without an error.
treatment_type_idNoOptional taxonomy treatment id in the form treatment:<category-slug>/<type-slug>, from fresha-taxonomy. Any other shape is rejected; a well-formed id that does not exist returns zero results without an error.
treatment_category_idNoOptional taxonomy category id in the form category:<slug>, from fresha-taxonomy. Any other shape is rejected; a well-formed id that does not exist returns zero results without an error.

Output Schema

NameRequiredDescriptionDefault
dataYesThe tool result payload (shape varies per tool; see each tool's docs resource).

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.8/5.0
Behavior5/5

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

Goes well beyond the supplied readOnlyHint/openWorldHint annotations: it discloses silent failure modes (malformed cursor restarts at page 1, oversized first is rejected, well-formed but nonexistent treatment ids return zero rather than an error), distinguishes an honest empty result from an error, and warns the fallback centre is not the agent's market.

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?

Purpose and return payload are front-loaded and nearly every clause carries an operational fact. It is a single dense block with some duplication of cursor behavior already documented in the schema, which costs a point on structure.

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 12-parameter, zero-required, open-world search tool, it covers centre selection, pagination, filter provenance, error semantics and the price gap. Return values are described even though an output schema exists, leaving nothing an agent needs 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 already 100%, so the baseline is 3; the description adds cross-tool meaning by tying the three treatment id parameters to fresha_taxonomy and noting all filters change the result set. It restates enum values already present in the schema, so it stops short of a 5.

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?

Opens with a specific verb and resource ('Search Fresha's salon, barber and wellness marketplace') and enumerates exactly what a page contains (id, slug, name, URL, address with coordinates, rating, badge, image, distance, count, cursor). It also distinguishes itself from siblings by naming fresha_venue as the only price-bearing tool.

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?

Gives concrete routing rules: consult fresha_taxonomy first for treatment filters, use fresha_venue for prices, pass latitude/longitude for a real market centre otherwise the gateway falls back to a default that is not the agent's market. Pagination guidance (next_cursor as after while has_next_page) is explicit.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources