A URL shortening service with custom domains, CAPTCHA protection, QR codes, and MCP integration for agent-based link management
The server defines 22 tools with consistent naming (verb_noun pattern) and descriptions present for all tools. However, parameter schemas lack depth: most parameters are typed as 'string' or 'object' without constraints, enums, or detailed format guidance. Descriptions are adequate (100-150 chars average) but generic, they state WHAT the tool does but rarely explain WHEN to use it or dependencies between tools. Output schemas are not documented. Error handling and recovery guidance are absent from tool definitions. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels (READ_ONLY, WRITE, DESTRUCTIVE). Parameter descriptions lack format constraints (e.g., 'ISO 8601 timestamp' is mentioned but not validated). The server is functional but falls short of production-grade agent tooling.
Add a custom domain for short links
Check the verification status of a custom domain
Create a new API key for programmatic access
Create a new short link with optional custom slug, destination URL, password protection, expiration, QR config, and geo-routing rules
Create a new project for organizing links
Permanently delete the user account and all associated data
Remove a custom domain
Parameter schemas lack constraints and enums. Most parameters are typed as 'string' or 'object' without format validation, length limits, or allowed values. E.g., 'color' in create_project accepts any string; should be constrained to hex format. 'limit' in list_links has no min/max bounds.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels declared (READ_ONLY, WRITE, DESTRUCTIVE). LLMs cannot infer safety properties from risk labels alone; annotations are required for proper agent planning.
Output schemas are not documented. Tool definitions describe inputs but not return types. LLMs cannot plan downstream calls or extract required fields (e.g., does create_link return link_id? What fields does get_link_stats return?).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Delete a short link permanently
Delete a project and optionally its associated links
Retrieve authenticated user account information
Retrieve CAPTCHA configuration for the service
Retrieve details of a specific short link by ID
Retrieve click statistics and analytics for a specific link
List all API keys for the authenticated user
List all custom domains for the authenticated user
List all short links for the authenticated user, with optional filtering and pagination
List all projects for the authenticated user
Revoke an API key to prevent further use
Update user account settings
Update an existing short link's properties
Update project details
Verify a completed CAPTCHA challenge
Parameter descriptions lack actionable format guidance. 'ISO 8601 timestamp for link expiration' is mentioned but not validated. 'Geographic routing rules mapping country codes to URLs' is vague, should specify object structure, country code format (ISO 3166-1 alpha-2?), and URL validation rules.
No error handling or recovery guidance in tool definitions. Destructive tools (delete_link, delete_account) lack confirmation or dry-run support. No guidance on retryable vs. fatal errors, or what to do if a resource is not found.