EscortFox
Server Details
Read-only search of the EscortFox escort directory: cities, services and listing summaries.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
Each tool has an unmistakable role: get_listing fetches a single detail record, search_listings performs the query, and the four list_* tools each enumerate a different reference axis (country, city, district, service). The descriptions explicitly state how outputs feed into other tools' parameters, leaving no room for misselection.
All six names follow a strict verb_noun snake_case pattern (get_*, list_*, search_*), with plural nouns for collection tools and singular for the detail tool. The convention is uniform and predictable.
Six tools is exactly right for a directory browser: four enumeration helpers for the geography/service hierarchy, one search, and one detail lookup. Every tool earns its place and none is redundant.
The read-only lifecycle is well covered — you can discover countries, drill into cities/districts/services, search, and retrieve full listing details with links. The only notable limits are the hard 100-result cap (acknowledged in the description) and no standalone venue/agency detail endpoint, but agents can work around both via search results.
Available Tools
6 toolsget_listingGet a listingARead-onlyIdempotentInspect
Get the summary of one EscortFox listing by its numeric id — the number at the end of a listing link (…/anna-12345 → 12345). Returns the same fields as search_listings and the listing's escortfox.com link; contact details and photos are only on that page.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | The listing id. | |
| lang | No | Language of the teaser text and of the escortfox.com links. Default "en". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so safety is covered. The description adds useful behavioral details: it returns the same fields as search_listings and the escortfox.com link, while contact details and photos are only available on that page.
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?
The description is compact and front-loaded with the core operation. Every clause adds practical value: the id format, the relationship to search_listings fields, and where contact details and photos live.
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 read tool with no output schema, the description sufficiently explains return content, the id source, and what is not returned. Schema and annotations then cover language selection, safety, and idempotency.
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. The description still adds meaning for the required id parameter by explaining that it is the numeric value at the end of a listing link (…/anna-12345 → 12345), which helps agents extract the correct value.
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: get the summary of one EscortFox listing by numeric id. It also distinguishes this single-listing lookup from search_listings by explaining that it returns the same fields as that sibling and adds the listing's escortfox.com link.
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?
Clearly implies when to use it: when you have a listing's numeric id, derived from the end of a listing URL. It does not explicitly say to use search_listings when you do not already have an id, but the context is otherwise clear and the id-source example is helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_citiesList citiesARead-onlyIdempotentInspect
List the cities of a country that have active listings, busiest first, with escort and venue counts and each city's escortfox.com link. Use the city slug as city in search_listings, and the city's region as country where it differs from the country code (US states, e.g. "US-CA").
| Name | Required | Description | Default |
|---|---|---|---|
| country | Yes | Required. ISO 3166-1 alpha-2 country code (e.g. "DE"), or a city's region code where the site splits a country by state (e.g. "US-CA"). Get valid values from list_countries / list_cities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuinely new behavioral context: only cities with active listings are returned, results are sorted busiest first, and the response includes counts and a site link. It doesn't discuss pagination or result caps, which keeps it from 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?
Two sentences, no filler, with the core scope and ordering front-loaded and the cross-tool usage note second. Every clause carries information an agent needs.
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 single-parameter read tool with rich annotations and no output schema, the description covers what is returned (cities with counts and links), the ordering, the filtering (active listings only), and how to reuse the returned values. Nothing essential to correct invocation is missing.
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 documents the pattern and accepted country/region codes, which sets a baseline of 3. The description adds real meaning beyond that by explaining the downstream use of the returned city slug and the region-as-country convention for US states, which is the non-obvious part of the parameter.
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 (list cities of a country), scopes it to cities with active listings, and specifies ordering (busiest first) plus the payload (escort/venue counts and escortfox.com link). This clearly distinguishes it from list_countries and list_districts.
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?
Gives actionable downstream guidance: use the returned city slug as `city` in search_listings, and use the city's region as `country` where the site splits by state (e.g. "US-CA"). It does not explicitly state when to choose this over list_districts or list_countries, so it stops short of full when/when-not coverage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_countriesList countriesARead-onlyIdempotentInspect
List the countries that have active EscortFox listings, with the number of escort and venue listings in each. Use a country code as country in list_cities and search_listings.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a safe, idempotent, read-only, open-world operation. The description adds meaningful behavioral context beyond that: only countries with active listings are returned, and each result includes counts of escort and venue listings.
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?
Two tightly written sentences with no waste. The result content is stated first, followed by the practical downstream usage note, making the description front-loaded and easy to scan.
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 parameterless, read-only listing tool with no output schema and full annotation coverage, the description is complete. It explains the scope of returned countries, includes what each result contains, and guides how to use the output.
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?
The tool has zero parameters, so the baseline is 4. The schema is also empty and fully covered; the description's mention of country codes is useful contextual guidance rather than parameter semantics.
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: list countries with active EscortFox listings, including counts of escort and venue listings. It clearly distinguishes this top-level enumeration from sibling tools by explaining how the returned country codes feed into list_cities and search_listings.
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 downstream usage guidance: use a country code as `country` in list_cities and search_listings. That effectively positions this as the starting point for country-scoped queries, though it does not explicitly 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.
list_districtsList districtsARead-onlyIdempotentInspect
List the districts of a city that have active listings (most cities have none). Use a district slug as district in search_listings.
| Name | Required | Description | Default |
|---|---|---|---|
| city | Yes | Required. City slug from list_cities. | |
| country | Yes | Required. The city's region from list_cities, or its ISO 3166-1 alpha-2 country code (e.g. "DE"), or a city's region code where the site splits a country by state (e.g. "US-CA"). Get valid values from list_countries / list_cities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), so the bar is lower. The description still adds a genuinely useful behavioral caveat — 'most cities have none' — warning the agent that empty results are the norm and not an error, plus a hint about what the returned value is used for.
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?
Two short sentences, zero filler, with the scope qualifier front-loaded and the follow-up usage note second. Everything earns its place.
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 carries the burden of saying what comes back (district slugs with active listings) and it does, plus the empty-result caveat. It stops short of describing the response shape (e.g. slug+name fields), which is a minor gap for a two-parameter list tool.
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% and both parameters are fully documented in the schema (city slug from list_cities, country code/region format). The description only references the output field `district`, not the inputs, so it adds little beyond the schema — baseline 3.
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 (list districts of a city) plus a scoping qualifier (only those with active listings). This clearly separates it from list_cities and list_countries, which operate at different geographic levels.
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?
Gives a forward-pointer to the downstream tool: use the returned slug as `district` in search_listings, which tells the agent why it would call this. It lacks an explicit 'do not use this for X, use Y instead' clause, but the sibling set is small and the purpose is unambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_servicesList servicesARead-onlyIdempotentInspect
List the service vocabulary of escort listings (slug and English name). Use a slug as service in search_listings (escort searches only).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare this as a read-only, idempotent, non-destructive, open-world operation. The description adds meaningful context beyond that: the tool returns a vocabulary of slugs and English names, and the slugs are valid only for escort searches in search_listings.
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?
Two short sentences, front-loaded with the primary purpose and followed by the downstream usage note. There is no redundant or filler content.
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 zero-parameter, read-only vocabulary tool with no output schema, the description is complete: it states what the tool lists, what fields are returned, and how the returned slug should be used. Nothing essential for correct invocation is missing.
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?
The tool has zero parameters and an empty object schema, so there is no parameter semantics to document. The baseline of 4 applies because the description cannot add meaning beyond an empty schema.
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 uses a specific verb ('List') and resource ('service vocabulary of escort listings') and explicitly names the output fields ('slug and English name'). This distinguishes it from sibling vocabulary tools like list_cities and list_countries, which cover different filter dimensions.
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 states the downstream use clearly: 'Use a slug as `service` in search_listings (escort searches only).' This tells the agent when the returned values are relevant, though it does not explicitly contrast calling this tool with calling the sibling list tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsSearch listingsARead-onlyIdempotentInspect
Search the EscortFox directory of independent escorts, agencies and venues in one place. Returns up to 20 listing summaries per page: name, location, age, starting rate, verification status, incall/outcall, venue type, a short teaser and the listing's escortfox.com link. Summaries have no contact details or photos: always give the user each listing's link, where both are shown. "escort" and "venue" searches need country + city (find them with list_countries and list_cities); "agency" searches need country only. Only pages 0-4 (100 results) exist — narrow the search with district, service or verified instead of paging further.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City slug from list_cities (e.g. "berlin"). Required for escort and venue searches; not allowed for agency searches. | |
| lang | No | Language of the teaser text and of the escortfox.com links. Default "en". | |
| page | No | Zero-based results page, 0-4 (20 results each). Default 0. | |
| type | Yes | What to search: "escort", "venue" or "agency". | |
| country | Yes | Required. ISO 3166-1 alpha-2 country code (e.g. "DE"), or a city's region code where the site splits a country by state (e.g. "US-CA"). Get valid values from list_countries / list_cities. | |
| service | No | Optional service slug from list_services (escort searches only). | |
| district | No | Optional district slug from list_districts (escort and venue searches). | |
| verified | No | true = only escorts whose photos and phone are verified (escort searches only). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, open-world), and the description adds real operational context: a hard 100-result ceiling across pages 0-4, 20 results per page, and the deliberate omission of contact details and photos. The instruction to always surface the escortfox.com link is a useful behavioral constraint, though rate limits or latency are not mentioned.
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?
Four dense sentences with no filler; the return shape comes first, then the per-type constraints, then the pagination limit as the closing warning. The most failure-prone constraint (100-result ceiling) is placed last for emphasis rather than buried.
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?
There is no output schema, so the description carries the burden of describing return values, and it does so thoroughly — enumerating the summary fields and explicitly flagging the missing contact details and photos. Combined with the conditional input rules and pagination cap, an agent has everything needed to call and present results correctly.
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 baseline is 3, but the description adds cross-parameter reasoning the schema only states piecewise: which parameter combinations are valid per search type and how the optional district, service and verified parameters relate to the page cap. The lang parameter, however, gets no mention in the description.
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 (search) and resource (EscortFox directory of escorts, agencies and venues) plus the exact scope of what is returned: listing summaries, not full listings. This cleanly separates it from get_listing, which an agent would otherwise confuse it with.
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?
Gives explicit per-type prerequisites: escort and venue searches need country + city, agency searches need country only, with pointers to list_countries and list_cities for obtaining them. It also gives a positive alternative to pagination ("narrow the search with district, service or verified instead of paging further").
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.
6 tool updates
- First observed
get_listing - First observed
list_cities - First observed
list_countries - First observed
list_districts - First observed
list_services - First observed
search_listings
Related MCP Connectors
Read-only search of Québec's bilingual classifieds: ads, categories, filters, places.
US local businesses, services and source-cited prices, city by city. Free, no API key.
Local providers worldwide, plus travel and public data. Free search; paid answers via x402.
Search live free giveaway listings in Spanish cities, one city per call. Read-only, no account.
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables AI agents to search public classified listings and read individual listing details through a local browser session, with filters for location, radius, price, and sort order. Read-only and user-directed: no login, no account, no messaging, and no bulk scraping.20MIT
- AlicenseAqualityAmaintenanceEnables AI clients to search Avito listings by city, price, and sort order, inspect complete listing cards, and review seller ratings and recent feedback locally in read-only mode.1050MIT
- AlicenseAqualityCmaintenanceRead-only search of a sourced directory of broker MCP servers, trading APIs and market data tools.4CC BY-4.0
- FlicenseNot gradedqualityBmaintenanceEnables read-only access to Kleinanzeigen.de listings, including compact search, listing details, availability checks, and route calculations with optional distance and driving information.-
Glama MCP Gateway
Add one secure layer between your agents and this server.