Skip to main content
Glama

QRStuff MCP Server

Get scans by device

get_scans_by_device
Read-onlyIdempotent

Use this when the user wants scans by phone platform (iOS, Android, other). Read-only.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_scans_by_device"
  }
}

Input Schema

NameRequiredDescriptionDefault
pageNoPage number.
scopeNoaccount for everything, project for one project (needs idproject), qrcode for one code (needs idqrcode and its idproject).account
end_dateNoEnd of the period, YYYY-MM-DD. Leave empty for today. Always send it when the user names a period.
idqrcodeNoQR code ID from `list_qrcodes`. Required when scope is qrcode. Never guess an ID.
per_pageNoItems per page.
idprojectNoProject ID from `list_projects`. Required when scope is project or qrcode. Never guess an ID.
start_dateNoStart of the period, YYYY-MM-DD. Leave empty for the last 30 days. Always send it when the user names a period.

Output Schema

NameRequiredDescriptionDefault
totalNo
bucketsNo
per_pageNo
last_pageNo
current_pageNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed5 schema fields changed
    • changedInput schema / properties / end_date / description
      Previous value: -"End date YYYY-MM-DD. REQUIRED when the user asks for a specific period; do not omit if they mention dates. Defaults to today only when no range given."New value: +"End of the period, YYYY-MM-DD. Leave empty for today. Always send it when the user names a period."
    • changedInput schema / properties / idproject / description
      Previous value: -"Project ID. Required when scope=project or qrcode."New value: +"Project ID from `list_projects`. Required when scope is project or qrcode. Never guess an ID."
    • changedInput schema / properties / idqrcode / description
      Previous value: -"QR code ID. Required when scope=qrcode."New value: +"QR code ID from `list_qrcodes`. Required when scope is qrcode. Never guess an ID."
    • changedInput schema / properties / scope / description
      Previous value: -"Scope: account (default), project, or qrcode"New value: +"account for everything, project for one project (needs idproject), qrcode for one code (needs idqrcode and its idproject)."
    • changedInput schema / properties / start_date / description
      Previous value: -"Start date YYYY-MM-DD. REQUIRED when the user asks for a specific period; do not omit if they mention dates. Defaults to 30 days ago only when no range given."New value: +"Start of the period, YYYY-MM-DD. Leave empty for the last 30 days. Always send it when the user names a period."
  2. First observed

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so "Read-only" merely repeats structured data. Beyond that the description discloses nothing — no aggregation behavior, no pagination semantics, no indication of whether 'other' is a catch-all bucket or how unknown devices are reported.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the usage trigger in a single tight sentence. The trailing "Read-only." is pure redundancy against readOnlyHint=true and is the only wasted content.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the input schema is fully documented, so the essentials are covered. What is missing is the connective tissue an agent needs in a 40-sibling analytics suite: how this breakdown relates to the account/project/qrcode scope model and to the other get_scans_by_* tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: scope's enum is explained with its idproject/idqrcode dependencies, dates have formats and defaults, and IDs are flagged 'Never guess an ID'. The description adds nothing on top of that, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific result set: scans broken down by phone platform (iOS, Android, other). That distinguishes it implicitly from the many other breakdown siblings (get_scans_by_country, get_scans_by_region, get_scans_by_date), but it never names those siblings or explicitly contrasts itself with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Use this when the user wants scans by phone platform" gives a clear triggering condition, which is stronger than most siblings. However there are no exclusions or routing hints — an agent is not told to prefer get_scans_by_country for geography or get_total_scans for a plain total, so disambiguation is left to inference from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources