can-i-use
Server Details
Browser support for web features, live from caniuse. From which version, and is it safe to ship?
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
TDQS
Scored across 3 tools
The tools have overlapping resolution ability, since check_feature_support also performs fuzzy matching, but the descriptions clearly direct when to use each: one-call lookup, exact-id lookup, and candidate search. This makes misselection unlikely in practice.
All tool names follow a consistent snake_case verb-first pattern: check, get, and search. Each name clearly communicates the action and target, making the set predictable.
Three tools is well-scoped for a focused browser-support lookup server. Each tool earns its place by covering a distinct mode: direct answer, exact ID lookup, and candidate selection.
The surface covers the complete workflow from a loose query to a support decision, including disambiguation and exact retrieval. There are no obvious dead ends for the stated purpose.
Available Tools
3 toolscheck_feature_supportCheck Feature SupportARead-onlyIdempotentInspect
Can I use this feature, and from which browser version?
Accepts a loose name (":has()", "container queries", "css-grid") and resolves it to a caniuse feature, then returns the earliest continuously-supported version per major browser, global usage percentage, and a conservative safe_to_use flag. Use this first; it answers the whole question in one call.
| Name | Required | Description | Default |
|---|---|---|---|
| feature | Yes | Feature name or caniuse id. Loose names are resolved, e.g. "has selector" finds "css-has". |
Output Schema
| Name | Required | Description |
|---|---|---|
| spec | No | |
| title | Yes | |
| feature | Yes | Resolved caniuse feature id. |
| meaning | Yes | One sentence, safe to show a user verbatim. |
| support | Yes | Per-browser detail, keyed by caniuse browser id. |
| description | No | |
| safe_to_use | No | True only when global support is at least 90% AND no major browser is missing it. A conservative single answer. |
| other_matches | No | Other features the query could have meant. |
| resolved_from | No | The query that was matched, so a caller can see what it actually asked about. |
| unsupported_in | No | Major browsers whose newest release still does not support it. |
| global_partial_percent | No | |
| global_support_percent | No | Percentage of tracked global users on a browser version that fully supports it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description goes beyond the annotations by explaining the resolution behavior for loose names, the exact outputs returned (earliest continuously-supported version per browser, global usage percentage, safe_to_use flag), and the conservative nature of the flag. This gives the agent a solid mental model of what will happen without needing to invoke the tool.
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 question, then provides concrete examples and output details, and ends with a clear usage directive. Every sentence contributes useful information without redundancy.
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-only tool with a full output schema and strong annotations, the description is complete. It covers what the tool does, how the input is interpreted, what outputs to expect, and when to use it, so an agent can select and invoke it correctly with minimal uncertainty.
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 schema already provides 100% coverage for the single parameter, explaining that it accepts a feature name or caniuse id and that loose names are resolved. The description adds extra examples like ':has()' and 'container queries', but these largely reinforce the schema rather than introducing meaningfully new 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 clearly states the tool's function: it accepts a loose feature name, resolves it to a caniuse feature, and returns browser support versions, usage percentage, and a safe_to_use flag. This is specific and differentiates from siblings like search_features and get_feature_by_id, as it answers the full support question directly.
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 explicitly says 'Use this first; it answers the whole question in one call,' giving clear priority and context for when this tool is appropriate. It does not explicitly state when to choose get_feature_by_id or search_features instead, but the guidance strongly implies this tool is the primary entry point for feature-support questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_feature_by_idGet Feature By IdARead-onlyIdempotentInspect
Support table for an exact caniuse feature id.
Use when the id is already known, for example from a previous search. No fuzzy matching is applied.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Exact caniuse feature id, e.g. "css-has". |
Output Schema
| Name | Required | Description |
|---|---|---|
| spec | No | |
| title | Yes | |
| feature | Yes | Resolved caniuse feature id. |
| meaning | Yes | One sentence, safe to show a user verbatim. |
| support | Yes | Per-browser detail, keyed by caniuse browser id. |
| description | No | |
| safe_to_use | No | True only when global support is at least 90% AND no major browser is missing it. A conservative single answer. |
| other_matches | No | Other features the query could have meant. |
| resolved_from | No | The query that was matched, so a caller can see what it actually asked about. |
| unsupported_in | No | Major browsers whose newest release still does not support it. |
| global_partial_percent | No | |
| global_support_percent | No | Percentage of tracked global users on a browser version that fully supports it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive), lowering the burden. The description adds genuine behavioral context beyond the schema and annotations: exact-match-only semantics, no fuzzy matching, and that the tool serves as a 'support table' lookup.
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, each earning its place: core purpose, usage condition, and exclusionary behavior. The most decision-relevant information is front-loaded, and there is zero 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?
For a single-parameter lookup tool with a rich annotation set and an output schema, nothing essential is missing. The description covers what the tool does, when to use it, and how it differs from the sibling search tool; the output schema eliminates the need for return-value documentation.
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 single 'id' parameter with a concrete example ('css-has'). The description reinforces that the id must be exact and known in advance but adds no formatting or syntax detail beyond what the schema provides, so the baseline of 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 states a specific resource (caniuse feature) and the lookup-by-id operation, and explicitly distinguishes itself from siblings by declaring 'No fuzzy matching is applied.' It is immediately clear this is the exact-ID retrieval tool versus a general search.
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?
'Use when the id is already known, for example from a previous search' gives a clear, actionable condition for when to invoke this tool. The 'No fuzzy matching' statement implies the alternative (search_features) for fuzzy lookup, though it never names the sibling explicitly or states a formal when-not-to-use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_featuresSearch FeaturesARead-onlyIdempotentInspect
Find the caniuse feature id for a loose query.
Use when a query is ambiguous and you want to choose between candidates before checking support.
| Name | Required | Description | Default |
|---|---|---|---|
| q | Yes | Free-text query, e.g. "grid" or "web share". |
Output Schema
| Name | Required | Description |
|---|---|---|
| count | No | |
| query | No | |
| matches | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, idempotent, non-destructive behavior. The description adds meaningful behavioral context: it is meant for loose, ambiguous queries and likely presents candidates to choose from rather than performing support validation. This goes beyond what the annotations alone 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?
The description is two concise sentences with the primary purpose first and usage guidance second. Every sentence earns its place; there is no fluff or repetition of schema 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 single-parameter, read-only, idempotent tool with an output schema available, the description adequately explains when and how to use it. Nothing critical is missing for an agent to select and invoke 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?
The schema already provides 100% parameter description coverage for q, including examples like 'grid' and 'web share'. The description reinforces that the parameter is a loose query but does not add significant new 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?
The description states a specific verb ('Find'), a clear resource ('caniuse feature id'), and a distinctive mode ('loose query'). It distinguishes from the sibling tools by emphasizing ambiguity, candidate selection, and pre-support-lookup context.
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 gives an explicit usage condition: use this when a query is ambiguous and candidates need to be chosen before checking support. This also implies when not to use it (unambiguous queries or direct support checks), and the phrase 'before checking support' points toward the sibling check_feature_support.
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.
3 tool updates
- First observed
check_feature_support - First observed
get_feature_by_id - First observed
search_features
Related MCP Connectors
What CSS you can actually ship today, from live Baseline data and MDN browser-compat-data.
Browser compatibility and Baseline status for any web feature — offline, from bundled MDN data.
caniuse MCP — browser feature support tables
Real-user Core Web Vitals for any website with enough traffic, from Google's Chrome UX Report…
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to browse, click, and debug real websites in the user's own signed-in browser or a dedicated Chrome instance, with only explicitly shared tabs reachable and revocable at any time. Exposes the full developer toolbox — console, network, sources, debugger, elements, performance and CPU/memory profiling, storage, service workers, coverage, emulation, accessibility, security, Lighthouse, and Playwright-test recording — as first-class tools callable in one step.66 npm1MIT
- AlicenseBqualityCmaintenanceFrontend expert for Claude Code. Captures screenshots, runs Lighthouse + axe-core accessibility audits + code analysis, generates an expert review, and auto-fixes everything — 12 tools, completely free for Pro plan users.3746 npm9MIT
- AlicenseNot gradedqualityAmaintenanceReliable, scalable browser infrastructure for AI agents. Route, pool, and failover across any browser provider. 8 built-in browser tools using raw Chrome CDP - navigate, screenshot, snapshot, interact, evaluate. Zero-config with auto Chrome detection & concurrent sessions support798 npm17MIT
- FlicenseBqualityDmaintenanceEnables web scraping, React app testing, and React Native web app inspection using Playwright with multi-browser support. Provides backward compatibility with regular websites while offering enhanced features for React applications including mobile viewport emulation and component analysis.10-
Glama MCP Gateway
Add one secure layer between your agents and this server.