Hovercode
by hovercode.com · remote · local (npm) · no sign-in to list tools · v1.0.1 · published by com.hovercode
Create and manage QR codes, short links, landing pages, and forms in your Hovercode workspace.
36 tools: 9 can delete or cancel things, 9 change things and 18 only read.
Scanned Oct 21, 2026
- Deletes or cancels9Claude Code: deny: see these tools
- Can't be undone0Claude Code: ask
- Changes things9Claude Code: ask: see these tools
- Only reads18Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http hovercode https://hovercode.com/mcp/Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
36 tools
Deletes or cancels 9Claude Code: deny
delete_folderDelete a folder.No findings
Why it is in this group
- The name "delete_folder" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete a folder. The codes in it (and in its subfolders) are NOT deleted — they become unfiled — and its subfolders move up to its parent.
Annotations the server declares
- title: Delete folder
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
delete_pageDelete a landing page.No findings
Why it is in this group
- The name "delete_page" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete a landing page. Its live URL stops serving and it leaves the workspace's page list. Use for 'delete that page' / 'remove the landing page'.
Annotations the server declares
- title: Delete landing page
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
delete_qr_codeDelete a QR code.No findings
Why it is in this group
- The name "delete_qr_code" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete a QR code. Dynamic codes stop redirecting after deletion.
Annotations the server declares
- title: Delete QR code
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
delete_short_linkDelete a short link.No findings
Why it is in this group
- The name "delete_short_link" says "delete": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete a short link. It stops redirecting after deletion.
Annotations the server declares
- title: Delete short link
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
update_folderRename a folder and/or move it under another folder.No findings
Why it is in this group
- The name "update_folder" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Rename a folder and/or move it under another folder. `parent` 'none' moves it to the top level. Codes inside keep their filing.
Annotations the server declares
- title: Rename or move folder
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: false
update_formChange an existing form without recreating it: edit its fields, settings (redirect, thank-you, title), or branding (theme/colors/logo), or close/reopen it.No findings
Why it is in this group
- The name "update_form" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Change an existing form without recreating it: edit its fields, settings (redirect, thank-you, title), or branding (theme/colors/logo), or close/reopen it. If you pass `fields`, provide the COMPLETE desired list — include each existing field's `id` (from get_form) to keep it; omit a field to remove it; leave `id` off a new field. If the form is already published, edits are re-published so they go live.
Annotations the server declares
- title: Update form
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
update_pageChange an existing landing page without recreating it: edit its blocks, title, description, or colors, and publish/unpublish it.No findings
Why it is in this group
- The name "update_page" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Change an existing landing page without recreating it: edit its blocks, title, description, or colors, and publish/unpublish it. Use for 'fix the typo on my page', 'add a section', or 'take the page down'. If you pass `blocks`, provide the COMPLETE desired list (same {type, content} shape as build_page; include each block's `id` from get_page to keep it, omit to remove) — leaving `blocks` off keeps the existing blocks untouched. If the page is already published, edits are re-published so they go live; pass publish:false to take it offline.
Annotations the server declares
- title: Update landing page
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
update_qr_codeUpdate a QR code in place — the same code keeps working, so it's safe for already-printed codes.No findings
Why it is in this group
- The name "update_qr_code" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update a QR code in place — the same code keeps working, so it's safe for already-printed codes. Changing `qr_data` retargets a DYNAMIC code's destination. Design fields (colors, pattern, eye style, frame, logo) restyle the code WITHOUT replacing it. Also supports renaming, toggling location tracking, moving it into a folder (`folder`, or 'none' to unfile), and adding/removing tags. Returns the re-rendered QR so you can preview the result. Any combination works in one call. Only include a design field when you actually intend to change it: every one you pass is applied exactly as given, even a color identical to what you set at creation — there's no way to tell 'leave this as-is' from 'set this back to what it already was'. In particular, someone may have since edited the design directly (a widget's own Edit panel can change eye/frame color, pattern, or frame without that edit ever appearing in this conversation) — resending a color or style you remember from an earlier turn will silently overwrite it. If you're not sure the design still matches what you last set, call get_qr_code first rather than restoring from memory.
Annotations the server declares
- title: Update QR code
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
update_short_linkUpdate a short link.No findings
Why it is in this group
- The name "update_short_link" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Update a short link. Changing `link` retargets it — the short URL keeps working, it just points somewhere new. Also supports renaming and toggling location tracking.
Annotations the server declares
- title: Update short link
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Changes things 9Claude Code: ask
build_pageBuild a rich, on-brand landing page from an ordered list of typed blocks, publish it, and return its live URL + its own QR code (`qr_id`; style it with the QR design args here, res…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Build a rich, on-brand landing page from an ordered list of typed blocks, publish it, and return its live URL + its own QR code (`qr_id`; style it with the QR design args here, restyle later with update_qr_code — don't create another). This is the 'make me a page for X' tool — e.g. an event, product, restaurant, link-in-bio, or a scan-to-enter sweepstakes. Each block is {type, content}; call list_block_types first to see every type and its content shape. Blocks render in order in a centered column; a 'header' block (name/bio/photo) is the profile.
Annotations the server declares
- title: Build landing page
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
create_folderCreate a folder to organise QR codes, optionally nested under a parent.No findings
Why it is in this group
- The name "create_folder" says "create": a word for a change.
Description, as the server wrote it Create a folder to organise QR codes, optionally nested under a parent. Creating a folder that already exists (same name, same parent) returns the existing one, so it's safe to call repeatedly.
Annotations the server declares
- title: Create folder
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
create_formCreate a form, define its fields, brand it, publish it, and return a shareable short link + QR in one step.No findings
Why it is in this group
- The name "create_form" says "create": a word for a change.
Description, as the server wrote it Create a form, define its fields, brand it, publish it, and return a shareable short link + QR in one step. Use for 'make me a form to collect X, give me a link and QR to share it'. The result's `share_url` is the public link and `qr_id` is the form's own dynamic QR code (image included) — never call create_qr_code or create_short_link for a form's link; pass QR design args (primary_color, eye_style, frame, logo_url, …) here to style that code in the same call. Supports on-brand styling (theme/colors/logo), a `redirect_url` after submit, conditional logic (`show_when` on a field) and branching endings (`outcomes`), and a custom domain/slug. Publishing mints a dynamic short link and QR — always dynamic, no static option, since a form has to resolve somewhere live. Notifications are a separate, paid, verified-member setting. To change a form later, use update_form.
Annotations the server declares
- title: Create form
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
create_pageCreate a published micro landing page (link-in-bio style) with a title and a list of links, and return its live URL (`share_url`) + its own QR code (`qr_id`; style it with the QR d…No findings
Why it is in this group
- The name "create_page" says "create": a word for a change.
Description, as the server wrote it Create a published micro landing page (link-in-bio style) with a title and a list of links, and return its live URL (`share_url`) + its own QR code (`qr_id`; style it with the QR design args here; don't create another). Use this for 'make me a page with these links and a QR to share it'. The page is a dynamic destination you can keep; it counts toward the workspace's page limit.
Annotations the server declares
- title: Create link-in-bio page
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
create_pdf_qrCreate a dynamic QR code and short link for a PDF (menus, flyers, tickets).No findings
Why it is in this group
- The name "create_pdf_qr" says "create": a word for a change.
Description, as the server wrote it Create a dynamic QR code and short link for a PDF (menus, flyers, tickets). Host the PDF by passing `pdf_url` (a link Hovercode fetches) or `pdf_base64` (the file's base64 bytes). Returns a shareable short link plus a rendered QR. Because it's dynamic you can later swap the PDF without reprinting the code — always dynamic, no static option here. Draws on the same free, per-workspace dynamic-code allowance as create_qr_code (list_workspaces' `dynamic_qr_limit`); past that limit this call fails asking for an upgrade, it isn't paid-only from the start.
Annotations the server declares
- title: Create PDF QR code
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
create_qr_codeCreate a Hovercode QR code and return its details plus a rendered PNG.No findings
Why it is in this group
- The name "create_qr_code" says "create": a word for a change.
Description, as the server wrote it Create a Hovercode QR code and return its details plus a rendered PNG. `dynamic: true` makes the destination changeable later and tracks scans; `dynamic: false` (the default, 'static') encodes the destination directly into the code image — it can never be retargeted or tracked, and this choice can't be changed after creation. When the request doesn't make clear which one someone wants, don't guess: stop and ask this exact question, verbatim, before calling this tool — 'Should this be trackable and editable later, or fixed permanently once printed?' — then wait for the answer. Dynamic codes are included free up to a per-workspace limit (list_workspaces' `dynamic_qr_used`/`dynamic_qr_limit`) — not a paid-only feature; past that limit this call fails asking for an upgrade. Supports full design control (colors, pattern, eye style, frames with captions, logo). Not for Hovercode forms, pages, or short links: those already have their own QR code (returned as `qr_id` / `id`) — use download_qr or update_qr_code with that id instead.
Annotations the server declares
- title: Create QR code
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
create_qr_codes_bulkCreate many QR codes at once from a list — e.g.No findings
Why it is in this group
- The name "create_qr_codes_bulk" says "create": a word for a change.
Description, as the server wrote it Create many QR codes at once from a list — e.g. 'make codes for these 20 product URLs in our brand colors'. All codes share the design/options you pass (colors, pattern, frame, dynamic, template). Returns the created codes and any per-item errors. Max 100 per call.
Annotations the server declares
- title: Create QR codes in bulk
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
create_short_linkCreate a tracked short link for a URL.No findings
Why it is in this group
- The name "create_short_link" says "create": a word for a change.
Description, as the server wrote it Create a tracked short link for a URL. It comes with its own QR code (same id; use download_qr). Supports a custom slug and a custom domain. The destination can be changed later with update_short_link, and clicks are tracked. Never shorten a link that is already a Hovercode short link, form link, or page link — those are already tracked and already have a QR code.
Annotations the server declares
- title: Create short link
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
set_workspaceSwitch the current (default) workspace by id or name.No findings
Why it is in this group
- The name "set_workspace" says "set": a word for a change.
Description, as the server wrote it Switch the current (default) workspace by id or name. New codes, forms, and pages are created in the current workspace unless a tool is given an explicit `workspace`.
Annotations the server declares
- title: Switch workspace
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 18Claude Code: allow
download_qrGet downloadable, print-ready image links for a QR code — a high-resolution PNG and a vector SVG (best for print/large sizes).No findings
Why it is in this group
- The description's first verb is "get": a word for reading.
Description, as the server wrote it Get downloadable, print-ready image links for a QR code — a high-resolution PNG and a vector SVG (best for print/large sizes). Returns URLs you can share or save.
Annotations the server declares
- title: Download QR code files
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_analyticsScan analytics over a period: totals, unique scanners, scans-by-day, and top countries/cities/OS/browsers.No findings
Why it is in this group
- The name "get_analytics" says "get": a word for reading.
Description, as the server wrote it Scan analytics over a period: totals, unique scanners, scans-by-day, and top countries/cities/OS/browsers. Pass a QR code `id` for one code, or omit it for the whole workspace (which also returns the top codes). Use this to answer 'how did my codes do this month and where were people scanning?'.
Annotations the server declares
- title: Get scan analytics
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_formGet one form's details: status, response count, share link, and QR.No findings
Why it is in this group
- The name "get_form" says "get": a word for reading.
Description, as the server wrote it Get one form's details: status, response count, share link, and QR.
Annotations the server declares
- title: Get form
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_form_responsesList a form's submissions (newest first) so you can read or summarize them — e.g.No findings
Why it is in this group
- The name "get_form_responses" says "get": a word for reading.
Description, as the server wrote it List a form's submissions (newest first) so you can read or summarize them — e.g. 'summarize this week's feedback' or 'any complaints in the responses?'.
Annotations the server declares
- title: Get form responses
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_pageGet one landing page's details: status, live URL, QR, and its blocks (each block's id + type) so you can edit it with update_page.No findings
Why it is in this group
- The name "get_page" says "get": a word for reading.
Description, as the server wrote it Get one landing page's details: status, live URL, QR, and its blocks (each block's id + type) so you can edit it with update_page.
Annotations the server declares
- title: Get landing page
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_qr_activityList recent scan events for a dynamic QR code (time, location, device).No findings
Why it is in this group
- The name "get_qr_activity" says "get": a word for reading.
Description, as the server wrote it List recent scan events for a dynamic QR code (time, location, device). Use this to answer questions like where or when a code was scanned.
Annotations the server declares
- title: Get QR code scan activity
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_qr_codeGet one QR code's details and scan analytics (total and unique scans), plus a rendered PNG.No findings
Why it is in this group
- The name "get_qr_code" says "get": a word for reading.
Description, as the server wrote it Get one QR code's details and scan analytics (total and unique scans), plus a rendered PNG.
Annotations the server declares
- title: Get QR code
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_short_linkGet one short link's details, destination, click counts, and QR.No findings
Why it is in this group
- The name "get_short_link" says "get": a word for reading.
Description, as the server wrote it Get one short link's details, destination, click counts, and QR.
Annotations the server declares
- title: Get short link
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_short_link_activityList recent click events for a short link (time, location, device).No findings
Why it is in this group
- The name "get_short_link_activity" says "get": a word for reading.
Description, as the server wrote it List recent click events for a short link (time, location, device).
Annotations the server declares
- title: Get short link click activity
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_block_typesList the page BLOCK TYPES available to build_page, each with its content JSON Schema.No findings
Why it is in this group
- The name "list_block_types" says "list": a word for reading.
Description, as the server wrote it List the page BLOCK TYPES available to build_page, each with its content JSON Schema. Call this first when composing a rich page so you know the vocabulary (header, link, text, image, button, video, gallery, faq, countdown, socials, divider, form, …).
Annotations the server declares
- title: List page block types
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_foldersList the workspace's folders with their full path, code count, id and slug.No findings
Why it is in this group
- The name "list_folders" says "list": a word for reading.
Description, as the server wrote it List the workspace's folders with their full path, code count, id and slug. Use a folder's id or slug with create_qr_code / update_qr_code (`folder`) to file codes, or with list_qr_codes to filter.
Annotations the server declares
- title: List folders
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_formsList the forms in a workspace, newest first.No findings
Why it is in this group
- The name "list_forms" says "list": a word for reading.
Description, as the server wrote it List the forms in a workspace, newest first. Optional `query` searches by title.
Annotations the server declares
- title: List forms
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_pagesList the landing pages in a workspace, newest first.No findings
Why it is in this group
- The name "list_pages" says "list": a word for reading.
Description, as the server wrote it List the landing pages in a workspace, newest first.
Annotations the server declares
- title: List landing pages
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_qr_codesList QR codes in a workspace, newest first.No findings
Why it is in this group
- The name "list_qr_codes" says "list": a word for reading.
Description, as the server wrote it List QR codes in a workspace, newest first. Optional `query` searches destination, name, and tags. `folder` narrows to one folder, `include_tags` adds each code's tags (its folder is always shown), and `include_scans` adds scan counts — use it instead of calling get_analytics once per code.
Annotations the server declares
- title: List QR codes
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_short_linksList short links in a workspace, newest first.No findings
Why it is in this group
- The name "list_short_links" says "list": a word for reading.
Description, as the server wrote it List short links in a workspace, newest first. Optional `query` searches URL, name, and slug.
Annotations the server declares
- title: List short links
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_tagsList the workspace's tags (title + id).No findings
Why it is in this group
- The name "list_tags" says "list": a word for reading.
Description, as the server wrote it List the workspace's tags (title + id). Tags are attached with create_qr_code (`tags`) or update_qr_code (`add_tags` / `remove_tags`), and list_qr_codes searches by tag.
Annotations the server declares
- title: List tags
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_templatesList the workspace's saved QR design templates.No findings
Why it is in this group
- The name "list_templates" says "list": a word for reading.
Description, as the server wrote it List the workspace's saved QR design templates. Pass a template id to create_qr_code to reuse its branding.
Annotations the server declares
- title: List design templates
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_workspacesList the workspaces this account can access, with their ids; the current (default) one is marked.No findings
Why it is in this group
- The name "list_workspaces" says "list": a word for reading.
Description, as the server wrote it List the workspaces this account can access, with their ids; the current (default) one is marked. Tools default to the current workspace, so you only need `workspace` to target a different one.
Annotations the server declares
- title: List workspaces
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.1. Values in angle brackets are yours to fill in.
claude mcp add --transport http hovercode https://hovercode.com/mcp/Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__hovercode__list_workspaces",
"mcp__hovercode__get_analytics",
"mcp__hovercode__list_qr_codes",
"mcp__hovercode__download_qr",
"mcp__hovercode__get_qr_code",
"mcp__hovercode__get_qr_activity",
"mcp__hovercode__list_templates",
"mcp__hovercode__list_folders",
"mcp__hovercode__list_tags",
"mcp__hovercode__list_forms",
"mcp__hovercode__get_form",
"mcp__hovercode__get_form_responses",
"mcp__hovercode__get_page",
"mcp__hovercode__list_pages",
"mcp__hovercode__list_block_types",
"mcp__hovercode__get_short_link",
"mcp__hovercode__list_short_links",
"mcp__hovercode__get_short_link_activity"
],
"ask": [
"mcp__hovercode__create_qr_code",
"mcp__hovercode__build_page",
"mcp__hovercode__create_form",
"mcp__hovercode__create_short_link",
"mcp__hovercode__set_workspace",
"mcp__hovercode__create_qr_codes_bulk",
"mcp__hovercode__create_pdf_qr",
"mcp__hovercode__create_folder",
"mcp__hovercode__create_page"
],
"deny": [
"mcp__hovercode__update_qr_code",
"mcp__hovercode__delete_qr_code",
"mcp__hovercode__update_folder",
"mcp__hovercode__delete_folder",
"mcp__hovercode__update_form",
"mcp__hovercode__update_page",
"mcp__hovercode__delete_page",
"mcp__hovercode__update_short_link",
"mcp__hovercode__delete_short_link"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as hovercode. Review it before you use it.