aiagencies
Server Details
Find an AI agency for your next project.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 6 tools
get_listing (single by slug) vs search_listings (text/place/category) vs the list_* facet tools are clearly distinct. Minor overlap exists since search_listings can filter by place and category, which partially duplicates what list_places/list_categories expose, but the purposes (retrieving agencies vs enumerating facets) remain recognizable.
All six tools follow a consistent verb_noun snake_case pattern (get_*, list_*, search_*). The verb choice maps predictably to the operation type (retrieve one, enumerate, query).
Six tools is well-scoped for a read-only directory server. Each tool covers a distinct facet (listing, search, categories, places, sources, stats) with no filler.
The surface covers the core read-only directory workflows (search, retrieve by slug, enumerate facets, stats, provenance). Minor gaps: get_listing requires a known slug and there is no explicit browse-all/pagination operation, though search_listings can approximate browsing.
Available Tools
6 toolsget_listingARead-onlyIdempotentInspect
Get one published AI agency by its slug.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The listing slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive, closed-world behavior. The description adds useful scope via 'published', implying unpublished listings are not returned, but it does not explain behavior for missing or unpublished slugs.
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?
A single front-loaded sentence with no redundant or filler content. Every word contributes to identifying the operation and its scope.
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 one-parameter read operation with rich annotations and no output schema, the description is nearly complete. The main missing detail is the expected behavior when the slug does not match a published listing.
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 slug parameter is already fully documented in the schema. The description says lookup is by slug but adds no format, normalization, or validation guidance beyond what the schema provides.
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: getting one published AI agency by slug. It implicitly distinguishes retrieval-by-identifier from the sibling search/list tools, but does not explicitly name search_listings or explain the relationship.
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?
Usage is only implied: use this when you already know the slug. There is no explicit guidance on when to use it versus search_listings, nor any stated exclusions such as unpublished or missing listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statsARead-onlyIdempotentInspect
Get the number of published AI agencies, places and categories, and when the data last changed.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds that the result is a per-entity-type count plus a last-modified timestamp, which is useful return-value context, but it adds nothing about caching or freshness semantics beyond "when the data last changed".
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?
One sentence of roughly twenty words that leads with the verb and covers both what is counted and the freshness signal. No filler, no repetition of the tool name, nothing to trim.
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?
This tool has zero parameters and no output schema, so the description must carry the return shape, and it does so at a high level: counts for three entity types plus a last-changed timestamp. It is complete enough to call correctly, though it does not say whether the counts are scoped to published items only (it does say "published") or how the timestamp is formatted.
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 takes zero parameters, so the baseline is 4. The description correctly attributes no input requirements and does not introduce any parameter confusion; the schema and description are consistent on this point.
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 definition uses a specific verb ("Get") and resource (number of published AI agencies, places and categories) plus the last-changed timestamp, so the agent can infer that the tool returns aggregate statistics rather than the listing records themselves. It does not explicitly name the sibling tools such as list_places or list_categories, but the contrast with a list tool is clear enough to be useful.
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 implies this is the tool to call when you want counts or a freshness check rather than actual records. However, it never explicitly says when to use this tool instead of the sibling list_* tools or get_listing, and it states no exclusions or alternative conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesARead-onlyIdempotentInspect
List categories with their AI agency counts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is fully covered. The description adds that AI agency counts are included, but does not describe ordering, pagination, or response shape beyond that.
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 a single front-loaded sentence with no unnecessary text. It states the resource and the key returned detail immediately.
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 list tool with rich annotations and no output schema, the description is nearly sufficient. It explains the resource and mentions the count data returned, though it does not specify exact return fields or ordering.
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 there is no parameter syntax to explain. The schema is empty and requires no clarification, making the baseline of 4 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: 'List categories'. It also clarifies the returned content as categories with their AI agency counts. It does not explicitly differentiate itself from siblings like get_stats or list_places, but the purpose is clear.
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 intended usage is implied: call this to retrieve categories and their counts. However, the description gives no explicit when-to-use guidance, no exclusions, and no alternatives such as get_stats or search_listings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_placesARead-onlyIdempotentInspect
List countries, regions and cities that have AI agencies.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description adds no behavioral context beyond the annotation set — no note on result ordering, whether results are cached/static, or what 'AI agencies' means in practice.
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?
One short sentence with no filler, and the resource is front-loaded after the verb. It is arguably too terse for a tool whose output shape is undefined, but nothing is wasted.
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 should clarify the return shape — e.g., whether results are a flat list of place names or a hierarchy of countries > regions > cities. That structural question is left unresolved, which matters for an agent that will parse the result.
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 takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The field's meaning ('countries, regions and cities that have AI agencies') is stated, though without an example 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 ('List') and resource ('countries, regions and cities that have AI agencies'), which is enough for an agent to know what it returns. It does not explicitly contrast with siblings like list_categories or list_sources, though the geographic domain makes the distinction inferable.
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?
Usage is only implied: an agent can guess this is a discovery/enumeration helper for location values. There is no statement of when to prefer it over search_listings or the other list_* tools, and no prerequisites mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sourcesARead-onlyIdempotentInspect
List where the AI agency data comes from, with the license and refresh of each source.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already establish that this is a read-only, idempotent, non-destructive, non-open-world listing operation. The description adds useful context about what each source entry contains, license and refresh details, but does not describe return shape, pagination, or any other operational 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?
It is a single front-loaded sentence that states the resource and the key returned fields with 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 simple zero-parameter list tool with rich annotations, the description is largely complete: it identifies the resource and the per-source metadata returned. It could be stronger if it clarified the return format or whether the list is exhaustive, especially since there is no output schema.
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?
This tool takes zero parameters, so the description is not required to explain parameter semantics. The baseline for a parameterless tool is 4, and nothing in the description misleads about inputs.
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 gives a specific verb, 'List', and a clear resource, 'sources', and further specifies that it returns license and refresh information for each source. It separates itself from siblings by resource, though it does not explicitly name alternatives such as list_categories or list_places.
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 use case is implied: call this when you need provenance, license, or refresh metadata about the AI agency data sources. However, there is no explicit when-to-use/when-not-to-use guidance and no mention of sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsBRead-onlyIdempotentInspect
Search published AI agencies by text, place and category.
| Name | Required | Description | Default |
|---|---|---|---|
| q | No | Search text, with at least one letter or digit. Matches name, categories, attributes, description and place. Typos fall back to close matches. | |
| city | No | City slug, from /places. | |
| sort | No | `relevance` needs `q` and is the default with it. `name` is the default without `q`. `recent` is newest first. | |
| limit | No | Items per page. | |
| cursor | No | `page.nextCursor` from the previous response. Opaque. Send the same filters and `limit`. | |
| region | No | Region slug, from /places. | |
| country | No | ISO 3166-1 alpha-2 country code, any case. A country the directory does not cover, as listed in /places, gives 400. | |
| category | No | Category slug, from /categories. A parent slug also matches its children. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds one real behavioral fact not in the annotations: results are restricted to *published* agencies. It says nothing about pagination, result volume or ordering beyond what the schema's sort/cursor fields already convey.
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?
A single front-loaded sentence with zero filler, which is the right shape for a search tool. It is arguably under-sized for an 8-parameter endpoint, but nothing in it is wasted.
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 rich annotations, full schema coverage and no output schema, the description is adequate but thin: an agent gets no statement about which filters can be combined, that all are optional, or that results paginate via cursor. These are inferable from the schema but not reinforced.
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 each parameter carries a detailed description (slug formats, defaults, cursor continuation rules), so the schema does the heavy lifting. The description's "text, place and category" only loosely maps to q/city/region/country/category and adds no format or combination 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?
Names a specific verb ("Search") and resource ("published AI agencies") plus the three facets it searches over. It is clearly distinct from get_listing (single fetch) and get_stats, though it never explicitly names those siblings to reinforce the contrast.
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?
Usage is only implied: "Search ... by text, place and category" suggests you call it when you have a query or location filter rather than an ID. There is no explicit statement of when to prefer get_listing or list_places, and no mention that all filters are optional or combinable.
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
get_stats - First observed
list_categories - First observed
list_places - First observed
list_sources - First observed
search_listings
Related MCP Connectors
Search 960+ evidence-checked AI automation agencies by need, tool, country and budget.
41Search 47,000+ marketing agencies and get AI-matched with fitted agencies, from Pick an Agency.
Read-only directory of vetted AI implementation agencies from the Ashton & Forge marketplace.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search a directory of AI agencies, consultancies, and automation providers across Germany, Austria, and Switzerland, returning verified business profiles with type, location, service areas, and review status. Also surfaces federal, EU, regional, and cantonal funding programs for digitalization and AI, including rates, deadlines, and official sources.MIT
- AlicenseAqualityAmaintenanceFindAgent — the vetted, cross-LLM marketplace of doer agents.2MIT
- AlicenseNot gradedqualityDmaintenanceA search engine for AI agents that enables searching, comparing, and discovering over 500 businesses across 112 categories with structured pricing data. It allows users to filter listings by price, category, and country to find and analyze specific business services.4 npmMIT

ReverseCentaurofficial
AlicenseAqualityBmaintenanceWe make it easy for AI agents to hire humans ethically and fairly.620 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.