tools/list, then calls each tool with tools/call. The server speaks both the current MCP revision (2026-07-28, where a client starts with server/discover) and earlier ones (where it starts with initialize), and identifies itself as scanova-mcp. All 82 tools operate against your own Scanova account, using whichever credential your client authenticated with — see Setup.
Each tool’s Type reflects its MCP annotation: Read-only tools only read, Write tools add something or change it without taking anything away, and Destructive tools can delete, overwrite, or switch off something that’s live — which includes changing what a printed QR Code shows. The groupings below are ours, to make the list easier to scan — the server itself returns one flat list.
Scanova docs bridge
Lets the assistant consult this documentation site live, mid-conversation.| Tool | Type | Description |
|---|---|---|
probe_docs_mcp | Read-only | Checks connectivity to Scanova’s docs MCP server and lists its available tools |
query_docs | Read-only | Searches this documentation (mode="search"), or runs a read-only filesystem-style command — cat, head, rg, tree, jq — against it (mode="filesystem"), to read a specific reference page directly |
Categories and validation
Reference data the assistant can consult before it creates anything.| Tool | Type | Description |
|---|---|---|
get_qr_categories | Read-only | Lists available QR Code categories — URL, vCard, WiFi, Document, Social Media, and the rest |
get_qr_category_fields | Read-only | Returns the required and optional info JSON field reference for a category, or for every category at once. Static reference data, so it costs no API call |
validate_qr_info | Read-only | Checks a category and info payload before create_qr_code or update_qr_code runs, catching malformed JSON, missing required fields, and invalid values |
QR Code design
Design previews are never saved: the assistant shows options first, then applies the one you choose withset_qr_design.
| Tool | Type | Description |
|---|---|---|
get_qr_design_options | Read-only | Returns the full catalog of design options — data patterns, gradient styles, eye shapes, frames, error-correction levels, and fonts — so the assistant can offer real choices before calling set_qr_design |
preview_qr_design | Read-only | Previews a design without saving it: the merged design, scan-safety checks (colour contrast of the dots and eyes, error correction with a logo, inverted or transparent backgrounds), a real scan test on a render, and the image. Works for an existing QR Code or new content |
set_qr_design | Destructive | Applies a visual design to an existing QR Code from friendly named parameters. Only the fields you specify change; everything else is merged onto the QR Code’s current design. Refuses a design that fails the scan-safety checks unless you accept the risk (accept_risk) |
QR Code management
| Tool | Type | Description |
|---|---|---|
create_qr_code | Write | Creates a new QR Code, once the name, category, type, and info payload are all known |
open_qr_code_creation_form | Read-only | Opens an interactive form instead, for when you have asked for a QR Code without supplying everything it needs |
list_qr_codes | Read-only | Lists QR Codes and Pages in the account, with paging and search, or narrows to just one of the two |
retrieve_qr_code | Read-only | Gets the details of a specific QR Code |
update_qr_code | Destructive | Updates an existing QR Code |
activate_qr_code | Write | Activates a QR Code |
deactivate_qr_code | Destructive | Deactivates a QR Code |
delete_qr_code | Destructive | Permanently deletes a QR Code |
download_qr_code | Read-only | Downloads a QR Code image as PNG, JPG, or PDF |
list_tags | Read-only | Lists the tags on the account’s QR Codes. Read-only by design — tags come into being when you attach one to a QR Code, not through a create call |
update_qr_tags | Destructive | Replaces a QR Code’s tags with the ones you give (an empty list removes them all). Tags that don’t exist yet are created |
Trash and health
| Tool | Type | Description |
|---|---|---|
list_trashed_qr_codes | Read-only | Lists QR Codes in the trash — deleted but still restorable — with when each was deleted and its scan count |
restore_qr_codes | Write | Restores QR Codes from the trash so they work again, by qrid. Counts against your plan’s QR Code limits, and never restores the whole trash in one call |
get_qr_health | Read-only | Runs the account’s QR Code health check: problems that stop codes working as intended, such as inactive or expired codes, broken destinations, and forms or custom domains that need attention |
GS1 recalls
| Tool | Type | Description |
|---|---|---|
list_gs1_recalls | Read-only | Lists the account’s GS1 batch/lot recall notices — which GTIN and batch, the message shown to people who scan an affected product, and whether each is active |
create_gs1_recall | Write | Recalls a product batch: everyone who scans a GS1 QR Code for that GTIN and batch/lot sees your message instead |
update_gs1_recall | Destructive | Changes a recall notice’s message, or switches it off once the recall is over. Its history is kept |
Folders
| Tool | Type | Description |
|---|---|---|
create_folder | Write | Creates a folder to organize QR Codes or Pages |
list_folders | Read-only | Lists all folders of a given type, qr or page |
update_folder | Write | Renames an existing folder |
delete_folder | Destructive | Deletes a folder. The tool asks first what should happen to the QR Codes inside it — move them to Uncategorized, or delete them with the folder |
move_qr_codes_to_folder | Write | Moves several QR Codes into a folder at once |
unassign_qr_codes_from_folder | Write | Removes several QR Codes from a folder, leaving them Uncategorized |
Forms
| Tool | Type | Description |
|---|---|---|
list_forms | Read-only | Lists all lead-capture forms, optionally filtered by active status |
retrieve_form | Read-only | Gets detailed information about a specific form, including its configuration |
create_form | Write | Creates a form from a title and its questions — each with an answer type (short answer, email, multiple choice, star rating, and more) and options for choice questions — and attaches it to a Dynamic QR Code straight away if you pass one. Also accepts a form’s full block structure |
update_form | Destructive | Updates a form’s name or active status |
delete_form | Destructive | Permanently deletes a form |
attach_form_to_qr | Write | Attaches a lead-capture form to a QR Code, by the form’s numeric id or its form_id |
detach_form_from_qr | Destructive | Removes the lead-capture form from a QR Code |
list_form_templates | Read-only | Lists ready-made form templates to start a new form from |
list_form_responses | Read-only | Lists the responses a form has collected, newest first: the answers, when each came in, and which QR Code it came through. Filters by date range, QR Code, or a search term |
get_form_analytics | Read-only | Gets a form’s performance: total responses and skips against the previous period, both by date, and responses by source QR Code |
get_form_question_analytics | Read-only | Gets how each question of a form was answered: how many responses answered it, and for choice, rating, and scale questions how often each answer was given |
list_form_notifications | Read-only | Lists the email alerts set up for new form responses — who they go to, how often, which forms, and whether each is on |
create_form_notification | Write | Emails someone when forms get new responses — for every response, or as a daily, weekly, or monthly digest. The address receives respondents’ answers |
update_form_notification | Destructive | Changes a form alert’s recipient, frequency, or forms, or switches it off. Its forms are kept unless you pass new ones |
Lead lists
| Tool | Type | Description |
|---|---|---|
list_lead_lists | Read-only | Lists all lead lists, optionally filtered by active status. Forms is the tool to reach for in new work |
retrieve_lead_list | Read-only | Gets detailed information about a specific lead list, including its webhook configuration |
update_lead_list | Destructive | Updates a lead list’s name or active status |
delete_lead_list | Destructive | Permanently deletes a lead list |
attach_lead_list_to_qr | Write | Attaches a lead list to a QR Code for lead capture |
detach_lead_list_from_qr | Destructive | Removes the lead list from a QR Code |
Analytics and reports
| Tool | Type | Description |
|---|---|---|
get_account_stats | Read-only | Retrieves account-level usage counters — total QR Codes, scans, users, and so on |
get_qr_analytics | Read-only | Retrieves QR Code performance metrics broken down by device, geography, and date |
get_analytics_overview | Read-only | Gets the account’s scan overview: all-time totals, this month, recent months, and scans by date |
list_analytics_reports | Read-only | Lists the scan-analytics reports generated for the account, with each one’s scope, dates, status, and a download link once it’s ready |
create_analytics_report | Write | Generates a scan-analytics report — summary analytics, raw scan data, or both — for chosen QR Codes, tags, or folders over a date range. It’s built in the background and emailed to whoever asked for it |
Plan and billing
Read-only: the assistant can explain the plan and billing history, but changes to a subscription stay in the app.| Tool | Type | Description |
|---|---|---|
get_current_plan | Read-only | Retrieves the account’s active plan — expiry, billing state, and the full list of quotas it grants |
list_available_plans | Read-only | Lists the plans the account can move to, with their features and quotas |
get_downgrade_impact | Read-only | Before a move to a smaller plan, shows which of the account’s QR Codes, users, domains, and other resources exceed that plan |
list_payments | Read-only | Lists the account’s payment history — amount, date, and status of each payment |
list_orders | Read-only | Lists the account’s orders — plan purchases, renewals, and top-ups — and their status |
list_quota_topups | Read-only | Lists extra quota bought on top of the plan, and when each top-up runs out |
Users and roles
| Tool | Type | Description |
|---|---|---|
list_users | Read-only | Lists all users in the account |
get_user | Read-only | Gets the details of a specific user |
add_user | Write | Invites a new user to the account by email |
resend_user_invitation | Write | Sends a team member’s invitation email again, for someone who hasn’t accepted yet |
remove_user | Destructive | Removes a user from the account |
list_user_roles | Read-only | Lists every role that can be assigned |
create_custom_role | Write | Creates a custom role. Needs a dedicated plan quota, and returns 403 where the plan doesn’t grant it. Call list_user_roles first to see what already exists |
update_user_role | Destructive | Changes the role of an existing user |
Activity
| Tool | Type | Description |
|---|---|---|
get_activity_feed | Read-only | Lists what happened in the account — who created, changed, or deleted what, and when — filtered by event type, team member, or date |
get_activity_summary | Read-only | Gets counts of the account’s activity over a period |
Custom domains
| Tool | Type | Description |
|---|---|---|
list_custom_domains | Read-only | Lists the account’s custom short-link domains (for example qr.example.com), which one is the default, and whether each is verified |
get_custom_domain | Read-only | Gets one custom domain’s details — its DNS (TXT/CNAME) verification, SSL status, and whether it’s the default |
Bulk operations and media
| Tool | Type | Description |
|---|---|---|
list_bulk_operations | Read-only | Lists the account’s bulk operations — bulk QR Code generation and updates — with each one’s status and results |
get_bulk_operation_stats | Read-only | Gets totals across the account’s bulk operations |
list_media | Read-only | Lists files in the account’s media library — images, PDFs, videos, and more — for example to pick a logo or a document for a QR Code |
Integrations and Conversion Tracking
| Tool | Type | Description |
|---|---|---|
get_integrations_overview | Read-only | Shows which integrations the account has connected — webhooks, Zapier, Slack, HubSpot, Google Analytics — and their state |
list_webhooks | Read-only | Lists the account’s webhooks: where each sends events, for which forms or QR Codes, and whether it’s on |
list_tracking_sites | Read-only | Lists the websites set up for Conversion Tracking, with their domains |
list_tracking_funnels | Read-only | Lists a tracking site’s conversion funnels — the steps from scan to conversion |
Landing pages
| Tool | Type | Description |
|---|---|---|
list_page_templates | Read-only | Lists landing page templates for QR Codes that open a page — Scanova’s own, or just the account’s saved ones |
Destructive tools skip a confirmation dialog by design — the MCP protocol has no built-in “are you sure?” step; whatever confirmation happens is up to your AI client’s own UI conventions. Review what a
delete_*, update_*, or remove_user tool call is about to do before approving it, the same way you would for any other write action you delegate to an assistant.Related
- MCP overview — what the server is, what it can do at a glance, and its access requirements
- MCP setup — connect an AI client to the server that exposes these tools
- Management API overview — the underlying API these tools call on your behalf