QR for Agent
QR for Agent is a QR code-as-a-service API and MCP server (37 tools) for AI agents to programmatically create, manage, and track dynamic QR codes.
Create QR Codes (11 types)
URL, vCard, WiFi, Email, SMS, Phone, Calendar Event, Text, Location, Social Media, App Store
Customize dot shapes, corner styles, colors, gradients, logo embedding, and frames with CTA text
Export as SVG or PNG
Manage QR Codes
List, retrieve, update destination, or delete QR codes
Update dynamic QR targets without regenerating the image
Schedule URL swaps, set expiration dates
Bulk create/update/delete up to 50 at once; bulk create up to 500 via CSV (Pro)
Advanced Targeting
Conditional redirects by device, OS, country, language, time range, or A/B split
UTM parameter auto-appending for analytics integration
Google Tag Manager support via intermediate scan page
Analytics & Conversions
Scan analytics: device, browser, OS, country, city, referrer, daily trends
Record conversion events (purchases, signups) and retrieve ROI statistics
Webhooks
Create, list, and delete real-time webhooks with HMAC-SHA256 signed payloads
Account & Billing
Register for an API key (Free plan, no credit card required)
Check usage/quota, upgrade to Pro via Stripe, manage billing via Stripe portal
Custom Domains (Pro)
Brand short URLs with your own domain; check DNS verification status
The server is open-source (MIT), self-hostable via Docker, and exposes OpenAPI docs at standard endpoints.
Provides tools for creating and updating dynamic QR codes that specifically target application links on the App Store.
Allows users to include Google Tag Manager snippets on intermediate redirect pages for advanced scan tracking and analytics.
Supports subscription management, checkout sessions, and billing portal access through integration with Stripe.
QR for Agent
QR-as-a-Service API built for AI agents. Create, update, and track dynamic QR codes programmatically via REST API or MCP (37 tools).
QR codes point to short URLs (/r/:shortId) that you can retarget at any time — the QR image never changes, but scanning it goes to the new destination. Multi-tenant by design, with full scan analytics.
Live API: api.qrforagent.com | Site: qrforagent.com | MCP: qr-for-agent
Features
Dynamic QR codes — change the destination URL without regenerating the image
11 QR types — URL, vCard, WiFi, Email, SMS, Phone, Event, Text, Location, Social, App Store
Custom styling — dot shapes (square, rounded, dots, classy-rounded), corner styles, colors, gradients, logo embedding, frames with CTA text
SVG & PNG — vector and bitmap output
Enriched analytics — device type, browser, OS, country, city, referrer, scans-by-day
Real-time webhooks — HMAC-SHA256 signed payloads with delivery logging
UTM tracking — auto-append UTM parameters to redirect URLs
GTM support — intermediate page with Google Tag Manager snippets
Conditional redirects — route by device, OS, country, language, time range, or A/B split
Custom domains — Pro users brand short URLs with their own domain (
qr.yourbrand.com/r/abc123)Expiration & scheduling — auto-expire QR codes or schedule URL swaps
Conversion tracking — tracking pixel + API for post-scan events (purchases, signups) with ROI analytics
Frames & templates — decorative frames around QR codes (banner_top, banner_bottom, rounded) with CTA text
Bulk operations — create, update, or delete up to 50 QR codes per request, or up to 500 via CSV upload (Pro)
Multi-tenant — each API key sees only its own data
MCP server —
qr-for-agentwith 37 tools for Claude Desktop, Cursor, etc.Plan-based quotas — Free (10 QR, 1K scans/month) and Pro ($19/month, unlimited)
Self-service registration —
POST /api/registerwith email, no credit cardStripe integration — checkout, billing portal, webhook-driven plan management
OpenAPI docs — Swagger UI at
/documentationAI-discoverable —
/.well-known/ai-plugin.jsonand/.well-known/mcp.jsonOpen source — MIT license, self-hostable via Docker
Related MCP server: QR Code Generator MCP
Quick Start
git clone https://github.com/benswel/qr-for-agent-api.git
cd qr-for-agent-api
npm install
npm run devOn first startup, an API key is auto-generated and printed to the console.
curl -X POST http://localhost:3100/api/qr \
-H "Content-Type: application/json" \
-H "X-API-Key: qr_YOUR_KEY_HERE" \
-d '{"target_url": "https://example.com", "label": "My first QR"}'API Endpoints
QR Code Management (X-API-Key required)
Method | Path | Description |
|
| Create a QR code (11 types, custom styling) |
|
| List all QR codes (paginated) |
|
| Get QR code details |
|
| Update target URL, label, UTM, GTM, redirect rules |
|
| Delete QR code and its analytics |
|
| Download QR image (regenerated with stored style) |
|
| Create up to 50 QR codes (all-or-nothing) |
|
| Update up to 50 QR codes (partial success) |
|
| Delete up to 50 QR codes (partial success) |
|
| Create up to 500 QR codes from CSV (Pro only) |
Analytics (X-API-Key required)
Method | Path | Description |
|
| Scan stats with device, browser, OS, country, city breakdowns + conversions |
Conversions (X-API-Key required)
Method | Path | Description |
|
| Record a conversion event for a QR code you own |
|
| Get conversion stats (totals, by_event, by_day, recent) |
Webhooks (X-API-Key required)
Method | Path | Description |
|
| Register webhook endpoint (returns HMAC secret) |
|
| List all webhooks |
|
| Delete a webhook |
Custom Domain (X-API-Key required, Pro only)
Method | Path | Description |
|
| Get current custom domain and DNS status |
|
| Set custom domain |
|
| Remove custom domain |
Account (X-API-Key required)
Method | Path | Description |
|
| Current usage and quota |
|
| Create Stripe Checkout session (upgrade to Pro) |
|
| Open Stripe billing portal |
Public (no auth)
Method | Path | Description |
|
| Self-service API key registration (rate-limited) |
|
| Redirect to target URL (records scan) |
|
| Conversion tracking pixel (returns 1×1 GIF) |
|
| Serve QR image (cacheable) |
|
| Health check |
|
| Swagger UI |
|
| AI plugin manifest |
|
| MCP discovery manifest |
Admin (X-Admin-Secret header required)
Method | Path | Description |
|
| List all registered API keys |
|
| Dashboard metrics |
Authentication
All /api/* endpoints require an X-API-Key header.
Format:
qr_+ 32-character random stringAuto-generated: on first startup if no keys exist
Multi-tenant: each key only sees its own QR codes
Create a key:
npm run key:create "my-label"List keys:
npm run key:list
Public endpoints (/r/*, /i/*, /health, /documentation, /.well-known/*) don't require auth.
MCP Server
Published as qr-for-agent on npm. 37 tools for AI agents to manage QR codes natively.
npx qr-for-agentClaude Desktop / Cursor
Add to your MCP config (claude_desktop_config.json or .cursor/mcp.json):
{
"mcpServers": {
"qr-for-agent": {
"command": "npx",
"args": ["-y", "qr-for-agent"],
"env": {
"API_KEY": "your-api-key",
"BASE_URL": "https://api.qrforagent.com"
}
}
}
}Available Tools (37)
Tool | Description |
| Create a URL QR code with optional custom styling |
| Get QR code details by short ID |
| Change where a QR code redirects |
| List all QR codes with pagination |
| Delete a QR code and its analytics |
| Get scan stats and breakdowns |
| Create up to 50 QR codes at once |
| Update up to 50 QR codes at once |
| Delete up to 50 QR codes at once |
| Create a vCard contact QR code |
| Create a WiFi credentials QR code |
| Create an email (mailto:) QR code |
| Create an SMS QR code |
| Create a phone call QR code |
| Create a calendar event QR code |
| Create a plain text QR code |
| Create a geo-location QR code |
| Create a social media links QR code |
| Create a smart app store redirect QR code |
| Update a vCard QR code |
| Update a WiFi QR code |
| Update a social media QR code |
| Update an app store QR code |
| Register a webhook endpoint |
| List all registered webhooks |
| Delete a webhook |
| Register for an API key |
| Get current usage and quota |
| Create a Stripe Checkout session |
| Open Stripe billing portal |
| Set UTM tracking parameters on a QR code |
| Set conditional redirect rules on a QR code |
| Set or remove custom domain (Pro) |
| Get current custom domain and DNS status |
| Create up to 500 QR codes from CSV data (Pro) |
| Record a post-scan conversion event |
| Get conversion stats for a QR code |
Configuration
Copy .env.example to .env and edit:
Variable | Default | Description |
|
| HTTP port |
|
| Bind address |
|
| Public URL (used in short URLs) |
|
| SQLite file path |
|
| Length of generated short IDs |
| (none) | Secret for admin endpoints ( |
| (none) | Stripe API secret key |
| (none) | Stripe webhook signing secret |
| (none) | Stripe Price ID for Pro plan |
Database
SQLite with Drizzle ORM. Six tables:
api_keys— key storage with label, email, plan (free/pro), Stripe IDs, custom domainqr_codes— QR metadata, target URLs, type/type_data, style options, UTM, GTM, redirect rules, expiration/schedulingscan_events— scan tracking: timestamp, user-agent, referer, IP, device, browser, OS, country, citywebhooks— webhook endpoints per API key, HMAC secret, subscribed eventswebhook_deliveries— delivery log: status, response code, error messagesconversion_events— conversion tracking: event name, value, metadata, referer, IP, timestamp
npm run db:generate # Generate migration from schema changes
npm run db:migrate # Apply pending migrations
npm run db:studio # Open Drizzle Studio (web UI)Migrations run automatically on server startup.
Deployment
Docker
docker compose up -dThe database is persisted in a Docker volume.
Railway
The project includes railway.toml and a multi-stage Dockerfile. Connect your GitHub repo to Railway — it builds and deploys automatically with health checks on /health.
Tests
195 integration tests covering all endpoints, auth, multi-tenant isolation, QR types, webhooks, bulk operations, custom domains, frames, conversions, CSV upload, and analytics.
npm test # Run all tests
npm run test:watch # Watch modeScripts
Script | Description |
| Start dev server with auto-reload |
| Compile TypeScript |
| Run production server |
| Run test suite |
| Tests in watch mode |
| Create API key |
| List API keys |
| Generate migration |
| Run migrations |
| Open Drizzle Studio |
License
MIT
Available Tools
37 toolsbulk_create_from_csvA
Create up to 500 QR codes from CSV data. Pro plan required. Send the CSV content as a string. Required column: target_url. Optional columns: label, format, type, foreground_color, background_color, dot_style, corner_style, frame_style, frame_text, expires_at. Returns all created QR codes.
| Name | Required | Description | Default |
|---|---|---|---|
| csv_content | Yes | CSV content as a string with header row. Example: "target_url,label\nhttps://example.com,My QR\nhttps://other.com,Other QR" |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided; description discloses limit (500), plan requirement, and output (returns all created QR codes). Does not mention idempotency or side effects.
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 sentences with no waste; front-loaded with purpose and key constraints.
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?
Covers input format, required/optional columns, limit, plan, and output. No output schema exists, but description explains return value.
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% but only shows an example. Description adds meaning by listing required and optional columns and their purposes.
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?
Clear verb 'Create', resource 'QR codes', and method 'from CSV data'. Distinguishes from sibling 'bulk_create_qr_codes' by specifying data source.
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?
Explicitly states pro plan requirement, CSV format, required/optional columns, and limit. Lacks contrast with alternative tools but provides sufficient context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_create_qr_codesA
Create multiple QR codes in a single request (up to 50). Each item supports the same options as create_qr_code. The quota check is all-or-nothing: if the batch would exceed your plan limit, no QR codes are created. Ideal for generating QR codes for product catalogs, event lists, or batch operations.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Array of QR codes to create. Max 50 per request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It usefully reveals the all-or-nothing quota check (if batch exceeds limit, no codes created) and the 50-item limit. However, it omits details on success/failure responses, partial error handling, or authentication/authorization requirements.
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 concise sentences with no wasted words. The first sentence states the core function and limit, the second adds the key behavioral trait (quota check) and typical use cases. Information is front-loaded and easy to parse.
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?
The description covers the primary function, constraints, and use cases adequately for a batch creation tool. However, it lacks explanation of the return value (e.g., created QR code IDs or errors), which is a gap since no output schema exists. Prerequisites like authentication are also absent, but these are often implied.
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 baseline is 3. The description adds value by stating each item supports the same options as create_qr_code, which helps the agent understand the parameter semantics without repeating field details. This provides meaningful context 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 clearly states the tool creates multiple QR codes in one request (up to 50), explicitly references the sibling create_qr_code for individual options, and lists concrete use cases (product catalogs, event lists, batch operations), distinguishing it from other bulk tools like bulk_create_from_csv.
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 provides clear context for when to use (batch operations, product catalogs) and includes a critical constraint (all-or-nothing quota check). However, it does not explicitly state when to avoid using this tool (e.g., for fewer than 50 QR codes where create_qr_code may suffice) or mention alternatives beyond the sibling list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_delete_qr_codesA
Delete multiple QR codes and their scan analytics in a single request (up to 50). Items with non-existent short_id are reported as not_found without failing the whole batch.
| Name | Required | Description | Default |
|---|---|---|---|
| short_ids | Yes | Array of short_id strings to delete. Max 50 per request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It adds value by disclosing that scan analytics are also deleted, the batch size limit, and that non-existent items are reported as not_found without failing the batch. This is good transparency for a delete operation.
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 sentences, no fluff, front-loading key information (purpose and limit) with technical details in the second sentence. 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 simple batch delete with one parameter and no output schema, the description covers all necessary behavioral aspects (what, limit, error handling). It is complete enough for an agent to use 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?
Schema coverage is 100%, so baseline is 3. The description adds meaning beyond the schema by explaining how non-existent short_ids are handled, which helps the agent understand error behavior.
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 it deletes multiple QR codes and their scan analytics in a single request, with a batch limit of 50. This distinguishes it from sibling tools like delete_qr_code (single) and bulk_create/update.
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 specifies the batch size limit and behavior for non-existent short_ids, but does not explicitly state when to use this tool vs alternatives or provide context on prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
bulk_update_qr_codesA
Update multiple QR codes in a single request (up to 50). Change target URLs and/or labels. Items with non-existent short_id are reported as not_found without failing the whole batch.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Array of QR code updates. Max 50 per request. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It discloses partial failure behavior for non-existent short_ids. However, it omits that other fields (expires_at, scheduled_url, scheduled_at) can be updated and doesn't specify atomicity or response details.
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 sentences, front-loaded with core purpose and limit, followed by key behavioral detail. No unnecessary words.
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?
Given no output schema and moderate complexity, the description explains batch limit and partial failure but fails to list all updatable fields (only mentions target URLs and labels, while schema includes expires_at, etc.). Missing response format details.
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 descriptions for all fields. Description adds behavioral context about partial failure but not new meaning for individual parameters 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?
Description clearly states the verb 'Update', the resource 'multiple QR codes', and specific scope 'up to 50' and fields 'target URLs and/or labels'. It distinguishes from siblings like bulk_delete_qr_codes and single-update tools.
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?
Implicitly advises use for batch updates with a clear limit (up to 50). However, no explicit comparison to single-update alternatives or when to prefer bulk vs single.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_app_store_qrA
Create a QR code that redirects to the correct app store based on the device. iPhones go to the App Store, Android devices go to Google Play, and other devices go to the fallback URL. Provide at least one store URL.
| Name | Required | Description | Default |
|---|---|---|---|
| ios_url | No | Apple App Store URL. | |
| android_url | No | Google Play Store URL. | |
| fallback_url | No | Fallback URL for non-mobile devices. | |
| label | No | Label for this QR code. | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It effectively explains the routing logic (iPhone→App Store, Android→Google Play, other→fallback), which is a key behavioral trait beyond the input schema.
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 concise with two sentences, front-loaded with the core purpose, and provides necessary context without extraneous information.
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?
While the description covers the tool's purpose and routing behavior, it omits information about the output (e.g., what the tool returns, whether it's a URL or image). Given the complexity of 14 parameters and no output schema, this information would be beneficial.
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 all parameters are documented in the schema. The description adds value by explaining the device-based routing logic, which is not evident from the schema alone.
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 creates a QR code for app store redirection based on device type. It uses a specific verb and resource, and is easily distinguishable from sibling tools like create_email_qr or create_event_qr.
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 tool is for generating smart app store QR codes, and states the requirement to provide at least one store URL. However, it does not explicitly contrast with other QR creation tools or specify when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_email_qrB
Create a QR code that opens a pre-filled email when scanned. The recipient, subject, body, CC, and BCC can all be pre-set.
| Name | Required | Description | Default |
|---|---|---|---|
| to | Yes | Recipient email address. | |
| subject | No | Email subject line. | |
| body | No | Email body text. | |
| cc | No | CC recipient(s). | |
| bcc | No | BCC recipient(s). | |
| label | No | Label for this QR code. | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It lacks disclosure of behavioral traits like return value (image/URL?), authentication needs, or side effects. Only lists pre-settable fields.
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?
Description is a single concise sentence that front-loads the main purpose. No wasted words.
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?
Given 16 parameters, no output schema, and no annotations, the description is incomplete. It does not explain what the function returns, mention the required 'to' param, or provide guidance on customization options.
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?
Input schema has 100% coverage, so baseline is 3. The description mentions a subset of parameters (recipient, subject, body, CC, BCC) but adds little meaning beyond schema. Schema already documents all params.
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 it creates a QR code for pre-filled email, which is distinct from sibling tools (e.g., create_sms_qr, create_phone_qr). The verb 'Create' and resource 'QR code' are specific.
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 usage for email QR codes but provides no explicit guidance on when to use this tool vs alternatives, nor any exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_event_qrB
Create a QR code that adds a calendar event when scanned. Encodes a standard iCalendar VEVENT that calendar apps can import.
| Name | Required | Description | Default |
|---|---|---|---|
| summary | Yes | Event title/summary. | |
| start | Yes | Event start date-time in ISO 8601 format (e.g. 2026-03-15T09:00:00Z). | |
| end | Yes | Event end date-time in ISO 8601 format. | |
| location | No | Event location. | |
| description | No | Event description. | |
| label | No | Label for this QR code. | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions that the QR encodes an iCalendar VEVENT, which is helpful, but it does not describe what the tool returns (e.g., image URL, file), whether the QR is stored server-side, any authentication needs, rate limits, or side effects. The behavioral transparency is insufficient for a complex tool with many parameters.
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 sentences long, front-loads the core purpose, and contains no filler words. Every sentence contributes meaningful information.
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?
Despite having 16 parameters and no output schema, the description is minimal. It does not explain the workflow (e.g., how the QR code is delivered), any limitations (e.g., text encoding limits), or error conditions. For a tool with this complexity, the description is insufficiently 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?
The input schema has 100% coverage with descriptions for all 16 parameters, so the baseline is 3. The description adds context about the iCalendar format, but it does not explain parameter relationships or provide additional constraints beyond what the schema already offers. Overall, the description adds marginal value to the parameter 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 creates a QR code that adds a calendar event when scanned, and specifies that it encodes a standard iCalendar VEVENT. This clearly distinguishes it from sibling QR creation tools (e.g., create_email_qr, create_vcard_qr) by focusing on calendar events.
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 the tool is for creating calendar event QR codes, but it does not explicitly state when to use it versus alternatives (e.g., for other QR types). There is no mention of when not to use it or any prerequisites, leaving the agent to infer from the tool name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_location_qrB
Create a QR code that opens a map location when scanned. Encodes geographic coordinates that map apps can parse.
| Name | Required | Description | Default |
|---|---|---|---|
| latitude | Yes | Geographic latitude (-90 to 90). | |
| longitude | Yes | Geographic longitude (-180 to 180). | |
| label | No | Human-readable place name (shown on map). | |
| qr_label | No | Label for this QR code (internal). | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It only mentions the output behavior (opens map location) but omits other aspects like idempotency, authentication, rate limits, or whether it modifies existing resources. This gap is significant for a tool with no annotations.
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 sentences, no filler, and immediately conveys the core functionality. It is appropriately sized and efficiently communicates the essential information.
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?
Despite having 14 parameters (many optional), the description is extremely terse. It lacks information about what the tool returns (no output schema), how the QR code is delivered, or how the parameters affect the output. For a tool with this complexity, the description is incomplete.
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 baseline is 3. The description adds a bit of context ('map apps can parse') but does not elaborate on parameter semantics beyond the schema. It meets the baseline but does not surpass it.
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 clearly states it creates a QR code that opens a map location when scanned, and encodes geographic coordinates. This precisely identifies the tool's purpose and distinguishes it from siblings like create_email_qr or create_phone_qr.
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?
No guidance is given on when to use this tool versus any of the many other QR creation tools. The description does not mention any prerequisites or alternatives, leaving the agent to infer usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_phone_qrB
Create a QR code that initiates a phone call when scanned. The phone number is encoded directly in the QR code.
| Name | Required | Description | Default |
|---|---|---|---|
| phone_number | Yes | Phone number to call. | |
| label | No | Label for this QR code. | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions the phone call initiation but fails to describe the output format, any restrictions (e.g., desktop behavior), or what happens with the label. This lack of detail limits the agent's understanding of the tool's 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?
The description is very concise with two sentences that convey the core purpose. It is front-loaded but omits important behavioral details; however, for a simple tool, it efficiently communicates the main function.
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?
Given the tool's complexity (12 parameters for customization) and lack of output schema, the description is somewhat incomplete. It doesn't mention customization options or return value, though the schema covers parameters. Adequate for a focused tool but could be more helpful.
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?
Input schema has 100% description coverage, providing basic parameter meanings. The description adds no additional semantics beyond restating that the phone number is encoded. Per guidelines, baseline 3 applies since schema coverage is high.
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 creates a QR code that initiates a phone call, distinguishing it from sibling tools for other QR types (email, SMS, etc.). The verb 'create' and resource 'phone QR' are specific and unambiguous.
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 usage for phone call QR codes but does not provide explicit guidance on when to use this tool versus alternatives (e.g., using create_qr_code for general purposes or other specialized tools). No exclusions or context about platform limitations are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_qr_codeA
Create a new managed QR code with optional custom styling. The QR code points to a short URL that redirects to your target URL. You can change the target URL later without regenerating the QR image. Supports custom colors, dot shapes, corner shapes, and logo embedding.
| Name | Required | Description | Default |
|---|---|---|---|
| target_url | Yes | The destination URL the QR code should redirect to. | |
| label | No | An optional label to identify this QR code. | |
| format | No | Image format. "svg" is recommended (smaller, scalable, text-parseable). Use "png" only if a bitmap is required. | svg |
| foreground_color | No | Hex color for QR code dots. Default: #000000 (black). | |
| background_color | No | Hex color for QR code background. Default: #ffffff (white). | |
| width | No | QR code width in pixels. Default: 400. | |
| margin | No | Quiet zone margin in modules. Default: 2. | |
| error_correction | No | Error correction level. L=7%, M=15% (default), Q=25%, H=30%. Auto-set to H when logo is provided. | |
| dot_style | No | Shape of data modules. square=classic, rounded=soft corners, dots=circles, classy-rounded=organic. | |
| corner_style | No | Shape of finder patterns (corner squares). square=classic, extra-rounded=smooth, dot=circular. | |
| logo_url | No | URL to a logo image (PNG/JPG/SVG) or data:base64 URI. Centered on the QR code. | |
| logo_size | No | Logo size as ratio of QR width (0.15-0.3). Default: 0.2. | |
| gradient | No | Apply a gradient to QR dots and corners instead of solid foreground_color. | |
| frame_style | No | Decorative frame around QR. 'banner_bottom': text below, 'banner_top': text above, 'rounded': rounded border with text. | |
| frame_text | No | CTA text on the frame (e.g. 'Scan Me!', 'View Menu'). Max 30 chars. Requires frame_style. | |
| frame_color | No | Hex color for frame background. Default: #000000. | |
| frame_text_color | No | Hex color for frame text. Default: #ffffff. | |
| frame_border_radius | No | Frame corner radius. Only for 'rounded' style. | |
| expires_at | No | ISO 8601 date-time. After this date, scanning returns 410 Gone instead of redirecting. | |
| scheduled_url | No | Replacement URL that activates at scheduled_at. | |
| scheduled_at | No | ISO 8601 date-time when target automatically switches to scheduled_url. | |
| gtm_container_id | No | Google Tag Manager container ID (e.g. 'GTM-ABC123'). Enables GTM tracking on QR scans via an intermediate HTML page. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description discloses that the QR code uses a short URL redirect and that target can be updated. It notes auto-set error correction with logo. However, it omits potential costs, auth requirements, or rate limits. Sufficient for a creation tool but could be more transparent about side effects.
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 paragraph of four sentences, no wasted words. It front-loads the main action, then adds key benefits and customization options. Ideal length for a tool with many parameters.
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?
Given 22 parameters including nested objects and no output schema, the description provides a solid overview of capabilities and benefits. It could be more complete by noting what the response contains (e.g., QR code image data or ID), but the description covers the main use case sufficiently.
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%, so baseline is 3. The description adds value beyond schema by explaining the managed nature (pointing to short URL, changeable target) and summarizing key customization options. This extra information helps the agent understand behavior not evident from individual parameter descriptions.
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 creates a managed QR code with optional custom styling. It distinguishes from specialized sibling QR creators (e.g., create_email_qr, create_wifi_qr) by being a general-purpose tool for targeting a URL that can be changed later.
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 highlights the key benefit of being a managed QR code with changeable target URL, implying it is best when future updates are needed. It does not explicitly contrast with specialized QR creators, but the generic nature is evident. Lacks explicit when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_sms_qrB
Create a QR code that opens a pre-filled SMS message when scanned. Set the phone number and optional message text.
| Name | Required | Description | Default |
|---|---|---|---|
| phone_number | Yes | Phone number to send SMS to. | |
| message | No | Pre-filled SMS message text. | |
| label | No | Label for this QR code. | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only states what the tool creates, not any behavioral traits like side effects, authentication needs, or rate limits. For a creation tool, more transparency is expected.
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 concise at two sentences, front-loading the core purpose. However, it could be structured slightly better by grouping customization hints. It is efficient but not maximally organized.
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?
Given the tool's 13 parameters and no output schema, the description is too brief. It omits mention of customization options (colors, styles, frame) and return behavior, leaving the agent without sufficient context for proper invocation.
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 baseline is 3. The description adds minimal value beyond the schema; it only mentions phone_number and message, not the many customization options. It does not enrich parameter meaning.
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 it creates a QR code that opens a pre-filled SMS message, specifying the key parameters (phone number and optional message). It distinguishes well from sibling tools like create_email_qr or create_phone_qr by focusing on SMS pre-fill.
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 lacks explicit guidance on when to use this tool vs alternatives. While the name and purpose imply it's for SMS, there is no mention of when not to use it or which sibling tool to choose instead, leaving the agent to infer from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_social_qrA
Create a QR code that links to social media profiles. When scanned via the short URL, returns a JSON object with all platform links. Provide at least one platform link.
| Name | Required | Description | Default |
|---|---|---|---|
| No | Facebook profile/page URL. | ||
| No | Instagram profile URL. | ||
| No | Twitter/X profile URL. | ||
| No | LinkedIn profile URL. | ||
| youtube | No | YouTube channel URL. | |
| tiktok | No | TikTok profile URL. | |
| github | No | GitHub profile URL. | |
| website | No | Personal/company website URL. | |
| label | No | Label for this QR code. | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description partially covers behavioral traits: it mentions the JSON return via short URL and the need for at least one platform link. It does not disclose side effects, authorization needs, or rate limits, so transparency is adequate but not comprehensive.
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 extremely concise: two sentences covering purpose, behavior, and a requirement. No redundant or filler content; every sentence 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?
Given the tool's complexity (19 parameters, no output schema, no annotations), the description explains the core function and a key constraint. However, it lacks details on output format, defaults (e.g., format=svg), and possible side effects, making it somewhat incomplete.
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 baseline is 3. The description adds value by imposing the constraint 'Provide at least one platform link,' which is not in the schema. Otherwise, it does not elaborate on parameter 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 clearly states the verb 'Create' and the resource 'QR code that links to social media profiles', distinguishing it from sibling tools like create_email_qr or create_phone_qr. It also adds unique behavioral details (returns JSON when scanned).
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 includes a clear requirement: 'Provide at least one platform link.' This guides the agent on minimum inputs. However, it does not explicitly mention when not to use this tool or compare it to alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_text_qrA
Create a QR code that contains plain text. When scanned, the text is displayed directly. Useful for messages, notes, or any freeform content.
| Name | Required | Description | Default |
|---|---|---|---|
| content | Yes | Plain text content to encode. | |
| label | No | Label for this QR code. | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only describes the creation action without disclosing any behavioral traits such as side effects, permissions, rate limits, or what the output is. The description is minimal.
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 sentences, front-loaded with the core action, and every sentence serves a purpose. No unnecessary words.
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 12 parameters and no output schema, the description does not explain the return value or how to use the created QR code. The schema covers parameter details, but the description lacks completeness for a parameter-rich tool.
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 all parameters documented. Baseline is 3. The description adds no additional meaning 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 clearly states it creates a QR code containing plain text, with the specific verb 'Create' and resource 'text QR code'. It distinguishes from sibling tools like create_email_qr or create_wifi_qr by specifying 'plain text' and 'freeform content'.
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 mentions it is 'useful for messages, notes, or any freeform content', providing some guidance on when to use it. However, it does not explicitly contrast with siblings like create_qr_code (which might be for URLs) or state when not to use it, leaving ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_vcard_qrA
Create a QR code that encodes a contact card (vCard). When scanned by a phone camera, it prompts the user to save the contact. Supports all standard vCard fields and custom QR styling.
| Name | Required | Description | Default |
|---|---|---|---|
| first_name | Yes | Contact first name. | |
| last_name | Yes | Contact last name. | |
| organization | No | Company or organization. | |
| title | No | Job title. | |
| No | Email address. | ||
| phone | No | Phone number. | |
| url | No | Website URL. | |
| address | No | Street address. | |
| note | No | Additional notes. | |
| label | No | Label for this QR code. | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully convey behavior. Only states that it creates a QR prompting contact save, but omits details on output format, action on creation, or potential side effects.
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 efficient sentences with no extraneous information, front-loaded with purpose and key behavior.
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 tool with 20 parameters and no output schema, the description is brief and does not explain output or distinguish styling options. It covers core purpose but lacks depth on response and usage details.
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 has 100% parameter description coverage with clear fields. Description adds 'supports all standard vCard fields' which reassures mapping but does not enrich beyond existing schema descriptions.
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?
Clearly states the tool creates a QR code encoding a vCard contact card, with specific verb and resource. Differentiates from sibling QR tools by explicitly mentioning vCard format and use case.
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?
Implies use when needing a contact card QR, but does not provide explicit when-to-use or when-not-to-use, nor contrasts with other create_qr variants or update_vcard_qr.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_webhookA
Register a webhook endpoint to receive real-time notifications when QR codes are scanned. Returns an HMAC-SHA256 secret for verifying webhook signatures — store it securely, it is only shown once.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | The endpoint URL that will receive POST requests with scan event data. | |
| events | No | Events to subscribe to. Currently supported: "qr.scanned". |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool returns an HMAC-SHA256 secret shown only once, which is critical. Does not cover limits or error cases, but provides essential behavioral context.
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 sentences: first states purpose, second explains return value and security warning. No unnecessary words, front-loaded.
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 tool with two parameters and no output schema, the description covers purpose, return, and security. Lacks error handling details but is mostly 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 descriptions for both parameters (url and events). The main description does not add extra information about parameters, so baseline 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?
The description clearly states the tool registers a webhook endpoint to receive real-time notifications on QR code scans, with a specific verb ('register') and resource, distinguishing it from sibling tools like delete_webhook and list_webhooks.
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 usage for receiving webhook notifications but does not explicitly mention when not to use or compare with alternatives. However, sibling names are distinct, so context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_wifi_qrC
Create a QR code that encodes WiFi credentials. When scanned by a phone camera, it offers to auto-join the WiFi network. No internet connection needed to join — the credentials are encoded directly in the QR image.
| Name | Required | Description | Default |
|---|---|---|---|
| ssid | Yes | WiFi network name (SSID). | |
| password | No | WiFi password. Omit for open networks (use encryption='nopass'). | |
| encryption | No | Encryption type. Default: WPA. | WPA |
| hidden | No | Whether the network is hidden. Default: false. | |
| label | No | Label for this QR code. | |
| format | No | Image format. | svg |
| foreground_color | No | Hex color for dots. | |
| background_color | No | Hex color for background. | |
| dot_style | No | Dot shape. | |
| corner_style | No | Corner shape. | |
| logo_url | No | Logo URL or data URI. | |
| frame_style | No | Frame style around QR. | |
| frame_text | No | CTA text on frame (max 30 chars). | |
| frame_color | No | Frame background color. | |
| frame_text_color | No | Frame text color. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must fully disclose behavior. It explains the QR code's scanning effect but omits critical details like authentication requirements, rate limits, storage, or output format. The description adds minimal behavioral context beyond the QR code's purpose.
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 concise with two short, front-loaded sentences. It wastes no words but sacrifices completeness for brevity.
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 tool with 15 parameters and no output schema, the description is incomplete. It does not explain the return value, how the QR code is delivered, or how to use the output. Customization options are not mentioned despite many parameters.
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 descriptions for all 15 parameters. The description adds no additional parameter information beyond the schema, so 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 clearly states the tool creates a QR code for WiFi credentials, specifying the action and resource. It explains the scanning behavior and that no internet is needed. However, it does not explicitly differentiate from sibling tools like create_qr_code, missing top marks.
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?
No guidance on when to use this tool versus other QR creation tools (e.g., create_qr_code, create_email_qr). No usage conditions or exclusions are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_qr_codeA
Permanently delete a QR code and all its scan analytics. The short URL will stop working immediately. This cannot be undone.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the QR code to delete. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that deletion is permanent, analytics are removed, and the URL stops working. With no annotations, this adds sufficient behavioral context beyond the schema.
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 sentences, no wasted words. Front-loaded with action and consequences.
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 delete tool without output schema, the description covers what the agent needs to know: irreversible action, and affected resources.
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 covers the single parameter 'short_id' with a description. The tool description adds no additional meaning beyond what the schema provides, meeting baseline for high coverage.
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 'delete a QR code' and specifies the scope ('and all its scan analytics'). It differentiates from siblings like bulk_delete_qr_codes by focusing on single deletion.
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 warns about permanence and immediate effect, implying irreversible action. It does not explicitly mention when to use vs alternatives like bulk_delete, but the guidance is clear enough for a deletion tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_webhookA
Delete a webhook endpoint and all its delivery logs. The endpoint will stop receiving events immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| webhook_id | Yes | The ID of the webhook to delete. Use list_webhooks to find IDs. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Discloses that delivery logs are also deleted and that the endpoint stops receiving events immediately. No annotations provided, so description carries full burden; however, could mention irreversibility or auth requirements.
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 sentences, front-loaded with primary action, no unnecessary words. Every sentence adds value.
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?
Simple tool with one parameter. Description covers purpose, side effects, and timing. Could mention lack of undo, but adequate for the scope.
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?
Single parameter webhook_id covered 100% by schema. Description adds helpful guidance on obtaining IDs via list_webhooks, exceeding baseline of 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?
Specific verb 'delete' with resource 'webhook endpoint' and additional context about stopping events and deleting logs. Clearly distinct from siblings like create_webhook and list_webhooks.
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?
Notes prerequisite to use list_webhooks to find IDs, but no explicit guidance on when to use vs alternatives or exclusions. Implied context is clear but not prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_conversionsA
Get conversion statistics for a QR code. Returns total conversions, total value, breakdowns by event name, daily trends, and recent events. Use this to measure QR code ROI and understand which codes drive the most value.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short_id of the QR code to get conversion stats for. | |
| period | No | Time period for aggregations. Default: 30d. | 30d |
| event | No | Filter by event name (e.g., 'purchase'). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description must disclose behavioral traits. It does not explicitly state read-only nature, rate limits, or data freshness. It implies a read operation but could be more transparent.
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 sentences: first defines function and outputs, second gives use case. No redundant words. Highly concise and front-loaded.
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?
Given 3 parameters, no output schema, no annotations, description covers purpose and return value adequately. Missing only explicit read-only flag, but otherwise 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 descriptions. Description adds context about returns but does not add much parameter-specific meaning beyond schema. 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?
Description clearly states the verb 'Get conversion statistics' and the resource 'QR code'. It lists specific return types (total conversions, total value, breakdowns by event name, daily trends, recent events), distinguishing it from siblings like record_conversion or get_qr_analytics.
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?
Explicitly tells when to use: 'to measure QR code ROI and understand which codes drive the most value'. Does not mention alternatives or when not to use, but purpose is clear enough for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_custom_domainA
Get your current custom domain configuration and DNS verification status. Returns the domain, whether DNS is active or pending, and setup instructions.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses that the tool returns domain, DNS status, and setup instructions, indicating a read-only operation. No contradictions or hidden behaviors.
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 concise sentences effectively convey the tool's purpose and output with no unnecessary words.
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 tool with no parameters and no output schema, the description fully explains what the tool returns, providing complete context for an agent to invoke it.
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?
No parameters exist, so baseline is 4. The description adds meaning by explaining what data is returned, compensating for the lack of an output 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 clearly states the verb 'Get' and the resource 'custom domain configuration and DNS verification status'. It distinguishes from the sibling tool 'set_custom_domain' by indicating this is a retrieval operation.
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 usage for checking domain status but does not explicitly state when to use this tool versus alternatives like 'set_custom_domain'. No guidance on when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_qr_analyticsA
Get enriched scan analytics for a QR code. Returns total scans, daily trends, device/browser/country/referer breakdowns with percentages, and recent scan events with parsed user-agent and geo data.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the QR code to get analytics for. | |
| period | No | Time period for aggregations. Default: 30d. | 30d |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly indicates a read operation ('get') and lists returned data, but does not disclose prerequisites (e.g., existing short_id), error cases, rate limits, or pagination behavior for recent events.
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 sentences: first states purpose, second enumerates returned data. Front-loaded and concise with no redundant information.
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 read-only analytics tool with two simple parameters and no output schema, the description adequately covers return content. It lacks specifics on data format and edge cases, but is sufficient for typical use.
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 already describes short_id and period with defaults/enum. The description adds context by listing the types of analytics returned, but does not deepen understanding of individual parameters 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 clearly states the verb ('get') and resource ('enriched scan analytics for a QR code'), and lists specific data types (total scans, daily trends, breakdowns, recent events). This distinguishes it from siblings that focus on creation, deletion, or other analytics like conversions.
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 after creating a QR code, but does not explicitly state when to use this vs. other tools like get_conversions or get_usage. No when-not or alternative guidance is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_qr_codeA
Retrieve details of an existing QR code by its short ID. Returns the current target URL, metadata, and timestamps.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the QR code to look up. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears the full burden of behavioral disclosure. It implies a read-only operation by 'Retrieve details', but does not explicitly state that it has no side effects, requires specific permissions, or handles non-existent short IDs. This leaves some ambiguity about its 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?
The description is a single, well-structured sentence that efficiently conveys the tool's purpose, identifier, and return value. There is no redundant or unnecessary 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?
Despite lack of output schema, the description adequately covers what the tool returns (target URL, metadata, timestamps). It does not mention potential errors or the QR code type, but for a retrieval operation this level of detail is sufficient.
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 input schema has 100% description coverage for the single parameter 'short_id'. The description adds no additional semantic information beyond the schema's definition. Baseline score of 3 is appropriate since the schema already fully documents the parameter.
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 verb 'Retrieve', the resource 'existing QR code', and the identifier 'by its short ID'. It also specifies what is returned (target URL, metadata, timestamps). This distinguishes it from sibling tools like list_qr_codes or delete_qr_code.
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?
No explicit guidance is provided on when to use this tool versus alternatives. While the tool is clearly a retrieval operation, the description does not mention when it is appropriate to use get_qr_code instead of list_qr_codes or other specific retrieval tools like get_qr_analytics.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageA
Get current usage and quota for your API key.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It implies a read operation but does not disclose any behavioral traits such as rate limits, authentication requirements, or response structure. Minimal transparency beyond the stated function.
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, clear sentence with no wasted words. It front-loads the purpose, making it efficient for an agent to parse.
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, no-parameter tool with no output schema, the description is fairly complete. However, it could briefly mention what 'usage' and 'quota' mean (e.g., current period or cumulative). Still, it covers the essential information.
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?
There are 0 parameters, so schema coverage is 100% trivially. Per rubric, 0 params baseline is 4. The description adds nothing beyond the schema, but that is acceptable since no parameters exist.
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 action ('get') and the resource ('usage and quota for your API key'). It distinguishes itself from sibling tools (which are mostly creation/manipulation tools) as a read-only informational endpoint.
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?
No guidance on when to use this tool versus alternatives, no mention of when not to use it, and no exclusion criteria. It simply describes the function without context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_qr_codesA
List all managed QR codes with pagination. Returns short IDs, target URLs, labels, and timestamps. Use this to browse or search for existing QR codes.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max results to return. | |
| offset | No | Number of results to skip. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions pagination and return fields, implying read-only behavior. No annotations are provided, so the description carries the burden. It lacks details like ordering or side effects, but for a list operation this is acceptable.
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 concise sentences with front-loaded information: first states the action, second provides use case and return fields. No unnecessary words.
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?
No output schema, but the description mentions returned fields. It fails to clarify that the list is unfiltered (only pagination), and the word 'search' could be misleading given the absence of search parameters.
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 clear parameter descriptions. The description adds 'with pagination' which hints at the parameters but does not add new meaning 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 clearly states it lists all managed QR codes with pagination and specifies the returned fields (short IDs, target URLs, labels, timestamps). This distinguishes it from sibling tools like get_qr_code which retrieves a single record.
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 to browse or search for existing QR codes', providing clear usage context. However, it could be improved by mentioning alternatives for single-record retrieval.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_webhooksA
List all registered webhook endpoints for your API key. The HMAC secret is not included for security.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries the burden and discloses that the HMAC secret is omitted for security. It implicitly indicates a read-only operation, though it does not explicitly state no side effects or mention rate limits.
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 comprises two concise, front-loaded sentences with no redundant information. Every sentence adds value: stating the action and a security caveat.
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 list tool with no output schema, the description provides scope and a notable omission (secret) but does not describe the structure of returned endpoints (e.g., fields like id, url). Slightly lacking for full completeness.
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?
There are zero parameters and schema coverage is 100%, so baseline is 3. The description adds no additional parameter information beyond the empty 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 clearly states the verb 'List' and resource 'webhook endpoints' with scope 'for your API key'. It is specific and distinguishes from sibling tools like create_webhook and delete_webhook by its action.
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 when to use (to list endpoints) but does not explicitly exclude alternate uses or mention when not to use it. Context is clear, but no alternatives are discussed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
manage_billingA
Open the Stripe billing portal to manage your subscription, update payment method, or cancel. Returns a portal URL — tell the user to open it in their browser. Only works if you have an active Pro subscription.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses that the tool returns a portal URL for the user to open, and only works with an active Pro subscription. The mutational nature (opening portal) is implied, but no side effects are hidden.
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 sentences with no wasted words. It front-loads the core action and return value, then adds the precondition. Every sentence adds value.
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?
Given that the tool has no parameters, no output schema, and is simple, the description covers the purpose, return value, and usage condition completely. No gaps remain for an agent to misunderstand.
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, and schema coverage is 100%. The description adds meaning by explaining what the empty call does and what it returns, which is the baseline for no-parameter tools.
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 opens the Stripe billing portal for managing subscriptions, updating payment methods, or canceling. It specifies the return value (a URL) and includes a precondition (Pro subscription). This distinguishes it from siblings like upgrade_to_pro.
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 indicates when the tool is appropriate (managing Pro subscription billing) and when it is not (requires active Pro). It does not name alternative tools, but the precondition is clear and siblings like upgrade_to_pro are implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_conversionA
Record a post-scan conversion event (purchase, signup, etc.) for a QR code you own. Use this to track ROI — e.g., when a user scans a QR code and then makes a purchase, record a 'purchase' conversion with the order value. For client-side tracking without code, use the tracking pixel: .
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short_id of the QR code this conversion is for. | |
| event | Yes | The conversion event name (e.g., "purchase", "signup", "add_to_cart"). Use consistent names to aggregate stats. | |
| value | No | Optional monetary value of the conversion (e.g., 49.99). | |
| metadata | No | Optional JSON metadata (e.g., product ID, order number). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It states the tool 'records' an event but fails to disclose side effects, authorization requirements, idempotency, or error handling. The implicit ownership mention is not elaborated.
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 three sentences: purpose, usage example, alternative. No redundant information, each sentence 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?
No output schema, so description should explain return values or success/error signals. It does not. It also omits duplicate handling, rate limits, or permissions beyond implied ownership. For a mutation tool, this is insufficient.
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%, so baseline is 3. The description adds context about consistent event names for aggregation and the monetary value example, but does not provide additional syntax or constraints 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 clearly states the tool records a post-scan conversion event for a QR code you own, with specific examples (purchase, signup) and the purpose of tracking ROI. The verb 'record' and resource 'conversion' are specific and distinct from sibling tools like 'get_conversions'.
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 explicit usage context ('Use this to track ROI') and provides an alternative method (tracking pixel) for client-side tracking without code. It does not explicitly state when not to use this tool, but the alternative guidance helps differentiate use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
registerA
Register for an API key. Provide your email to get a key immediately.
| Name | Required | Description | Default |
|---|---|---|---|
| Yes | Your email address. | ||
| label | No | An optional label to identify this API key. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It states the key is obtained immediately but doesn't address prerequisites, rate limits, or verification steps.
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 extraneous information. 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 simple registration tool with two parameters and no output schema, the description covers the core purpose and required input adequately, though it omits the return value.
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 clear descriptions for email and label. The tool description adds no new semantic details beyond reinforcing that email is for key acquisition.
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 'Register for an API key' with the specific action 'Provide your email to get a key immediately.' This distinguishes it from sibling tools that focus on QR codes and other operations.
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 usage for first-time API key acquisition via email but lacks explicit guidance on when not to use it or mention of alternatives like authentication status.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_custom_domainA
Set a custom domain for your QR code short URLs (Pro plan required). When set, all new QR codes will use https://your-domain.com/r/... instead of the default URL. You must configure DNS (CNAME) to point to the QR Agent server. Pass domain=null to remove the custom domain.
| Name | Required | Description | Default |
|---|---|---|---|
| domain | Yes | Your custom domain without protocol (e.g. 'qr.mybrand.com'). Pass null to remove. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully discloses the behavioral effect (all new QR codes use the custom domain) and the DNS requirement. It does not mention rate limits or authentication, but it adequately describes the mutation and removal 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?
The description is concise with three sentences. The first sentence states the purpose and prerequisite, the second explains the effect, and the third covers configuration and removal. No extraneous information, front-loaded with key details.
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?
Given the low complexity (one parameter, no output schema), the description is fully complete. It covers purpose, prerequisites, usage, effect, and removal. No additional information is needed for correct tool invocation.
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 input schema has 100% descriptive coverage for the single parameter. The description adds value by explaining the expected format (no protocol), providing an example, and clarifying that null removes the domain. This goes 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 clearly states the tool's purpose: setting a custom domain for QR code short URLs. It specifies the effect (new QR codes use custom domain) and provides example URL format, distinguishing it from sibling tools like get_custom_domain.
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 mentions the Pro plan requirement and DNS configuration prerequisite. It also explains how to remove the domain. However, it does not explicitly contrast with alternatives or state when not to use, but the context is clear enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_redirect_rulesA
Set conditional redirect rules on a URL QR code. Rules are evaluated top-to-bottom; each rule has an array of conditions (AND logic) — all must match. First matching rule's URL is used. If no rule matches, the default target_url applies. Conditions: 'device' (mobile/tablet/desktop), 'os' (iOS/Android/Windows/macOS/Linux), 'country' (ISO alpha-2 like 'FR'), 'language' (ISO 639-1 like 'fr'), 'time_range' ({start:'09:00',end:'17:00',timezone:'Europe/Paris'}), 'ab_split' ({percentage:50}). Combine conditions in a single rule for AND logic (e.g. mobile + FR). Pass an empty array to remove all rules.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the QR code (must be type='url'). | |
| rules | Yes | Array of redirect rules. Empty array to clear all rules. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully covers behavioral traits: top-to-bottom evaluation, AND logic per rule, fallback to default_url, and removal by empty array. No mention of side effects or permissions, but adequately transparent for the complexity.
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?
Description is well-structured with purpose first, then evaluation order, condition breakdown, and example. Sentences are mostly efficient, though could be slightly trimmed without losing clarity.
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?
Given the 2-param schema and no output schema, the description fully explains how to use the tool and the logic behind rules. It could mention that existing rules are overwritten, but this is implied by 'set'.
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%, but the description adds significant value by explaining condition types, value formats (e.g., 'FR' for country, object for time_range), and combinatory logic, making the parameters more meaningful.
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 clearly states it sets conditional redirect rules on a URL QR code, explains evaluation order and AND logic, and distinguishes from siblings like set_utm_params or update_qr_destination by focusing on dynamic behavior.
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?
Provides explicit details on when to use (setting redirect rules), how rules are evaluated, and how to clear rules via empty array. Lacks explicit when-not-to-use, but the context is sufficiently clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_utm_paramsA
Set UTM tracking parameters on a URL QR code. These parameters are automatically appended to the target URL on every scan redirect. Use this to track QR code scans in Google Analytics or other analytics tools. Set 'clear' to true to remove all UTM parameters.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the QR code (must be type='url'). | |
| source | No | utm_source value (e.g. 'flyer', 'email', 'poster'). | |
| medium | No | utm_medium value (e.g. 'print', 'qr', 'social'). | |
| campaign | No | utm_campaign value (e.g. 'summer_2026'). | |
| term | No | utm_term value (paid search keyword). | |
| content | No | utm_content value (A/B test variant). | |
| clear | No | Set to true to remove all UTM parameters from this QR code. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states that parameters are 'automatically appended to the target URL on every scan redirect' and that setting 'clear' to true removes all UTM parameters. However, it does not clarify whether setting a new value overwrites an existing one or if there are any side effects, leaving some ambiguity.
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 three sentences long, front-loaded with the main action, and uses clear language. It is concise but still covers key points. Slightly more detail on overwrite behavior could be added, but overall efficient.
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 tool with 7 parameters and no output schema, the description adequately explains the core functionality: setting and clearing UTM parameters on redirect. It does not mention return values, but the schema implies success/failure (likely a confirmation). Given the tool's specificity, this is sufficient.
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 input schema has 100% description coverage, with each parameter clearly described (e.g., 'utm_source value (e.g. 'flyer', 'email', 'poster')'). The description adds no additional meaning beyond what the schema provides, so baseline 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?
The description clearly states the tool's purpose: 'Set UTM tracking parameters on a URL QR code.' It specifies the resource (URL QR code) and action (set UTM params), distinguishing it from siblings like 'update_qr_destination' which changes the target URL itself.
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 explains when to use the tool: 'to track QR code scans in Google Analytics or other analytics tools.' It does not explicitly state when not to use it or provide alternatives, but the context is sufficient for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_app_store_qrA
Update the app store URLs of an App Store QR code. Partial updates merge with existing data.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the App Store QR code to update. | |
| ios_url | No | Apple App Store URL. | |
| android_url | No | Google Play Store URL. | |
| fallback_url | No | Fallback URL. | |
| label | No | Update the label. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds behavioral context by noting 'Partial updates merge with existing data', which is useful. However, without annotations, it lacks transparency on permissions, idempotency, side effects, or error conditions.
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 concise (two sentences) with the purpose front-loaded, followed by a key behavioral detail. No extraneous information.
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 tool with moderate complexity (5 params, no output schema), the description is mostly complete. It explains the update and partial merge. Could mention return value or default behavior, but overall adequate.
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 input schema has 100% description coverage, so the schema already documents parameters. The description adds value by explaining the merge behavior, which clarifies that omitted fields are not cleared. This exceeds the baseline of 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?
The description clearly states the verb 'Update' and the resource 'App Store QR code', specifying that it updates app store URLs. It distinguishes itself from siblings like 'create_app_store_qr' by implying an existing code and from 'update_qr_destination' by targeting a specific QR type.
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 usage when modifying an existing App Store QR's URLs but does not explicitly state when to use this tool over alternatives like 'update_qr_destination' or other update tools. No exclusions or sibling references are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_qr_destinationA
Change where an existing QR code redirects to. This is the key 'dynamic link' feature: the QR image stays the same, but scanning it will now go to the new URL. Ideal for updating campaigns, fixing broken links, or A/B testing.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the QR code to update. | |
| target_url | Yes | The new destination URL. | |
| label | No | Optionally update the label too. | |
| expires_at | No | ISO 8601 expiration date. Set to null to remove expiration. | |
| scheduled_url | No | Scheduled replacement URL. Set to null to cancel. | |
| scheduled_at | No | ISO 8601 activation date for scheduled_url. Set to null to cancel. | |
| gtm_container_id | No | Google Tag Manager container ID. Set to null to remove GTM tracking. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description discloses the key behavior (QR image unchanged, URL updated) but lacks information on side effects, permissions, or rate limits. Adequate but not comprehensive.
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 sentences: purpose, behavior, use cases. Front-loaded, no redundant words, perfectly scoped for quick understanding.
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?
Describes only destination update but the tool also updates label, expiration, scheduling, and GTM container. No output schema exists; description should at least hint at additional capabilities.
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 its descriptions are already clear. The tool description adds no new parameter-level meaning beyond summarizing the core action.
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?
Clearly states the tool changes the destination URL of an existing QR code. Uses specific verb+resource ('change where an existing QR code redirects to') and highlights the dynamic link feature, distinguishing it from creation and other update tools.
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?
Describes when to use: updating campaigns, fixing broken links, A/B testing. Implies context (dynamic vs. static QR codes) but does not explicitly exclude alternative tools or mention prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_social_qrB
Update the social media links of a Social QR code. Partial updates merge with existing data.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the Social QR code to update. | |
| No | Facebook URL. | ||
| No | Instagram URL. | ||
| No | Twitter/X URL. | ||
| No | LinkedIn URL. | ||
| youtube | No | YouTube URL. | |
| tiktok | No | TikTok URL. | |
| github | No | GitHub URL. | |
| website | No | Website URL. | |
| label | No | Update the label. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description adds one behavioral trait: 'Partial updates merge with existing data', which is useful. However, it lacks disclosure of other behaviors such as authentication requirements, rate limits, or side effects, so the burden is partially met.
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 sentences, front-loaded with the verb and resource. Every word serves a purpose. Minor improvement could merge the second sentence for even tighter structure, but it is already concise.
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?
No output schema exists, and the description does not mention return values, errors, or permissions. For a mutation tool with 10 parameters (all but one optional), the description is minimally adequate but lacks completeness for safe autonomous invocation.
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 input schema already describes all parameters with 100% coverage. The tool description does not add extra meaning beyond 'partial updates merge', so it meets the baseline. No param-specific enrichment 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?
The description clearly states the verb 'Update' and the resource 'Social QR code', specifying that it updates social media links. The mention of partial merge adds specificity but does not explicitly differentiate from sibling tools like update_vcard_qr or update_qr_destination.
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 provides no guidance on when to use this tool versus other update tools (e.g., update_app_store_qr, update_vcard_qr). It does not mention alternatives or prerequisites, leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_vcard_qrA
Update the contact details of a vCard QR code. Only works on QR codes created with type='vcard'. Partial updates merge with existing data. Note: updating vCard data changes the QR image content.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the vCard QR code to update. | |
| first_name | No | Contact first name. | |
| last_name | No | Contact last name. | |
| organization | No | Company or organization. | |
| title | No | Job title. | |
| No | Email address. | ||
| phone | No | Phone number. | |
| url | No | Website URL. | |
| address | No | Street address. | |
| note | No | Additional notes. | |
| label | No | Update the label. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description reveals key behaviors: partial updates merge with existing data and updating vCard data changes the QR image content. This adds value beyond the schema.
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 sentences efficiently cover purpose, constraints, and behavior. No wasted words, and the most critical information is front-loaded.
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?
Given 11 simple parameters, no output schema, and no annotations, the description sufficiently explains scope, update semantics, and side effects. It could mention that all fields except short_id are optional, but required field is already indicated in 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?
Schema coverage is 100%, so baseline is 3. The description adds extra context like 'Partial updates merge with existing data' and the type constraint, enhancing understanding beyond schema. It does not repeat schema descriptions.
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 verb 'Update', resource 'contact details of a vCard QR code', and specifies it only works on QR codes created with type='vcard', distinguishing it from other update tools for different types.
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?
It explicitly states the precondition 'Only works on QR codes created with type='vcard'', which guides when to use it. However, it does not explicitly list alternatives or when not to use it, but sibling context provides implicit differentiation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_wifi_qrA
Update the WiFi credentials of a WiFi QR code. Only works on QR codes created with type='wifi'. Note: updating WiFi data changes the QR image content.
| Name | Required | Description | Default |
|---|---|---|---|
| short_id | Yes | The short ID of the WiFi QR code to update. | |
| ssid | No | WiFi network name. | |
| password | No | WiFi password. | |
| encryption | No | Encryption type. | |
| hidden | No | Whether the network is hidden. | |
| label | No | Update the label. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that updating WiFi data changes the QR image content, which adds value beyond a simple 'update' statement. However, it does not mention permissions, reversibility, or other side effects.
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 sentences, front-loaded with purpose and a key constraint. Every word earns its place; no 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?
No output schema and no annotations. The description is brief: it covers purpose and a behavioral note but lacks return value description, error handling, or guidance on parameter interactions. Adequate for a simple update, but minimal.
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 description adds no additional parameter-level meaning beyond what the schema already provides. 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 clearly states the verb 'Update', the resource 'WiFi QR code', and a constraint 'Only works on QR codes created with type='wifi''. This distinguishes it from sibling tools like create_wifi_qr or update_qr_destination.
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?
Explicitly states the precondition that the QR code must have type='wifi', which guides when to use. Does not list alternatives or when not to use, but the constraint is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upgrade_to_proA
Upgrade to the Pro plan ($19/month) for unlimited QR codes, scans, and webhooks. Returns a Stripe Checkout URL — tell the user to open it in their browser to complete payment. The upgrade takes effect automatically after payment.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Given no annotations, the description carries full burden. It discloses the return value (Stripe Checkout URL), the required user action (open in browser), and the post-payment effect (automatic upgrade). It does not mention auth or rate limits, but for a simple upgrade tool this is sufficient.
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 three sentences long: first sentence states purpose and benefits, second explains the return and user action, third confirms the automatic effect. Every sentence adds value with no redundancy, and it is front-loaded with the key purpose.
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 parameters, output schema, or annotations, the description covers the essential aspects: what the tool does, what it returns, how the user should proceed, and the outcome. It could mention prerequisites (e.g., existing account, not already Pro), but is otherwise 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?
The input schema has zero parameters, so there is nothing to document. The description does not need to add parameter info, and the baseline score for 0-param tools is 4.
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 that this tool upgrades to the Pro plan, lists key benefits ($19/month, unlimited QR codes, scans, webhooks), and differentiates from sibling tools like 'manage_billing' which handle other billing aspects. It uses a specific verb ('Upgrade to the Pro plan') and a clear resource ('Pro plan').
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 provides explicit guidance: returns a Stripe Checkout URL that the user should open in their browser to complete payment, and the upgrade takes effect automatically. It does not mention alternatives or when not to use it, but the context (only one upgrade tool) makes the usage clear.
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. Dates show when Glama detected each change.
37 tool updates
v0.1.0- First observed
bulk_create_from_csv - First observed
bulk_create_qr_codes - First observed
bulk_delete_qr_codes - First observed
bulk_update_qr_codes - First observed
create_app_store_qr - First observed
create_email_qr - First observed
create_event_qr - First observed
create_location_qr - First observed
create_phone_qr - First observed
create_qr_code - First observed
create_sms_qr - First observed
create_social_qr - First observed
create_text_qr - First observed
create_vcard_qr - First observed
create_webhook - First observed
create_wifi_qr - First observed
delete_qr_code - First observed
delete_webhook - First observed
get_conversions - First observed
get_custom_domain - First observed
get_qr_analytics - First observed
get_qr_code - First observed
get_usage - First observed
list_qr_codes - First observed
list_webhooks - First observed
manage_billing - First observed
record_conversion - First observed
register - First observed
set_custom_domain - First observed
set_redirect_rules - First observed
set_utm_params - First observed
update_app_store_qr - First observed
update_qr_destination - First observed
update_social_qr - First observed
update_vcard_qr - First observed
update_wifi_qr - First observed
upgrade_to_pro
TDQS
Each tool has a clearly distinct purpose, from creating specific QR code types (email, event, location, etc.) to bulk operations, analytics, and account management. No two tools appear to do the same thing, and descriptions clearly differentiate them.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., create_qr_code, get_qr_analytics, update_qr_destination). There are no deviations or mixed conventions, making the set predictable and easy to navigate.
With 37 tools, the count is high but justified by the breadth of functionality: multiple QR types (10+), bulk operations, analytics, webhooks, billing, and customization. While slightly bloated, each tool serves a specific need in QR code management.
The tool surface covers the full lifecycle: create (single, bulk, specialized types), read (list, get details, analytics), update (destination, styling, dynamic rules), delete, plus extras like webhooks, billing, custom domains, and conversion tracking. No obvious gaps for a QR code service.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate QR codes for URLs, PIX, Wi-Fi, vCards, WhatsApp and more. For AI agents.
Dynamic, editable QR codes + short links with scan analytics and branded QR rendering.
Dynamic QR codes by chat: edit destinations after printing, smart routing, and scan analytics.
Create and manage trackable QR codes with scan tracking, analytics, and dynamic URL updates.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables generation of QR codes from text or URLs in multiple formats (DataURL, SVG, terminal display) with customizable options like error correction, colors, and size. Supports batch processing of multiple QR codes and integrates seamlessly with MCP-compatible clients.44MIT
- AlicenseAqualityDmaintenanceEnables AI-powered generation of styled QR codes with 10 design presets, supporting single or batch creation with custom logos and formats (SVG/PNG) directly from AI tools.45MIT
- AlicenseAqualityCmaintenanceGenerate styled QR codes, manage dynamic short links with click analytics, and publish micro-landing pages via AI agents.19871MIT
- AlicenseNot gradedqualityDmaintenanceQrVerloz lets AI agents create QR codes instantly — no account needed, active for 90 days, and claimable at any time to make them permanent. Retarget the destination URL whenever you need, without reprinting.3MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/benswel/qr-for-agent-api'
If you have feedback or need assistance with the MCP directory API, please join our Discord server