qURL
Mint, resolve, audit, and rotate scope-limited expiring access links (qURLs) for AI agents.
Connector by layervai · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying qURL?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.
npx agentmarket install connector/layervai-qurl-mcp
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Use cases: identity-access
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 5 read · 12 write · 7 delete · 2 not yet classified
- Secrets
- 3 (API keys, tokens or passwords)
- Install scripts
- None found
- Runs as
- Node.js package
Tools by what they do 26
Read from the source code; the running server may list different tools.
Read 5 · Look things up without changing anything.
audit-linksget_qurllist_cridslist_qurl_sessionslist_qurls
Write 12 · Create, change, send or run things.
batch_create_qurlscreate_qurlextend_qurlmint_linkpublish_cridresolve_qurlshare_by_cridupdate_qurlupdate_qurl_tokenupload_file_data_qurlupload_file_qurlupload_text_qurl
Delete 7 · Delete, drop, revoke or wipe things.
delete_criddelete_qurlmanage_crid_accessmanage_crid_requestsrevoke_qurl_tokenset_crid_sharingterminate_qurl_sessions
Not yet classified 2 · We could not tell from the name and description.
rotate-accesssecure-a-service
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
QURL_API_KEYQURL_SMTP_PASSWORDQURL_SMTP_USERNAME
Other settings (environment variables or headers).
MCP_MAX_UPLOAD_FILE_DATA_BYTESQURL_API_URLQURL_CONNECTOR_URLQURL_MCP_CONFIGQURL_SMTP_ALLOWED_RECIPIENTSQURL_SMTP_ALLOWED_RECIPIENT_DOMAINSQURL_SMTP_FROM_EMAILQURL_SMTP_FROM_NAMEQURL_SMTP_HOSTQURL_SMTP_MAX_RECIPIENTS_PER_HOURQURL_SMTP_MAX_RECIPIENTS_PER_MESSAGEQURL_SMTP_PORT
Show 1 more settings
QURL_SMTP_SECURE
Network hosts it talks to 15
::1· found in codeapi.layerv.ai· found in codeapi.layerv.xyz· found in codeapi.qurl.link· found in codeauth.layerv.ai· found in codebilling.stripe.com· found in codecheckout.stripe.com· found in codegithub.com· found in codeglama.ai· found in codelayerv.ai· found in codepay.stripe.com· found in codequrl.link· found in coder-ojpxe33vorsw63tmpeydc.qurl.site· found in coder-ojpxe33vorsw63tmpeyde.qurl.site· found in coderaw.githubusercontent.com· found in code
Files it touches
/home/linuxbrew/.linuxbrew/bin/opt/homebrew/bin/srv/qurl-media/example.mp4- Your home directory (~)
Tools (26)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
audit-linksReview all active qURLs and identify expiring links, token counts, missing metadata, or potential issues.
batch_create_qurlsBatch Create qURLsCreate up to 100 qURLs in a single request. The single-call alternative to looping `create_qurl` — saves round trips and returns a single envelope of per-item results. Only use this when the user explicitly wants multiple qURLs in one request. Never use it for a single URL, a single file, a single image, or a single attachment. Do not use this tool for uploaded files, image attachments, PDFs, or base64 file content — use `upload_file_data_qurl` (HTTP mode) or `upload_file_qurl` (stdio mode) instead. **Not transactional:** items succeed or fail independently (see `succeeded`/`failed` counts and…
create_qurlCreate qURLCreate a qURL — a policy-bound, expiring access link that gates a target URL with optional IP/geo/UA/AI-agent filters and time or session limits. **When to use:** minting a fresh protected access link for share-once or time-limited access (e.g. send a customer a 24-hour download link, gate a doc behind an IP allowlist, distribute a one-time-use credential to a contractor). **Do NOT use this for chat-uploaded images, PDFs, screenshots, or file attachments.** In HTTP MCP mode, those should go through `upload_file_data_qurl`; in stdio mode, use `upload_file_qurl`. **When NOT to use:** use `mint_l…
delete_cridDelete a CRID permanentlycan change or delete dataPermanently delete a resource this machine published, with the qURL CLI. This cannot be undone: existing links stop working, the CRID can never be shared again, and publishing the same target later makes a different CRID. Confirm with the user first, and prefer set_crid_sharing with stop, which is reversible. Deleting a resource that is already deleted succeeds with already_gone true.
delete_qurlDelete qURLcan change or delete dataPermanently revoke a qURL — the link and every access token under it stop working immediately. **This action is irreversible.** Use this when you want to cut off access entirely (compromised link, departed user, end-of-engagement). It does not revoke links minted by the upload tools, which belong to the file connector; those cannot be revoked from this server. Use `update_qurl` instead when you only need to shorten the resource's expiration, retag, or rename, and `extend_qurl` to keep a link open longer — those preserve the existing access tokens. **Idempotent:** the API returns 404 for re-del…
extend_qurlExtend qURL ExpirationKeep a qURL link open longer by pushing out the link's expiration by a relative duration. Pass a link's `q_` display ID as `resource_id`, or a resource ID plus `qurl_id`; a resource with exactly one active link needs no `qurl_id` (unless it has more than the 100 links a read lists). Use this when the only change you need is more time on the clock. Use `update_qurl_token` instead to set an absolute `expires_at` or change the link's label, policy, or sessions. Use `revoke_qurl_token` or `delete_qurl` when you want to cut off access. Links minted by the upload tools belong to the file connector a…
get_qurlGet qURLread-onlyFetch a single qURL resource by ID and return its current state plus a bounded preview of access tokens. Use this when you have a specific resource ID (public key, CRID, or legacy r_ ID) or qURL display ID (q_ prefix) — q_ IDs are auto-resolved to their parent resource. Do not use this to create a new qURL for a freshly uploaded image, PDF, screenshot, or file attachment. For chat-uploaded file content in HTTP MCP mode, use `upload_file_data_qurl` instead. Use `list_qurls` instead when you need to discover qURLs by status, date range, or search query. Use `resolve_qurl` instead when you have a…
list_cridsList my published CRIDsread-onlyList the resources this machine's qURL identity has published, with the qURL CLI: CRID, target, type (url, or tunnel for a local app), status, and whether it is private. Only active resources unless include_deleted is true. Pages: keep calling with next_cursor until has_more is false; an empty page with has_more true is normal. Read consumer_access on each item: when present, use manage_crid_access and its policy; only legacy resources without consumer_access use manage_crid_requests or share_by_crid. Also use it to find a CRID before set_crid_sharing or delete_crid. Read-only.
list_qurl_sessionsList qURL Sessionsread-onlyList active access sessions for a qURL resource. Use this to inspect who currently has live access before rotating, revoking, or terminating sessions. Use `terminate_qurl_sessions` when active sessions should be ended, and use `get_qurl` when you need token/resource metadata instead of active session state. **Behavior:** read-only and idempotent. Empty `data[]` means no active sessions for the resource.
list_qurlsList qURLsread-onlyList qURL resources, paginated and optionally filtered by status, date range, or search text. **When to use:** discovery — finding qURLs by status (e.g. everything still active), auditing date ranges, or full-text search across descriptions and target URLs (via the `q` parameter). Filters AND together (e.g. `status: 'active'` + `expires_before: '2026-05-01T00:00:00Z'` returns active qURLs about to expire). **When NOT to use:** use `get_qurl` instead when you already have a specific resource ID — it returns the same per-resource shape more cheaply and includes the `qurls[]` per-token detail tha…
manage_crid_accessManage private CRID accesscan change or delete dataPublisher access control. Configure the next policy version, send or resend an email invitation, list invitations or consumer grants, approve or deny a request, approve a credential with id new, or revoke access. Read the current version before a decision; configuring the first policy on an existing private resource uses expected_version 0. For approve, put expected_version inside approval; zero is allowed only for id new. After an uncertain invite result, list invitations before retrying. Invite-only access has no consumer requests. Contract approval requires a trusted publisher entitlement r…
manage_crid_requestsManage CRID access requestscan change or delete dataOnly for legacy resources without consumer_access; use manage_crid_access for consumer_access policies. Handle people asking for access to a private CRID, with the qURL CLI. list shows pending requests (all resources when crid is omitted); approve lets one person in by the six-digit code they gave the publisher; deny refuses a request by device id; list_approved shows approved people and allowed device keys; remove_approved takes one approved person's access away by device id; turn_on and turn_off control whether people can ask. Approve only with a code the person the publisher means to let in…
mint_linkMint Access LinkMint a fresh access link for an existing qURL resource — same one-shot display semantics as `create_qurl.qurl_link`. Use this to issue additional access links to a resource without creating a brand-new qURL (e.g. a second recipient, a replacement after the original was lost). Not for files from the upload tools: their links come from the file connector, so a link minted here on an upload's `resource_id` does not open the file; run the upload tool again instead. Use `create_qurl` instead when you want a brand-new resource with its own target_url and policy. Use `update_qurl` when you only want …
publish_cridPublish a private CRIDPublish a URL with private access. Choose keys for approved credentials, invite_only for publisher email invitations with no access requests, email_capture for verified email capture with consent, review for verified email requests, or contract for a publisher backend entitlement receipt. This tool does not verify payment. Use version 1 for creation. Repeating this call creates another resource; after an uncertain result use get_qurl or list_qurls before retrying. For local apps use the qURL CLI. Public sharing uses create_qurl.
resolve_qurlResolve qURL Access TokenRedeem a qURL access token (the `at_` prefix you pulled out of a `qurl_link`) to reveal the underlying URL and obtain a time-bound, IP-bound network access grant. Use this when an agent has been handed an access token and needs to fetch the protected resource — after a successful resolve, requests from `access_grant.src_ip` are permitted to the `target_url` for `access_grant.expires_in` seconds. Use `get_qurl` instead when you have a resource identifier (public key, CRID, or legacy `r_` ID) or qURL display ID (`q_`) and want admin-side details rather than end-user redemption. **Side-effects:**…
Show 11 more tools
revoke_qurl_tokenRevoke qURL Tokencan change or delete dataRevoke one qURL token under a resource without revoking the whole resource. Use this when a single recipient/link should stop working but sibling qURLs on the same `resource_id` must remain active. Use `delete_qurl` instead when you want to revoke the resource and every token under it. **Constraints:** requires the parent `resource_id` (public key, CRID, or legacy `r_` ID) and the token display ID (`q_…`). Re-revoking an inactive token returns an API error rather than being treated as idempotent.
rotate-accessRotate a qURL by revoking the existing link and creating a fresh one with the same target.
secure-a-serviceGuide through creating a qURL to protect a service with appropriate security policies (expiration, session limits, IP/geo allowlists, AI-agent blocking).
set_crid_sharingStop or start sharing a local appcan change or delete dataStop, start, or restart sharing a local app published from this machine, with the qURL CLI. stop is reversible and keeps the CRID, so prefer it to delete_crid. start needs the local app to be reachable again. restart re-registers the share and ends sessions that are open. Applies only to local apps, not to remote URL resources.
share_by_cridShare qURL by CRIDOnly for legacy resources without consumer_access; check list_crids first and use manage_crid_access and the policy's invitation or grant flow for consumer_access resources. Make a short-lived access link for a CRID this machine published, with the qURL CLI. The CLI verifies the link against the CRID before returning it. The link is a bearer secret: whoever has it can use it until it expires, so hand it only to the person it is for, show it once, and never put it in logs or public channels. Links are one-time use by default for local apps; if single_use is not true, say the link is reusable in…
terminate_qurl_sessionsTerminate qURL Sessionscan change or delete dataTerminate active access sessions for a qURL resource. Use this after shortening access, rotating a link, or responding to a suspected leak when already-open sessions should end immediately. Pass `session_id` to terminate one active session; omit it to terminate all active sessions for the resource. Use `list_qurl_sessions` first when you need to inspect current sessions before taking action. **Side-effects:** existing access sessions are closed; qURL tokens themselves are not revoked.
update_qurlUpdate qURLUpdate a qURL resource's expiration ceiling, tags, description, custom domain, or proxy host-header behavior. `extend_by`/`expires_at` here move the resource's own expiry, which does not keep an individual link open longer; use `extend_qurl` or `update_qurl_token` to change a link's expiry. Accepts resource public keys, CRIDs, legacy `r_` IDs, and `q_` display IDs for expiration, tags, and description updates (q_ is auto-resolved); custom domain and preserve_host updates require a resource identifier (public key, CRID, or legacy `r_` ID) because the qURL API now serves them from `PATCH /v1/res…
update_qurl_tokenUpdate qURL TokenUpdate one qURL token under a resource: expiration, label, access policy, max sessions, or session duration. Use this when you need to change a specific `q_…` token without changing sibling tokens or resource-level metadata. Use `update_qurl` instead for resource-level description/tags/custom-domain changes, and use `revoke_qurl_token` when the token should stop working entirely. **Constraints:** `extend_by` and `expires_at` are mutually exclusive; at least one token update field must be set. Returns the updated token summary.
upload_file_data_qurlUpload File Data qURLUpload base64-encoded PDF or raster image content to a qURL connector, then mint an access link for it. This is the correct tool for a single in-chat image, PDF, or file attachment in either MCP transport, especially when the user wants 'the qURL of this image/file' or wants the generated link emailed. Use this when you have the file data available but cannot provide a server-local file path. Use `upload_file_qurl` when the file already exists on the MCP server host, use `create_qurl` when you already have a URL. Each call uploads the file again and returns one new link; `mint_link` cannot re-…
upload_file_qurlUpload File qURLUpload a local PDF or raster image file to a qURL connector, then mint an access link for it. Use this when the content already exists on the MCP server host and you need a shareable file qURL rather than a proxy to an existing website URL. This stdio-only tool can read any supported file that the local MCP process user can access; invoke it only for a path the user explicitly chose to share. Deploy stdio under a restricted OS account or container whose readable files are limited to intended shareable content. Use `create_qurl` when you already have a URL. Each call uploads the file again and …
upload_text_qurlUpload Text qURLRender text content into a temporary PDF, upload that PDF to a qURL connector, then mint an access link for it. Use this when the user gives you text content and wants a qURL without first creating a local file or hosting a URL somewhere else. Use `upload_file_data_qurl` for binary/image/PDF attachments, use `upload_file_qurl` when a file already exists on disk, and use `create_qurl` when you already have a target URL. In v1 the tool does not apply markdown rich-text rendering; it writes the provided content into a plain-text PDF, uploads it to `${QURL_CONNECTOR_URL}/api/upload`, then mints th…
Signals
- Stars
- 4
- Forks
- 3
- Open issues
- 21
- Weekly downloads
- 707
- Last commit
- Oct 22, 2026 (8 days ago)
- Last release
- Oct 25, 2026 (5 days ago)
- Last package publish
- Oct 24, 2026 (6 days ago)
From GitHub (fetched Oct 24, 2026) and the package registry.
Details
- Registry name
io.github.layervai/qurl-mcp- Version
- 0.8.3
- Auth
- API key
- Packages
- npm @layervai/qurl-mcp
- License
- MIT
- Repository
- github.com/layervai/qurl-mcp
- Website
- layerv.ai
- First seen
- Oct 24, 2026
- Last checked
- Oct 26, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get qURL running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
qURL MCP server. Agent Mart. https://agentmart.dev/connectors/layervai-qurl-mcp (last updated 2026-10-26)