Parse User Agent
parse_user_agentParse a User-Agent string into browser, OS, device type (mobile/tablet/desktop/bot) and a bot flag (keyless, offline, heuristic).
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| user_agent | Yes | The User-Agent string. |
parse_user_agentParse a User-Agent string into browser, OS, device type (mobile/tablet/desktop/bot) and a bot flag (keyless, offline, heuristic).
| Name | Required | Description | Default |
|---|---|---|---|
| user_agent | Yes | The User-Agent string. |
Changes observed during successful MCP inspections.
Input schema / examplesAdded value: +[
+ {
+ "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36"
+ },
+ {
+ "user_agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 14_6 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/14.1.1 Mobile/15E148 Safari/604.1"
+ }
+]Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and no destructive actions. The description adds that it extracts specific categories (browser, OS, device type, bot flag), which provides some behavioral context beyond annotations, but it does not disclose edge cases or error handling.
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?
Single sentence, front-loaded with action verb, lists output categories without extraneous words. Every part of the description is necessary and informative.
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 lists structural output components (browser, OS, device type, bot flag), which provides a good sense of return values. It could be more precise about the format, but for a simple parsing tool it is sufficiently complete.
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% with the single 'user_agent' parameter clearly described. The description does not add new meaning beyond the schema, so baseline score of 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?
Description begins with 'Parse a User-Agent string,' clearly specifying the verb and resource. It lists exact output fields (browser, OS, device type, bot flag) and distinguishes itself from sibling tools, none of which parse user agents.
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 use for extracting structured data from user-agent strings but gives no explicit guidance on when or when not to use it, nor mentions alternative tools. It is adequate but lacks decision-making context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Add one secure layer between your agents and this server.