immigrationhelp
Server Details
Find DOJ-authorized immigration legal help near you.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 11 tools
Each tool targets a clearly distinct resource and action: providers via get_listing/search_listings, courses via get_course/list_courses, products via get_product/list_products, plus metadata and stats endpoints. The only near-overlap is list_categories vs list_product_categories, but the descriptions make the domains explicit.
All 11 tools follow a consistent snake_case verb_noun pattern, using get_, list_, or search_ prefixes. There are no mixed conventions or vague names.
11 tools is a good fit for a read-only directory API spanning legal providers, courses, products, and supporting metadata. Each tool has a clear role and the surface does not feel bloated or thin.
The API covers listing, searching, and fetching the main entities, plus categories, places, sources, product categories, and stats. Minor gaps remain, such as no direct get_source/get_place/get_category lookups and no search for courses or products, but these are workable for the stated public-directory purpose.
Available Tools
11 toolsget_courseARead-onlyIdempotentInspect
Get one published academy course by its slug, with its objectives, lessons and FAQ. Exam questions and answers are never returned.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The course slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered structurally. The description still adds genuine value with the "published only" scope and the explicit exclusion "Exam questions and answers are never returned" — a meaningful data-boundary disclosure. It stops short of describing behavior on missing inputs or error outcomes.
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 action and resource, followed immediately by the data-exclusion caveat. Nothing redundant or padded.
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 one-parameter read tool with full annotations and no output schema, the description adequately covers what is returned and what is deliberately withheld. The only gap is behavior for a nonexistent or unpublished slug, which an agent would want to know.
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 slug parameter already carries a pattern, length bounds, and description. The description only restates lookup-by-slug and adds the published-only filter implication, which is close to the baseline for a fully documented 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 published academy course by its slug") and even enumerates the payload contents (objectives, lessons, FAQ). The singular "one ... course" implicitly contrasts with the listing siblings such as list_courses, but no sibling is actually named, so it falls just 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?
The word "published" signals that only live courses are retrievable, which is a partial when-to-use constraint. There is no explicit guidance on when to prefer this over list_courses or a search sibling, nor what to expect for an unpublished or unknown slug.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_listingARead-onlyIdempotentInspect
Get one published immigration legal provider 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 readOnlyHint, idempotentHint, destructiveHint=false and a closed world, so the safety profile is fully covered. The description adds the meaningful 'published' qualifier, implying unpublished or unknown slugs are not returned, but it does not state the failure behavior for a missing slug.
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 tight sentence with zero filler, and the key constraint ('published') is placed before the lookup key 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?
For a simple single-entity read with rich annotations and no output schema, the description covers the essentials. It could go slightly further by indicating what is returned or how a missing slug behaves, but nothing critical to invoking it correctly is absent.
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% for the single slug parameter, and the schema already enforces the pattern and length constraints. The description adds no format or sourcing detail beyond what the schema provides, 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 gives a specific verb (Get) and resource (one published immigration legal provider) and states the lookup key (slug), which cleanly separates it from the list_* and search_listings siblings. It stops short of naming those siblings explicitly, so it is clear but not fully differentiated.
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: 'by its slug' tells the agent a slug is required, which in practice comes from search_listings, but no alternative or when-not-to-use condition is stated. There is no explicit guidance about preferring search_listings when only a name is known.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_productARead-onlyIdempotentInspect
Get one affiliate product by its slug, with its page and outbound link.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | The product slug. |
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 adds genuinely new information by stating the response includes the product's page and outbound link, which matters because there is no output schema. It omits not-found behavior, which keeps it below 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?
A single front-loaded sentence with no filler; the lookup key and the returned content are both stated in one pass.
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 one-parameter read tool with full annotation coverage and complete schema documentation, this is nearly sufficient. The only real gap is what happens when the slug does not resolve, which an agent would want to know.
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 slug parameter carries its own description plus a pattern, so the schema does the heavy lifting. The description's 'by its slug' restates rather than extends that, matching the 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 ('Get one affiliate product') and scopes it to a single-item lookup, which implicitly contrasts with the plural sibling list_products. It does not explicitly name the alternative tool, so it stops 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?
'by its slug' implies the precondition that the caller already has a slug, which is useful context for choosing this over list_products or search_listings. However, no explicit when-to-use/when-not statement or named alternative appears.
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 immigration legal providers, 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?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the useful scoping detail that counts cover only 'published' providers and that the response includes a last-changed timestamp, but nothing about refresh/auth behavior or response shape. Value added is modest against the annotation baseline.
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 filler; the counted resources and the recency field are stated in one pass with nothing redundant.
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 must carry the return-value burden, and it does name the four things returned (provider, place, and category counts, plus last-changed). It stops short of describing the response structure or whether counts are global, which is a minor gap for a zero-parameter stats call.
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 description appropriately confines itself to describing the returned aggregates instead of inventing parameter detail.
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 ('Get the number of') and enumerates the exact resources counted: published immigration legal providers, places, and categories, plus a freshness signal. This clearly separates it from siblings like list_places or list_categories, which return records rather than aggregate counts, though the distinction is implied 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?
Usage is only implied: an agent can infer this is an overview/count tool to call before drilling into listings, but the description never says when to prefer it over get_listing or search_listings, nor when not to use it. No alternatives or prerequisites are named.
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 immigration legal provider 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, closed-world and non-destructive, so the safety profile is covered. The description adds useful return context (counts are included per category) but says nothing about ordering, completeness, or whether counts are live.
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, front-loaded with the action and the payload; no filler whatsoever.
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 trivial, no-param, no-output-schema enumeration tool, the description tells the agent what it gets back. Minor omissions (ordering, whether counts reflect all providers) keep it short of a 5.
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 document; the baseline for a no-parameter tool 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?
Specific verb+resource ('List categories') plus a distinguishing detail: each category comes with immigration legal provider counts. That separates it from siblings like list_places and list_sources, though the description never explicitly names those alternatives.
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 infer this is the enumeration call for categories, but there is no statement of when to prefer it over siblings or any prerequisites/exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_coursesARead-onlyIdempotentInspect
List the published academy courses with their level, length, pass mark and certificate validity.
| Name | Required | Description | Default |
|---|---|---|---|
| level | No | Only courses of this level. | |
| limit | No | Most courses to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds two genuinely new facts beyond that: only published courses are returned, and each record includes level, length, pass mark and certificate validity. It does not mention ordering or what happens at the limit boundary, so it adds context without being rich.
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, front-loaded with the verb and scoped resource, then the returned fields. Every clause earns its place and there is no redundant 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 two-parameter, zero-required read tool with complete annotations, the definition covers scope (published only) and return fields, which matters because no output schema exists. The remaining gap is result ordering and whether the 50-item cap implies truncation, which an agent might want to know before 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%, with the level enum and limit bounds (1-50, default 50) fully documented in the schema. The description's mention of 'level' marginally reinforces the filter but adds no syntax, default, or pagination semantics 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 (List) and a precisely scoped resource (published academy courses), plus the fields each result carries. It is clearly distinguishable from get_course (single item) and the unrelated list_* siblings, though no sibling is named explicitly.
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: the agent can infer this is the browse-all path as opposed to get_course for a single course, and that the optional level parameter narrows results. There is no explicit 'use this when' or exclusion statement, and nothing about what to do if no courses match.
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 immigration legal providers.
| 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, destructiveHint=false and a closed-world scope, so the safety profile is fully covered. The description's only added behavioral value is the scoping constraint that only places with providers appear, and it says nothing about return shape or ordering.
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 filler; the scope qualifier comes right after the verb+resource and every word 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?
For a zero-parameter, fully-annotated read tool this is nearly sufficient; the one gap is that with no output schema the description does not indicate whether the result is a flat list, a hierarchy, or identifiers vs names.
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 no parameters, so there is nothing for the description to document — baseline is 4. The description does not need to add parameter meaning, and it correctly omits any.
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 a precisely-scoped resource, spelling out that 'places' means countries, regions and cities, and that only those with immigration legal providers are returned. It is distinguishable from list_categories and list_sources by resource, though it never explicitly contrasts with them.
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?
There is no guidance on when to reach for this tool versus siblings like search_listings or list_categories, and no stated prerequisites. The filtering scope implies it is a reference/enumeration call, but the agent must infer that.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_product_categoriesARead-onlyIdempotentInspect
List the product categories with their product 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=true, idempotentHint=true, non-destructive and closed-world, so the safety profile is covered. The description's contribution beyond that is that results include product counts — useful, but no ordering, pagination, or empty-result behavior 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?
A single short sentence with zero filler, and the key payload detail (counts) is front-loaded where the agent will read it.
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 listing tool with full annotation coverage, the description plus schema is enough to invoke it correctly. Minor gap: with no output schema, the exact return shape (field names, ordering) is only alluded to.
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 no parameters, so there is no parameter semantics to explain; the baseline for a zero-param tool 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 ('List the product categories') plus a distinguishing payload detail (product counts). However, it does not differentiate itself from the sibling 'list_categories', leaving an agent to guess which category lister to call.
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?
There is no explicit when-to-use, when-not-to-use, or alternative-tool guidance. The only implied cue is that this variant returns counts, which the agent must infer rather than being told.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_productsARead-onlyIdempotentInspect
List the affiliate products, with the price each had on the day it was checked. Filter by product category.
| Name | Required | Description | Default |
|---|---|---|---|
| category | No | A product category slug. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is fully covered. The description adds one genuinely non-obvious data semantic — the price is a point-in-time snapshot from the day the product was checked, not a current price — but says nothing about result volume, ordering, or pagination.
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 core action and the most decision-relevant detail (price snapshot semantics) front-loaded ahead of the filter note.
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 one-optional-param, read-only list tool with full schema coverage and annotations, the description is largely sufficient and even hints at the returned fields (product + price). The one gap is the absence of any output schema combined with no note on pagination or result limits.
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 optional parameter carries its own type, slug pattern, and length bounds. The description only restates that the parameter filters by category, adding no syntax or behavior 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 ("List the affiliate products") plus the returned payload (price as of the check date) and the filter dimension. It implicitly separates from get_product (single record) and list_categories, but never names a sibling, so the differentiation is left to inference.
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?
"Filter by product category" plus the optional parameter implies narrowing usage, but there is no explicit when-to-use guidance and no mention of when to prefer get_product, list_product_categories, or list_categories instead. Usage is implied rather than stated.
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 immigration legal provider 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?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds value the annotations cannot: it discloses the shape of the returned content (license and refresh per source), which matters because no output schema is provided.
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 sentence with zero filler, front-loaded with the action and resource, then the payload detail. Nothing repeats the name or restates the schema.
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-argument, read-only listing tool with no output schema, the description covers the essentials and hints at return fields. It could go slightly further on return structure (e.g. ordering or what a 'source' record looks like), but nothing an agent needs in order to call it 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 takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a no-parameter tool applies. No misleading parameter language is present.
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 ('List') and resource ('where the immigration legal provider data comes from'), and specifies what each entry contains: license and refresh. That resource is unique among the siblings (get_listing, get_stats, list_categories, list_places, search_listings), so an agent can route to it without ambiguity.
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 implied rather than stated: the tool clearly returns provenance/metadata rather than listings themselves, and needs no arguments, so the agent can infer when it applies. However, there is no explicit when-to-use guidance, no statement of when-not to use it, and no named alternative for related metadata (e.g. get_stats vs this).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_listingsARead-onlyIdempotentInspect
Search published immigration legal providers 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 readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds one genuinely useful behavioral fact — only "published" providers are returned — but says nothing about pagination, result shape, or match/fallback behavior beyond what the schema states.
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 filler; the scope qualifier "published" is placed where it is immediately visible. 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 8 optional parameters and no output schema, the description is adequate but thin — it never hints at the returned result set or pagination model that an agent must understand to page correctly. The rich per-parameter schema carries most of the missing load.
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 all 8 parameters, including slug formats, cursor reuse, and sort defaults. The description's mention of "text, place and category" adds only a loose mapping to parameter groups and no format or semantics 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 (Search) and a specific resource (published immigration legal providers) plus the facets it searches by. The word "Search" plus facets implicitly separates it from the list_* siblings, though no sibling is named explicitly.
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 infer this is the tool for querying providers by text/place/category. There is no statement of when to prefer this over get_listing (single lookup) or list_places/list_categories, and no prerequisites or exclusions.
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.
11 tool updates
- First observed
get_course - First observed
get_listing - First observed
get_product - First observed
get_stats - First observed
list_categories - First observed
list_courses - First observed
list_places - First observed
list_product_categories - First observed
list_products - First observed
list_sources - First observed
search_listings
Related MCP Connectors
U.S. immigration law research: BIA/AAO/circuit cases, INA/CFR, USCIS policy, crimmigration.
Find, compare and price licensed U.S. lawyers from official licensing records. Not legal advice.
USCIS fees, processing times, form editions, alerts, and the Visa Bulletin. Not legal advice.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables searching for ICE detainee locations using AI-powered natural language queries, with support for bulk operations, multilingual searches, and legal report generation for families and legal representatives.5MIT
- AlicenseAqualityDmaintenanceMCP server for US immigration guidance — live Visa Bulletin, priority date checker, and immigration term explanations powered by official government data33MIT
- AlicenseAqualityDmaintenanceProvides AI assistants access to 991,000+ bar-verified U.S. attorney profiles for accurate lawyer search, verification, and referral without hallucination.756 npmMIT
- AlicenseAqualityCmaintenanceProvides immigration eligibility intelligence, enabling AI assistants to match user profiles to visas, compare pathways, and get country overviews using Transita's API.5316 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.