CI Treasure Hunt
Server Details
Worldwide directory of Contact Improvisation dance: search upcoming festivals, workshops, intensives and retreats, teachers, venues and local communities that run regular jams. Read-only, no account needed. Returns current listings with links to citreasurehunt.com.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 8 tools
Each entity (community, event, teacher, venue) has a distinct search/get pair, and the descriptions explicitly distinguish the closest pair (search_communities vs search_venues), telling agents to use them alongside each other. No two tools appear to do the same thing.
Perfect search_<entity> / get_<entity> pattern in consistent snake_case verb_noun form across all 8 tools. Predictable and readable.
8 tools is well-scoped: four entity types times a search/get split, each earning its place with no redundancy.
The domain is a public read-only directory, and the surface covers discovery (search) plus full detail (get) for every entity type, with cross-links between related entities (get_event exposes teacher/venue links). No dead ends for a read-only directory.
Available Tools
8 toolsget_communityGet community detailsARead-onlyIdempotentInspect
Get one local community's public details: what it runs, where, in which languages, the people and venues involved, and events it organizes. Use with a slug from search_communities. Group chat invite links and contacts are only on the community's page, not returned here.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Community slug from search_communities. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds genuinely new behavioral context beyond them: group chat invite links and contacts are deliberately excluded and only appear on the community's page, so the agent knows not to expect them. It doesn't discuss pagination or error behavior, but for this tool that's minor.
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, zero filler. The positive scope comes first, then the prerequisite, then the negative scope — all front-loaded and each sentence carrying distinct 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?
With no output schema, the description compensates by enumerating the returned fields and explicitly noting what is absent, which is exactly what an agent needs to decide whether this tool answers its question. Nothing required to call it correctly 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% and the single `slug` parameter is already documented as coming from search_communities, so the description repeats rather than extends the schema. Baseline 3 is appropriate when the schema does the heavy lifting.
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 one local community's public details') and then enumerates the payload — operations, location, languages, people, venues, events — which pins down exactly what this tool returns versus get_event/get_teacher/get_venue. An agent can distinguish it from the search_*/get_* 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states the prerequisite and the source of the identifier: 'Use with a slug from search_communities,' which routes the agent through the correct lookup tool first. It stops short of naming when-not to use it (e.g., when you don't yet have a slug), so it's clear guidance without full exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_eventGet event detailsARead-onlyIdempotentInspect
Get the full listing of one event: dates and times, venue and address, description, prices, teachers, organizers, level and languages. Use after search_events, or when the user gives a citreasurehunt.com event link. Accepts the event id (e.g. 'W27r') or the URL.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Event id (e.g. 'W27r'), its slug, or its citreasurehunt.com URL. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safe, repeatable lookup profile is fully covered by structured data. The description adds only the accept format (id or URL) and a list of returned fields; it says nothing about rate limits, error behavior for a missing/invalid id, or auth requirements. With annotations carrying the behavioral burden, this is adequate but thin.
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 packed sentences with zero filler: the first states what is retrieved and what it contains, the second states when to use it and what input shapes are accepted. Front-loaded and appropriately sized for a one-parameter lookup tool.
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, single-id lookup with no output schema, the description compensates well by enumerating the returned fields (dates, venue/address, prices, teachers, organizers, level, languages), which is exactly the information an agent needs to judge relevance. Nothing needed to call it correctly 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 description coverage is 100% and the single parameter already documents "Event id (e.g. 'W27r'), its slug, or its citreasurehunt.com URL." The description's mention of id/URL acceptance restates this, adding the example format but no new semantics. Baseline 3 applies when the schema does the heavy lifting.
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 full listing of one event") and enumerates the fields returned (dates, venue, description, prices, teachers, organizers, level, languages). It also distinguishes itself from the sibling list tools by noting it is used after search_events rather than for searching, so an agent can tell it apart from search_events/get_venue/get_teacher without opening another 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?
Explicitly states the two entry conditions: after search_events, or when the user supplies a citreasurehunt.com event link. It names the sibling that precedes it. There is no explicit when-not guidance (e.g. that this is not a bulk/multi-event tool), so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_teacherGet teacher profileARead-onlyIdempotentInspect
Get one person's public profile: bio, where they are based, practices, years of experience and their upcoming events. Use with a slug from search_teachers or from a get_event teacher link.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Profile slug from search_teachers, e.g. 'mona-ring'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, covering the safety profile. The description adds the 'public' scope and enumerates what is returned, which is useful context, but provides no additional behavioral details like rate limits or error 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?
Two sentences, both front-loaded: the first states what is returned, the second tells the agent where to get the slug. 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?
Complete enough for a single-parameter read tool whose annotations cover safety and whose schema documents the input. No output schema exists, so the description appropriately enumerates return fields, though it could note omission behavior (e.g., if a teacher has no upcoming events).
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 schema already documents the slug parameter with an example ('mona-ring'). The description reinforces the slug source but adds no new format or syntax detail beyond the 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?
States a specific verb and resource ('Get one person's public profile') and enumerates the returned fields (bio, location, practices, years of experience, upcoming events). This distinguishes it from get_event and get_community among the siblings.
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?
Explicitly instructs how to obtain input: 'Use with a slug from search_teachers or from a get_event teacher link.' This names two concrete sources and routes the agent to the correct sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_venueGet venue detailsARead-onlyIdempotentInspect
Get one venue's public details: address, description, website and the upcoming events it hosts. Use with a slug from search_venues or from a get_event venue link.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Venue slug from search_venues. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is fully covered elsewhere. The description adds that the response includes upcoming events and is 'public' details only, but says nothing about rate limits, pagination, or how many upcoming events are returned — useful context, not rich behavioral disclosure.
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 payload stated first and the input-provenance guidance second. Every clause carries information and nothing is repeated from the schema or annotations.
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 return-value burden and does so by naming the fields returned plus the hosted-events section. For a single-parameter read tool with full annotation coverage, nothing an agent needs in order to call it correctly 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% and the schema already says the slug comes from search_venues. The description goes one step further by naming a second valid source ('a get_event venue link'), which is genuine added meaning over the schema for this single 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 ('Get one venue's public details') and enumerates the payload (address, description, website, upcoming events). The singular 'one venue' cleanly separates it from the sibling search_venues, and the venue-vs-event/teacher/community nouns separate it from the rest of the family.
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?
Explicitly tells the agent where the required slug comes from ('a slug from search_venues or from a get_event venue link'), which is the key routing instruction for this tool. It gives clear positive context but no explicit exclusion or statement of when to prefer a different lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_communitiesSearch communitiesARead-onlyIdempotentInspect
Find local Contact Improvisation communities, the groups that run regular weekly jams and classes, by country, city or name. The primary tool for 'where can I dance CI in ' or 'is there a CI jam in '. Returns communities with slug and URL; call get_community for details.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| limit | No | Maximum results, 1 to 20. Default 10. | |
| query | No | Community name or words from its description. | |
| country | No | ISO code or English name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description still adds real value by disclosing the return shape (slug and URL) and the natural next call, which is not in any structured field.
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 resource and scope, and the alternative-tool pointer lands last. The two near-paraphrased example queries cost a little density but earn their place as intent triggers.
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 return-format duty and does so by naming slug and URL. Annotations cover the safety profile, so the only remaining gap is result count/pagination behavior, which the limit parameter largely implies.
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 75%, with limit and country already documented and query explained. The description restates the filterable dimensions (country, city, name) but adds no syntax or format detail beyond the schema, 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?
States a specific verb and resource (find CI communities) plus the discriminating detail that they 'run regular weekly jams and classes', and it separates itself from the get_* siblings by naming get_community as the detail follow-up.
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 triggering user intents ('where can I dance CI in <city>', 'is there a CI jam in <city>') and points to get_community for depth. It does not, however, state when to prefer search_events or search_venues over this tool, which the sibling list makes relevant.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_eventsSearch eventsARead-onlyIdempotentInspect
Find upcoming Contact Improvisation events worldwide: festivals, workshops, intensives, retreats, long jams and residencies. Use for questions like 'CI festivals in Germany this summer' or 'workshops with '. Filter by country, city, dates, type, practice or free text. Returns up to 20 events sorted by start date, each with id and citreasurehunt.com URL. Call get_event for prices, teachers and the full description.
| Name | Required | Description | Default |
|---|---|---|---|
| to | No | Latest start date, YYYY-MM-DD. | |
| city | No | City name, e.g. Berlin. | |
| from | No | Earliest date, YYYY-MM-DD. Default today. | |
| type | No | Event type. | |
| limit | No | Maximum results, 1 to 20. Default 10. | |
| query | No | Free text matched against title, description and place, e.g. a teacher's name or 'silent'. | |
| country | No | Country as ISO code ("PT") or English name ("Portugal"). | |
| practice | No | Practice tag, e.g. "contact_improvisation" (default), "conscious_dance", "axis_syllabus", or "any" for all practices. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior. The description adds return-shape context the annotations cannot: a cap of 20 results, sort order by start date, and that each item carries only id and a citreasurehunt.com URL rather than full detail. Minor gap: no pagination or offset behavior is described.
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 tight sentences: what it finds, when to use it, and what it returns plus where to go next. Zero filler and the domain scope and examples are front-loaded.
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 stating result count, sort order, per-item fields, and the get_event handoff for detail. For an eight-parameter, zero-required search tool this is enough for an agent to call it 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. The description adds usable semantics beyond the schema by framing the filters as a sentence ('filter by country, city, dates, type, practice or free text') and by tying free text to a real use case ('workshops with <teacher>', 'silent').
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 (Contact Improvisation events) with the covered event types enumerated and geographic scope ('worldwide'). It names get_event as the follow-up tool, so the agent can distinguish it from the get_* 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger examples ('CI festivals in Germany this summer', 'workshops with <teacher>') and explicitly routes to get_event for prices, teachers and full descriptions. It also implies the filter axes available, so the agent knows both when to pick this tool and when to escalate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_teachersSearch teachersARead-onlyIdempotentInspect
Find Contact Improvisation teachers, organizers and musicians by name, or by where they are based. Use for 'who teaches CI in ' or to look up a person mentioned in an event. Returns short profiles with slug and URL; call get_teacher for the full bio and their upcoming events.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City they are based in. | |
| role | No | ||
| limit | No | Maximum results, 1 to 20. Default 10. | |
| query | No | Name or words from their bio. | |
| country | No | Where they are based, ISO code or English name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, so the safety profile is covered. The description adds useful behavior beyond that: the result is a short profile with slug and URL, and full bio plus upcoming events require a follow-up get_teacher call. It does not discuss the limit cap or result ordering, which is a minor residual gap.
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 tight sentences: what it finds, when to use it, and what it returns plus the follow-up path. Nothing is redundant and the scope statement is front-loaded.
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 still tells the agent the shape of the return (short profiles with slug and URL) and how to get the rest. For a five-parameter, all-optional search tool with a fully annotated read-only profile, nothing needed 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?
Schema description coverage is 80%, so the schema already documents city, country, query, limit, and the role enum. The description's mention of names, locations, and the three role types loosely maps to those parameters but adds no format or syntax detail beyond the schema. 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?
States a specific verb and resource ('Find Contact Improvisation teachers, organizers and musicians') plus the two searchable axes (name, location). It explicitly contrasts with the sibling get_teacher, so an agent can route without opening either 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?
Gives concrete triggering phrasings ('who teaches CI in <city>') and a second scenario (looking up a person mentioned in an event), then names the alternative tool (get_teacher) for the deeper lookup. When-to-use and when-to-escalate are both explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_venuesSearch venuesARead-onlyIdempotentInspect
Find dance studios and retreat centers that host Contact Improvisation classes, jams and events, by name, country or city. Use for 'where is CI taught in ' alongside search_communities. Returns venues with slug and URL; call get_venue for the address and upcoming events.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| limit | No | Maximum results, 1 to 20. Default 10. | |
| query | No | Venue name or words from its description. | |
| country | No | ISO code or English name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds valuable non-annotation context: the shape of the return (venues with slug and URL) and the fact that get_venue is needed for address and events. It doesn't mention pagination or result ordering, but the important behavioral handoff is disclosed.
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 tool finds before the usage hint and the return/handoff note. No filler or restatement of the title.
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 return-value burden and does so partially — slug and URL are named, and the agent is told to call get_venue for address and events. Missing only secondary detail such as ordering, total counts, or behavior when no venue matches.
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 75% — limit, query and country are documented in the schema, while city is not. The description's 'by name, country or city' loosely maps query/country/city to search dimensions, but adds no format or matching-semantics detail beyond what the schema already supplies. Baseline 3 for high coverage 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?
States a specific verb (find) and a narrowly-scoped resource (dance studios and retreat centers hosting Contact Improvisation), and names the filter dimensions (name, country, city). This is immediately distinguishable from search_communities, search_events, and search_teachers.
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 an explicit triggering scenario ('where is CI taught in <city>') and names the companion tool search_communities, plus routes the agent to get_venue for follow-up detail. It stops short of stating when this tool should NOT be used instead of the sibling searches, so not a full 5.
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.
8 tool updates
- First observed
get_community - First observed
get_event - First observed
get_teacher - First observed
get_venue - First observed
search_communities - First observed
search_events - First observed
search_teachers - First observed
search_venues
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.1611 npm1MIT
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs117 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceRevnuvo Company Intelligence tells AI agents what changed at a company, with evidence. It observes company websites, technologies, and DNS over time and returns timestamped, confidence-aware changes, signals, and monitoring.9MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.