短.在线
Server Details
Short links + QR tracking URLs for agents. Prefer punycode host. Account required to create links.
- Status
- Healthy
- Uptime
- 98.4% over 23 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 6 tools
The tools are largely distinct: shorten_url vs shorten_urls is cleanly split single-vs-batch with explicit cross-references, and get_link vs resolve_short_url are separated by auth/ownership vs public lookup. create_qr and begin_registration have no overlap with the rest. The only mild friction is that get_link and resolve_short_url both 'look up a link,' but the descriptions clearly delineate ownership and public scope.
All six tools follow a consistent snake_case verb_noun pattern (begin_registration, create_qr, get_link, resolve_short_url, shorten_url, shorten_urls). Minor deviation only in that creation uses two different verbs (create_qr vs shorten_url/shorten_urls), but the overall convention is predictable and readable.
Six tools is well-scoped for a URL shortener, with each tool earning its place: registration fallback, single/batch creation, owner and public reads, and QR generation. No redundant or filler tools.
Core create/resolve/read and QR generation are covered, but the lifecycle is incomplete: there is no list-links operation, no update (destination/expiry), and no delete/deactivate, so an agent cannot manage existing links beyond fetching a single owned link by id. These are notable gaps for a link-management domain.
Available Tools
6 toolsbegin_registrationConnect account · 浏览器注册入口(短.在线)AInspect
客户端无法启动 OAuth 时的后备入口。返回浏览器注册链接。本工具不创建账户,不接收密码,也不代用户同意条款。 Fallback when the client cannot start OAuth. Returns a browser registration link. This tool does not create an account, accept a password, or accept terms for the user.
| Name | Required | Description | Default |
|---|---|---|---|
| locale | No | Browser signup page language. Does not accept email, password, or acceptance. API language preference. Canonical values: en and zh-CN. Documented aliases normalized to the canonical value: zh-cn, zh-Hans, zh-hans, zh_Hans, zh_hans. Traditional Chinese is not supported. EN, ZH-CN, and bare zh are rejected. Omitted or blank defaults to en. This preference does not rewrite URL bytes, translate parameter names, or use the caller's location. Website routes stay /zh-cn. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations declaring readOnlyHint=false, idempotentHint=false, and destructiveHint=false, the description adds valuable clarification that it does not create an account, accept a password, or accept terms. However, it does not explain the non-read-only nature (e.g., whether it starts a session or changes any state), leaving a gap between the annotation and the described 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 front-loaded with the purpose and key caveats. It is somewhat longer due to full bilingual duplication, but each language block is concise and every sentence contributes useful 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?
Given the low complexity (one optional parameter), the presence of an output schema, and existing annotations, the description covers purpose, usage condition, and behavioral boundaries well. It could be slightly more complete by addressing the non-read-only annotation or parameter usage, but overall it is 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?
Schema description coverage is 100% and the single locale parameter is fully documented in the schema, including aliases, normalization, and defaults. The description adds no parameter-level meaning beyond what the schema already provides, so the baseline of 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 states a specific purpose: a fallback entry point that returns a browser registration link when the client cannot start OAuth. It clearly distinguishes this tool from the unrelated shortener siblings and avoids tautology.
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 names the triggering condition ('when the client cannot start OAuth') and frames the tool as a fallback. No alternative registration tool exists among siblings, so no further routing guidance is needed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_qrQR image · 二维码图片(短.在线)AIdempotentInspect
为已有短链返回可扫描二维码。默认 PNG 512×512,并包含 image/png 图片块。仅当 format 为 svg 时返回 SVG,且不以 image 块返回。矩阵编码带 ?s=qr 的追踪短链(ASCII 主机名),与 GET /v1/links/{id}/qr 相同。需要已注册账户,且必须是该链接的所有者。不新建短链,也不抓取目标地址。PNG 边长仅 256、512、1024,SVG 忽略边长。可能包含短期 image_url 及其到期时间;该链接不是 API key、OAuth 令牌或会话。把返回的图片或 image_url 交给用户。不要自行生成、绘制或合成二维码,也不要声称自己做的二维码来自本连接器。主机无法显示图片时,把链接给用户。 Return a scannable QR for an existing short link. Default PNG is 512×512 and includes an image/png image block. SVG is returned only when format is svg, and not as an image block. The matrix encodes the tracking URL with ?s=qr (ASCII host), the same payload as GET /v1/links/{id}/qr. A registered account that owns the link is required. Does not create a link and does not fetch the destination. PNG size is 256, 512, or 1024. SVG ignores size. A short-lived image_url and its expiry may be included. That URL is not an API key, an OAuth token, or a session. Show the user the returned image or image_url. Do not generate, draw, or synthesize a QR code, and do not claim a QR you made came from this connector. If the host cannot display the image, give the user the link.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | Existing short code. Mutually exclusive with short_url. | |
| size | No | PNG square pixels. Default 512. Allowed: 256, 512, or 1024. Ignored when format is svg. | |
| format | No | Image format. Default png. svg only when requested. SVG ignores size. | |
| short_url | No | Existing short URL to tag for QR. Mutually exclusive with id. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With annotations present this still adds substantial beyond-the-annotations detail: default PNG 512×512 with an image/png block, SVG only when requested and not as an image block, size constraints, a short-lived image_url with expiry, and an explicit security note that the URL is not an API key/OAuth token/session. It also states the auth requirement (owning registered account) and the absence of side effects on the destination -- exactly the kind of context annotations cannot carry.
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 purpose and key constraints (auth, format behavior, presentation guidance) are front-loaded and every sentence carries real information. However the entire description is duplicated in Chinese and English, roughly doubling the length without adding new information, which is a mild structural cost.
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?
An output schema exists, so return-value documentation is not needed, and the description still covers format behavior, auth prerequisites, non-creation of links, the x short-lived image_url caveat, and agent presentation rules. Given the tool's moderate complexity, nothing an agent needs to invoke it correctly is missing.
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 schema already documents id, short_url, size, and format including the mutual exclusion and allowed size values. The description largely restates these (PNG sizes, SVG ignoring size), adding little beyond the schema, so the 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 states a specific verb and resource: it returns a scannable QR for an existing short link, and explicitly notes it is the same payload as GET /v1/links/{id}/qr. It also separates itself from siblings by stating 'Does not create a link', which is exactly what shorten_url does, so an agent can route correctly without opening a schema.
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 gives clear context: use for an existing short link, requires a registered account that owns the link, and explicitly excludes creating a link or fetching the destination. It also tells the agent how to present results (show the image/URL, hand over the link when images can't render). It does not name a specific sibling tool, so not quite a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkGet link · 查询单条链接(短.在线)ARead-onlyIdempotentInspect
按 id 查询一条链接,仅限已登录账户自己的链接。需要已注册账户。公开状态请用 resolve_short_url。 Fetch one link by id, only a link owned by the signed-in account. A registered account is required. For a public status check, use resolve_short_url.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Short code / link id |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds two pieces of context the annotations do not carry: an authentication prerequisite (registered account) and a permission/ownership constraint (only your own links), which materially affects whether a call will succeed.
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 access scope and the alternative tool are front-loaded, and each sentence earns its place. The only inefficiency is that the same content is rendered twice in Chinese and English, roughly doubling the payload, though the parallel structure keeps it scannable.
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 annotations covering the safety profile and an output schema present, the description need not explain return values, and it correctly focuses on auth, ownership scope, and tool routing. It is complete enough to call correctly; only edge-case behavior (e.g., what happens when the id is not owned or not found) is left unspecified.
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 is a single parameter with 100% schema description coverage ("Short code / link id", minLength 1, maxLength 64), so the schema already does the heavy lifting. The description supplies no additional syntax, format, or origin guidance for the id beyond what the schema states, so the baseline of 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 gives a specific verb + resource + selector ("查询一条链接" / "Fetch one link by id") and immediately bounds the scope to links owned by the signed-in account. It also names the sibling tool it is not (resolve_short_url), so an agent can distinguish get_link from resolve_short_url without opening either schema.
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 states the preconditions (registered account required, ownership scope) and explicitly routes the agent to the alternative for the public case: "公开状态请用 resolve_short_url" / "For a public status check, use resolve_short_url." When-to-use and when-not-to-use are both present, with the alternative named.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
resolve_short_urlInspect short link · 查询本站短链(短.在线)ARead-onlyIdempotentInspect
查询本站短码或本站短链的已保存状态;仅 active 时返回目标地址。无需账户。不查询其他短链服务;查询结果不是安全检测结论。 Look up a 短.在线 code or short URL and return its saved state. The destination is returned only when active. No account required. Does not look up other shorteners. The result is not a security verdict.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Full short URL (Unicode or punycode). Mutually exclusive with code. | |
| code | No | Short code. Mutually exclusive with url. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and openWorldHint, so the safety profile is covered. The description still adds value beyond them: it discloses the conditional output rule (destination returned only when active) and an interpretation caveat (not a security verdict), both of which are behavior an agent could not infer from schema or 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?
Content is front-loaded and each sentence carries information, but the entire description is duplicated verbatim in Chinese and English, roughly doubling the token cost for an agent that needs only one pass. The structure is clean; the redundancy is the deduction.
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 an output schema present, return values need no explanation, and annotations cover the safety profile. The description closes the remaining gaps an agent needs: authentication (none), scope (this service only), the conditional nature of the destination field, and the caveat that results are not a security assessment.
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 both parameters are documented there, including their mutual exclusivity. The description only restates 'code or short URL' with no syntax, normalization, or punycode handling details beyond the schema, so the baseline 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?
The description gives a specific verb and resource: look up a 短.在线 code or short URL and return its saved state, with the key qualifier that the destination is returned only when the link is active. It scopes itself to this service's own codes, which helps separate it from generic URL tools, but it never explicitly contrasts with close siblings such as get_link or shorten_url.
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 supplies real constraints — no account required, does not look up other shorteners, and the result is not a security verdict — which implicitly define when the tool is appropriate. However, it never states a positive when-to-use condition relative to alternatives like get_link, so selection still requires inference from sibling names.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shorten_urlShorten URL · 缩短链接(短.在线)AIdempotentInspect
创建一个 HTTP 或 HTTPS 短链。需要已注册账户。返回状态;链接为 active 时返回 Unicode 显示地址和 ASCII 地址。两条及以上请用 shorten_urls。重试同一操作须复用同一个 idempotency_key。 Create one HTTP or HTTPS short link. A registered account is required. Returns the state, and when active, the Unicode display URL and the ASCII URL. For two or more, use shorten_urls. A retry of the same operation must reuse the same idempotency_key.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl. | |
| alias | No | Optional custom path segment (stored lowercase). Do not send customSlug. | |
| title | No | Optional link title, at most 256 characters. | |
| locale | No | API language preference. Canonical values: en and zh-CN. Documented aliases normalized to the canonical value: zh-cn, zh-Hans, zh-hans, zh_Hans, zh_hans. Traditional Chinese is not supported. EN, ZH-CN, and bare zh are rejected. Omitted or blank defaults to en. This preference does not rewrite URL bytes, translate parameter names, or use the caller's location. Website routes stay /zh-cn. | |
| idempotency_key | Yes | Client-generated unique key for this create. Required. Replays within 24h. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and destructiveHint=false, so the description is not carrying the safety burden alone. It still adds real context beyond them: the account requirement and the returned state / display-URL behavior. It stops short of describing permissions, quota, or failure modes, so it is strong but not exhaustive.
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 routing constraint and the alternative are front-loaded ahead of the less critical return-value sentence. The bilingual mirroring roughly doubles the length, which is defensible given the explicit locale handling but costs some tightness. Every sentence carries content, with no filler.
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 single-resource create tool, the description covers the account precondition, the sibling routing rule, idempotent retry behavior, and the return state; an output schema exists so return shape need not be spelled out. The only gap is failure/error behavior and any quota limits, which is minor against the annotation coverage.
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 url, alias, title, locale, and idempotency_key are all documented in the schema itself, including alias lowercase normalization and locale canonicalization. The description only restates the idempotency_key reuse rule, adding little beyond the structured fields. Baseline 3 is correct.
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?
States a specific verb and resource ('Create one HTTP or HTTPS short link') with explicit scope (exactly one link, HTTP/HTTPS only), and it names the sibling that handles the multi-link case ('For two or more, use shorten_urls'). An agent can distinguish it from shorten_urls, create_qr, and resolve_short_url without opening any schema.
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?
Gives both a precondition ('A registered account is required') and an explicit alternative with its selecting condition ('For two or more, use shorten_urls'). It also states the retry rule ('A retry of the same operation must reuse the same idempotency_key'), which is the kind of action guidance that prevents duplicate links.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
shorten_urlsBatch shorten · 批量短链(短.在线)AIdempotentInspect
一次同步创建 1 到 100 条短链。按 client_ref 对应结果,允许部分成功。需要已注册账户。批量重试只有三种情况,不要混用。示例:key 为 batch-1,两项 client_ref 分别为 notes(https://example.com/notes)和 draft(https://example.com/draft)。notes 成功,draft 的 retryable 为 true。(1) 传输结果不确定(没有拿到已完成的响应、IDEMPOTENCY_IN_PROGRESS、幂等锁不可用,或因瞬时数据库错误且一条都未创建而返回 503):用同一个 key 原样重发整批。已完成的批次返回已保存的结果,notes 不会再次创建。key 已被释放时,同一批会重新执行。(2) 已完成且某项 retryable 为 true:重放 batch-1 只返回已保存的结果,不会重试 draft。只用新 key(例如 batch-1-draft)发送 draft,并保留 client_ref draft,不要带上 notes。去掉 notes 后仍用 batch-1 会返回 IDEMPOTENCY_CONFLICT。(3) 校验错误:改正请求,不要把同一份无效请求当作网络重试。key 尚未保存的 400(重复 client_ref、缺少 items、BATCH_TOO_LARGE)改正后可以继续用同一个 key。已完成且 retryable 为 false 的项已保存;改正文后用原 key 会返回 IDEMPOTENCY_CONFLICT,改正后的项必须用新 key。 Create 1 to 100 short links in one synchronous request. Match each result by client_ref. Partial success is allowed. A registered account is required. Batch retry has three cases; do not mix them. Worked example: key batch-1 with client_ref notes (https://example.com/notes) and draft (https://example.com/draft). notes succeeds and draft is retryable true. (1) Uncertain transport outcome — no completed body, IDEMPOTENCY_IN_PROGRESS, an unavailable idempotency lock, or 503 because a transient database error created nothing: resend the entire unchanged batch with the same key. A completed batch returns the stored result and notes is not created again. A released key runs that same batch again. (2) Completed batch with retryable true: replaying batch-1 returns the stored body and does not retry draft. Send only draft, keeping client_ref draft, under a new key such as batch-1-draft. Do not include notes. Dropping notes and reusing batch-1 returns IDEMPOTENCY_CONFLICT. (3) Validation error: fix the request. Do not resend the same invalid body as a network retry. A 400 before the key is stored (duplicate client_ref, missing items, BATCH_TOO_LARGE) may reuse the key after the body is corrected. A completed item with retryable false is stored; a changed body on that key returns IDEMPOTENCY_CONFLICT, so send the corrected item with a new key.
| Name | Required | Description | Default |
|---|---|---|---|
| items | Yes | Synchronous batch items (1 to 100). Each item creates one short link. | |
| idempotency_key | Yes | Client-generated unique key for this create. Required. Replays within 24h. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true and readOnlyHint=false, but the description goes far beyond them: partial success allowed, same-key replay returns stored results, key release re-runs the batch, IDEMPOTENCY_CONFLICT triggers, and 24h replay window. This is exactly the behavioral context an agent needs for a write tool.
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?
Content is front-loaded correctly (purpose, then example, then the three cases), and the retry detail earns its place given the idempotency complexity. But the entire body is duplicated in Chinese and English, roughly doubling token cost without adding 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?
With an output schema present, return values need not be described, and the description covers auth requirement, partial success, correlation, and all retry paths. An agent has everything needed to call this 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 the baseline is 3, but the description adds real meaning: results are correlated by client_ref, and the worked example binds client_ref, idempotency_key, and retry behavior together in a way the schema does not.
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 states a specific verb+resource+scope: 'Create 1 to 100 short links in one synchronous request,' plus partial-success and client_ref matching semantics. This distinguishes it from the single-link sibling shorten_url by batch scope, though it never names that alternative explicitly.
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 gives rich conditional guidance for the three idempotency retry cases and states the prerequisite 'A registered account is required.' However, it never tells the agent when to pick this tool over shorten_url (one URL) versus the batch version, leaving the sibling choice to inference.
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.
1 tool update
- Changed
create_qr1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "id": { - "type": "string" - }, - "image_available": { - "const": true, - "type": "boolean" - }, - "mime_type": { - "description": "image/png or image/svg+xml.", - "enum": [ - "image/png", - "image/svg+xml" - ], - "type": "string" - }, - "ok": { - "const": true, - "type": "boolean" - }, - "pixel_size": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "PNG square pixels. Null for SVG." - }, - "qr_tracking_url": { - "description": "ASCII tracking URL encoded in the image, including ?s=qr.", - "type": "string" - }, - "request_id": { - "type": "string" - }, - "short_url": { - "type": "string" - }, - "short_url_ascii": { - "type": "string" - }, - "state": { - "const": "active", - "type": "string" - }, - "status_url": { - "type": "string" - } - }, - "required": [ - "ok", - "request_id", - "id", - "state", - "short_url", - "short_url_ascii", - "qr_tracking_url", - "status_url", - "mime_type", - "pixel_size", - "image_available" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "type": "string" - }, - "error": { - "type": "string" - }, - "id": { - "type": "string" - }, - "image_available": { - "const": false, - "type": "boolean" - }, - "message": { - "type": "string" - }, - "ok": { - "const": false, - "type": "boolean" - }, - "request_id": { - "type": "string" - }, - "retryable": { - "type": "boolean" - }, - "state": { - "enum": [ - "quarantined", - "disabled", - "blocked", - "expired" - ], - "type": "string" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - } - }, - "required": [ - "ok", - "request_id", - "message", - "type", - "title", - "code", - "retryable" - ], - "type": "object" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "host_display": { + "description": "Show the user the returned image or image_url. Do not generate, draw, or synthesize a QR code.", + "type": "string" + }, + "id": { + "type": "string" + }, + "image_available": { + "const": true, + "description": "True only when a PNG image block is included.", + "type": "boolean" + }, + "image_url": { + "description": "Short-lived URL for this QR image. Omitted when signing is not configured. Not an API key, OAuth token, or session.", + "type": "string" + }, + "image_url_expires_at": { + "description": "ISO-8601 expiry of image_url. Present only together with image_url.", + "type": "string" + }, + "mime_type": { + "const": "image/png", + "description": "image/png. A PNG image block is included.", + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "pixel_size": { + "anyOf": [ + { + "const": 256, + "type": "number" + }, + { + "const": 512, + "type": "number" + }, + { + "const": 1024, + "type": "number" + } + ], + "description": "PNG square pixels." + }, + "qr_tracking_url": { + "description": "ASCII tracking URL encoded in the image, including ?s=qr.", + "type": "string" + }, + "request_id": { + "type": "string" + }, + "short_url": { + "type": "string" + }, + "short_url_ascii": { + "type": "string" + }, + "state": { + "const": "active", + "type": "string" + }, + "status_url": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "id", + "state", + "short_url", + "short_url_ascii", + "qr_tracking_url", + "status_url", + "host_display", + "mime_type", + "pixel_size", + "image_available" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "host_display": { + "description": "Show the user the returned image or image_url. Do not generate, draw, or synthesize a QR code.", + "type": "string" + }, + "id": { + "type": "string" + }, + "image_available": { + "const": false, + "description": "False for SVG. Hosts do not render an SVG image block. Use the SVG text, resource, or image_url.", + "type": "boolean" + }, + "image_url": { + "description": "Short-lived URL for this QR image. Omitted when signing is not configured. Not an API key, OAuth token, or session.", + "type": "string" + }, + "image_url_expires_at": { + "description": "ISO-8601 expiry of image_url. Present only together with image_url.", + "type": "string" + }, + "mime_type": { + "const": "image/svg+xml", + "description": "image/svg+xml. SVG is not sent as an image block.", + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "pixel_size": { + "description": "Null for SVG.", + "type": "null" + }, + "qr_tracking_url": { + "description": "ASCII tracking URL encoded in the image, including ?s=qr.", + "type": "string" + }, + "request_id": { + "type": "string" + }, + "short_url": { + "type": "string" + }, + "short_url_ascii": { + "type": "string" + }, + "state": { + "const": "active", + "type": "string" + }, + "status_url": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "id", + "state", + "short_url", + "short_url_ascii", + "qr_tracking_url", + "status_url", + "host_display", + "mime_type", + "pixel_size", + "image_available" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "error": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image_available": { + "const": false, + "type": "boolean" + }, + "message": { + "type": "string" + }, + "ok": { + "const": false, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "state": { + "enum": [ + "quarantined", + "disabled", + "blocked", + "expired" + ], + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "message", + "type", + "title", + "code", + "retryable" + ], + "type": "object" + } +]
6 tool updates
- Changed
begin_registration4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -false - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "expires_at": { + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "resume_token": { + "type": "string" + }, + "signup_url": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "signup_url", + "expires_at", + "resume_token" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + }, + "ok": { + "const": false, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "error", + "code", + "message", + "type", + "title", + "retryable" + ], + "type": "object" + } +] - removed
Output schema / propertiesRemoved value: -{ - "code": { - "type": "string" - }, - "error": { - "type": "string" - }, - "expires_at": { - "type": "string" - }, - "message": { - "type": "string" - }, - "ok": { - "type": "boolean" - }, - "request_id": { - "type": "string" - }, - "resume_token": { - "type": "string" - }, - "retryable": { - "type": "boolean" - }, - "signup_url": { - "type": "string" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "ok" -]
- Changed
create_qr4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -false - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "id": { + "type": "string" + }, + "image_available": { + "const": true, + "type": "boolean" + }, + "mime_type": { + "description": "image/png or image/svg+xml.", + "enum": [ + "image/png", + "image/svg+xml" + ], + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "pixel_size": { + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "PNG square pixels. Null for SVG." + }, + "qr_tracking_url": { + "description": "ASCII tracking URL encoded in the image, including ?s=qr.", + "type": "string" + }, + "request_id": { + "type": "string" + }, + "short_url": { + "type": "string" + }, + "short_url_ascii": { + "type": "string" + }, + "state": { + "const": "active", + "type": "string" + }, + "status_url": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "id", + "state", + "short_url", + "short_url_ascii", + "qr_tracking_url", + "status_url", + "mime_type", + "pixel_size", + "image_available" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "error": { + "type": "string" + }, + "id": { + "type": "string" + }, + "image_available": { + "const": false, + "type": "boolean" + }, + "message": { + "type": "string" + }, + "ok": { + "const": false, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "state": { + "enum": [ + "quarantined", + "disabled", + "blocked", + "expired" + ], + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "message", + "type", + "title", + "code", + "retryable" + ], + "type": "object" + } +] - removed
Output schema / propertiesRemoved value: -{ - "code": { - "type": "string" - }, - "error": { - "type": "string" - }, - "id": { - "type": "string" - }, - "image_available": { - "type": "boolean" - }, - "message": { - "type": "string" - }, - "mime_type": { - "description": "image/png or image/svg+xml.", - "type": "string" - }, - "ok": { - "type": "boolean" - }, - "pixel_size": { - "anyOf": [ - { - "maximum": 9007199254740991, - "minimum": -9007199254740991, - "type": "integer" - }, - { - "type": "null" - } - ], - "description": "PNG square pixels. Null for SVG." - }, - "qr_tracking_url": { - "description": "ASCII tracking URL encoded in the image, including ?s=qr.", - "type": "string" - }, - "request_id": { - "type": "string" - }, - "retryable": { - "type": "boolean" - }, - "short_url": { - "type": "string" - }, - "short_url_ascii": { - "type": "string" - }, - "state": { - "type": "string" - }, - "status_url": { - "type": "string" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "ok", - "request_id" -]
- Changed
get_link4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -false - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "created_at": { + "type": "string" + }, + "destination": { + "type": "string" + }, + "id": { + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "short_url": { + "type": "string" + }, + "short_url_ascii": { + "type": "string" + }, + "state": { + "const": "active", + "type": "string" + }, + "status_url": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "id", + "state", + "created_at", + "status_url", + "short_url", + "short_url_ascii", + "destination" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "expired_at": { + "type": "string" + }, + "id": { + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "state": { + "enum": [ + "quarantined", + "disabled", + "blocked", + "expired" + ], + "type": "string" + }, + "status_url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "id", + "state", + "created_at", + "status_url", + "type", + "title", + "code" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + }, + "ok": { + "const": false, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "error", + "code", + "message", + "type", + "title", + "retryable" + ], + "type": "object" + } +] - removed
Output schema / propertiesRemoved value: -{ - "code": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "destination": { - "type": "string" - }, - "error": { - "type": "string" - }, - "id": { - "type": "string" - }, - "message": { - "type": "string" - }, - "ok": { - "type": "boolean" - }, - "request_id": { - "type": "string" - }, - "retryable": { - "type": "boolean" - }, - "short_url": { - "type": "string" - }, - "short_url_ascii": { - "type": "string" - }, - "state": { - "type": "string" - }, - "status_url": { - "type": "string" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "ok", - "request_id" -]
- Changed
resolve_short_url4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -false - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "created_at": { + "type": "string" + }, + "destination": { + "type": "string" + }, + "id": { + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "short_url": { + "type": "string" + }, + "short_url_ascii": { + "type": "string" + }, + "state": { + "const": "active", + "type": "string" + }, + "status_url": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "id", + "state", + "created_at", + "status_url", + "short_url", + "short_url_ascii", + "destination" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "created_at": { + "type": "string" + }, + "expired_at": { + "type": "string" + }, + "id": { + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "state": { + "enum": [ + "quarantined", + "disabled", + "blocked", + "expired" + ], + "type": "string" + }, + "status_url": { + "type": "string" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "id", + "state", + "created_at", + "status_url", + "type", + "title", + "code" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + }, + "ok": { + "const": false, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "error", + "code", + "message", + "type", + "title", + "retryable" + ], + "type": "object" + } +] - removed
Output schema / propertiesRemoved value: -{ - "code": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "destination": { - "type": "string" - }, - "error": { - "type": "string" - }, - "id": { - "type": "string" - }, - "message": { - "type": "string" - }, - "ok": { - "type": "boolean" - }, - "request_id": { - "type": "string" - }, - "retryable": { - "type": "boolean" - }, - "short_url": { - "type": "string" - }, - "short_url_ascii": { - "type": "string" - }, - "state": { - "type": "string" - }, - "status_url": { - "type": "string" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "ok", - "request_id" -]
- Changed
shorten_url4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -false - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "created_at": { + "type": "string" + }, + "destination": { + "type": "string" + }, + "id": { + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "qr_tracking_url": { + "type": "string" + }, + "qr_url": { + "type": "string" + }, + "request_id": { + "type": "string" + }, + "short_url": { + "type": "string" + }, + "short_url_ascii": { + "type": "string" + }, + "state": { + "const": "active", + "type": "string" + }, + "status_url": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "id", + "state", + "short_url", + "short_url_ascii", + "destination", + "qr_tracking_url", + "qr_url", + "created_at", + "status_url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "created_at": { + "type": "string" + }, + "error": { + "const": "LINK_QUARANTINED", + "type": "string" + }, + "id": { + "type": "string" + }, + "message": { + "type": "string" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "state": { + "const": "quarantined", + "type": "string" + }, + "status_url": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "id", + "state", + "created_at", + "status_url", + "error", + "message" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + }, + "ok": { + "const": false, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "resend_path": { + "description": "Where to resend the verification email when verification would raise this account's limits.", + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "error", + "code", + "message", + "type", + "title", + "retryable" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ok": { + "const": true, + "type": "boolean" + }, + "replay": {}, + "request_id": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "replay" + ], + "type": "object" + } +] - removed
Output schema / propertiesRemoved value: -{ - "code": { - "type": "string" - }, - "created_at": { - "type": "string" - }, - "destination": { - "type": "string" - }, - "error": { - "type": "string" - }, - "id": { - "type": "string" - }, - "message": { - "type": "string" - }, - "ok": { - "type": "boolean" - }, - "qr_tracking_url": { - "type": "string" - }, - "qr_url": { - "type": "string" - }, - "request_id": { - "type": "string" - }, - "resend_path": { - "description": "Where to resend the verification email when verification would raise this account's limits.", - "type": "string" - }, - "retryable": { - "type": "boolean" - }, - "short_url": { - "type": "string" - }, - "short_url_ascii": { - "type": "string" - }, - "state": { - "type": "string" - }, - "status_url": { - "type": "string" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "ok", - "request_id" -]
- Changed
shorten_urls4 fields changed- removed
Output schema / additionalPropertiesRemoved value: -false - added
Output schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "batch_id": { + "type": "string" + }, + "batch_mode": { + "const": "sync", + "type": "string" + }, + "fail_count": { + "type": "number" + }, + "ok": { + "const": true, + "type": "boolean" + }, + "ok_count": { + "type": "number" + }, + "request_id": { + "type": "string" + }, + "results": { + "items": { + "additionalProperties": false, + "properties": { + "client_ref": { + "type": "string" + }, + "ok": { + "type": "boolean" + }, + "problem": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "result": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "retryable": { + "type": "boolean" + } + }, + "required": [ + "client_ref", + "ok" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "ok", + "request_id", + "batch_id", + "batch_mode", + "ok_count", + "fail_count", + "results" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "type": "string" + }, + "error": { + "type": "string" + }, + "message": { + "type": "string" + }, + "ok": { + "const": false, + "type": "boolean" + }, + "request_id": { + "type": "string" + }, + "resend_path": { + "description": "Where to resend the verification email when verification would raise this account's limits.", + "type": "string" + }, + "retryable": { + "type": "boolean" + }, + "title": { + "type": "string" + }, + "type": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id", + "error", + "code", + "message", + "type", + "title", + "retryable" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "ok": { + "const": true, + "type": "boolean" + }, + "request_id": { + "type": "string" + } + }, + "required": [ + "ok", + "request_id" + ], + "type": "object" + } +] - removed
Output schema / propertiesRemoved value: -{ - "batch_id": { - "type": "string" - }, - "batch_mode": { - "const": "sync", - "type": "string" - }, - "code": { - "type": "string" - }, - "error": { - "type": "string" - }, - "fail_count": { - "type": "number" - }, - "message": { - "type": "string" - }, - "ok": { - "type": "boolean" - }, - "ok_count": { - "type": "number" - }, - "request_id": { - "type": "string" - }, - "resend_path": { - "description": "Where to resend the verification email when verification would raise this account's limits.", - "type": "string" - }, - "results": { - "items": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "type": "array" - }, - "retryable": { - "type": "boolean" - }, - "title": { - "type": "string" - }, - "type": { - "type": "string" - } -} - removed
Output schema / requiredRemoved value: -[ - "ok", - "request_id" -]
5 tool updates
- Changed
begin_registration2 fields changed- added
Output schema / properties / titleAdded value: +{ + "type": "string" +} - added
Output schema / properties / typeAdded value: +{ + "type": "string" +}
- Changed
create_qr10 fields changed- added
Input schema / additionalPropertiesAdded value: +false - changed
Input schema / examplesPrevious value: -[ - { - "id": "example" - }, - { - "short_url": "https://xn--s7y.xn--3ds443g/example" - } -]New value: +[ + { + "id": "example" + }, + { + "short_url": "https://xn--s7y.xn--3ds443g/example" + }, + { + "format": "png", + "id": "example", + "size": 512 + } +] - removed
Input schema / oneOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "id": { - "description": "Existing short code. Mutually exclusive with short_url.", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "id" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "short_url": { - "description": "Existing short URL to tag for QR. Mutually exclusive with id.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "short_url" - ], - "type": "object" - } -] - added
Input schema / propertiesAdded value: +{ + "format": { + "description": "Image format. Default png. svg only when requested. SVG ignores size.", + "enum": [ + "png", + "svg" + ], + "type": "string" + }, + "id": { + "description": "Existing short code. Mutually exclusive with short_url.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "short_url": { + "description": "Existing short URL to tag for QR. Mutually exclusive with id.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + }, + "size": { + "anyOf": [ + { + "const": 256, + "type": "number" + }, + { + "const": 512, + "type": "number" + }, + { + "const": 1024, + "type": "number" + } + ], + "description": "PNG square pixels. Default 512. Allowed: 256, 512, or 1024. Ignored when format is svg." + } +} - added
Output schema / properties / mime_typeAdded value: +{ + "description": "image/png or image/svg+xml.", + "type": "string" +} - added
Output schema / properties / pixel_sizeAdded value: +{ + "anyOf": [ + { + "maximum": 9007199254740991, + "minimum": -9007199254740991, + "type": "integer" + }, + { + "type": "null" + } + ], + "description": "PNG square pixels. Null for SVG." +} - added
Output schema / properties / qr_tracking_url / descriptionAdded value: +"ASCII tracking URL encoded in the image, including ?s=qr." - added
Output schema / properties / status_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / titleAdded value: +{ + "type": "string" +} - added
Output schema / properties / typeAdded value: +{ + "type": "string" +}
- Changed
resolve_short_url3 fields changed- added
Input schema / additionalPropertiesAdded value: +{} - removed
Input schema / oneOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "url": { - "description": "Full short URL (Unicode or punycode). Mutually exclusive with code.", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "url" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "code": { - "description": "Short code. Mutually exclusive with url.", - "maxLength": 64, - "minLength": 1, - "type": "string" - } - }, - "required": [ - "code" - ], - "type": "object" - } -] - added
Input schema / propertiesAdded value: +{ + "code": { + "description": "Short code. Mutually exclusive with url.", + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "url": { + "description": "Full short URL (Unicode or punycode). Mutually exclusive with code.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } +}
- Changed
shorten_url4 fields changed- added
Output schema / properties / qr_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / resend_pathAdded value: +{ + "description": "Where to resend the verification email when verification would raise this account's limits.", + "type": "string" +} - added
Output schema / properties / titleAdded value: +{ + "type": "string" +} - added
Output schema / properties / typeAdded value: +{ + "type": "string" +}
- Changed
shorten_urls3 fields changed- added
Output schema / properties / resend_pathAdded value: +{ + "description": "Where to resend the verification email when verification would raise this account's limits.", + "type": "string" +} - added
Output schema / properties / titleAdded value: +{ + "type": "string" +} - added
Output schema / properties / typeAdded value: +{ + "type": "string" +}
7 tool updates
- Changed
begin_registration2 fields changed- changed
Input schema / properties / locale / descriptionPrevious value: -"Browser signup language. Does not accept email, password, or acceptance."New value: +"Browser signup page language. Does not accept email, password, or acceptance. API language preference. Canonical values: en and zh-CN. Documented aliases normalized to the canonical value: zh-cn, zh-Hans, zh-hans, zh_Hans, zh_hans. Traditional Chinese is not supported. EN, ZH-CN, and bare zh are rejected. Omitted or blank defaults to en. This preference does not rewrite URL bytes, translate parameter names, or use the caller's location. Website routes stay /zh-cn." - changed
Input schema / properties / locale / enumPrevious value: -[ - "en", - "zh-CN" -]New value: +[ + "en", + "zh-CN", + "zh-cn", + "zh-Hans", + "zh-hans", + "zh_Hans", + "zh_hans" +]
- Removed
disable_link - Removed
get_link_analytics - Removed
get_links - Changed
shorten_url1 field changed- changed
Input schema / properties / locale / descriptionPrevious value: -"Accepted values: en, zh-CN, and zh-cn (the only case fold of zh-CN). EN, ZH-CN, and bare zh are rejected. Omitted or blank defaults to en."New value: +"API language preference. Canonical values: en and zh-CN. Documented aliases normalized to the canonical value: zh-cn, zh-Hans, zh-hans, zh_Hans, zh_hans. Traditional Chinese is not supported. EN, ZH-CN, and bare zh are rejected. Omitted or blank defaults to en. This preference does not rewrite URL bytes, translate parameter names, or use the caller's location. Website routes stay /zh-cn."
- Changed
shorten_urls1 field changed- changed
Input schema / properties / items / items / properties / locale / descriptionPrevious value: -"Accepted values: en, zh-CN, and zh-cn (the only case fold of zh-CN). EN, ZH-CN, and bare zh are rejected. Omitted or blank defaults to en."New value: +"API language preference. Canonical values: en and zh-CN. Documented aliases normalized to the canonical value: zh-cn, zh-Hans, zh-hans, zh_Hans, zh_hans. Traditional Chinese is not supported. EN, ZH-CN, and bare zh are rejected. Omitted or blank defaults to en. This preference does not rewrite URL bytes, translate parameter names, or use the caller's location. Website routes stay /zh-cn."
- Removed
update_link
2 tool updates
- Changed
create_qr3 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "id": "example" - }, - { - "short_url": "https://example.com/example" - } -]New value: +[ + { + "id": "example" + }, + { + "short_url": "https://xn--s7y.xn--3ds443g/example" + } +] - added
Input schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "id": { + "description": "Existing short code. Mutually exclusive with short_url.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "short_url": { + "description": "Existing short URL to tag for QR. Mutually exclusive with id.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "short_url" + ], + "type": "object" + } +] - removed
Input schema / propertiesRemoved value: -{ - "id": { - "description": "Existing short code", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "short_url": { - "description": "Existing short URL to tag for QR", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } -}
- Changed
resolve_short_url3 fields changed- changed
Input schema / examplesPrevious value: -[ - { - "url": "https://example.com/example" - }, - { - "code": "example" - } -]New value: +[ + { + "url": "https://xn--s7y.xn--3ds443g/example" + }, + { + "code": "example" + } +] - added
Input schema / oneOfAdded value: +[ + { + "additionalProperties": false, + "properties": { + "url": { + "description": "Full short URL (Unicode or punycode). Mutually exclusive with code.", + "maxLength": 2048, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "url" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "code": { + "description": "Short code. Mutually exclusive with url.", + "maxLength": 64, + "minLength": 1, + "type": "string" + } + }, + "required": [ + "code" + ], + "type": "object" + } +] - removed
Input schema / propertiesRemoved value: -{ - "code": { - "description": "Short code if URL not provided", - "maxLength": 64, - "minLength": 1, - "type": "string" - }, - "url": { - "description": "Full short URL (Unicode or punycode)", - "maxLength": 2048, - "minLength": 1, - "type": "string" - } -}
10 tool updates
- Changed
begin_registration1 field changed- added
Input schema / examplesAdded value: +[ + { + "locale": "en" + }, + { + "locale": "zh-CN" + } +]
- Changed
create_qr1 field changed- added
Input schema / examplesAdded value: +[ + { + "id": "example" + }, + { + "short_url": "https://example.com/example" + } +]
- Changed
disable_link2 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "example" + } +] - added
Input schema / properties / id / descriptionAdded value: +"Short code / link id. disable_link is not available yet; this call does not disable the link."
- Changed
get_link1 field changed- added
Input schema / examplesAdded value: +[ + { + "id": "example" + } +]
- Changed
get_link_analytics2 fields changed- added
Input schema / examplesAdded value: +[ + { + "id": "example" + } +] - added
Input schema / properties / id / descriptionAdded value: +"Short code / link id. get_link_analytics is not available yet; this call does not return analytics."
- Changed
get_links3 fields changed- added
Input schema / examplesAdded value: +[ + { + "cursor": "example", + "limit": 20 + } +] - added
Input schema / properties / cursor / descriptionAdded value: +"Optional page cursor. get_links is not available yet; this call does not list links." - added
Input schema / properties / limit / descriptionAdded value: +"Optional page size, an integer from 1 to 100. get_links is not available yet; this call does not list links."
- Changed
resolve_short_url1 field changed- added
Input schema / examplesAdded value: +[ + { + "url": "https://example.com/example" + }, + { + "code": "example" + } +]
- Changed
shorten_url3 fields changed- added
Input schema / examplesAdded value: +[ + { + "alias": "notes", + "idempotency_key": "example-create-1", + "locale": "en", + "title": "Notes", + "url": "https://example.com/notes" + } +] - added
Input schema / properties / locale / descriptionAdded value: +"Accepted values: en, zh-CN, and zh-cn (the only case fold of zh-CN). EN, ZH-CN, and bare zh are rejected. Omitted or blank defaults to en." - added
Input schema / properties / title / descriptionAdded value: +"Optional link title, at most 256 characters."
- Changed
shorten_urls4 fields changed- added
Input schema / examplesAdded value: +[ + { + "idempotency_key": "example-batch-1", + "items": [ + { + "alias": "notes", + "client_ref": "item-1", + "locale": "zh-cn", + "title": "Notes", + "url": "https://example.com/notes" + } + ] + } +] - added
Input schema / properties / items / descriptionAdded value: +"Synchronous batch items (1 to 100). Each item creates one short link." - added
Input schema / properties / items / items / properties / locale / descriptionAdded value: +"Accepted values: en, zh-CN, and zh-cn (the only case fold of zh-CN). EN, ZH-CN, and bare zh are rejected. Omitted or blank defaults to en." - added
Input schema / properties / items / items / properties / title / descriptionAdded value: +"Optional link title, at most 256 characters."
- Changed
update_link4 fields changed- added
Input schema / examplesAdded value: +[ + { + "destination": "https://example.com/notes", + "id": "example", + "title": "Notes" + } +] - changed
Input schema / properties / destination / descriptionPrevious value: -"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl."New value: +"Optional destination URL (lowercase http or https, no surrounding whitespace). update_link is not available yet; this call does not update the link." - added
Input schema / properties / id / descriptionAdded value: +"Short code / link id. update_link is not available yet; this call does not update the link." - added
Input schema / properties / title / descriptionAdded value: +"Optional link title, at most 256 characters. update_link is not available yet; this call does not update the link."
6 tool updates
- Added
begin_registration - Changed
create_qr11 fields changed- removed
Input schema / properties / formatRemoved value: -{ - "description": "Preferred image format (PNG always embedded; SVG via resource link)", - "enum": [ - "png", - "svg" - ], - "type": "string" -} - changed
Input schema / properties / id / descriptionPrevious value: -"Short code of a link you own"New value: +"Existing short code" - changed
Input schema / properties / short_url / descriptionPrevious value: -"Owned short URL (Unicode or punycode)"New value: +"Existing short URL to tag for QR" - removed
Input schema / properties / short_url_asciiRemoved value: -{ - "description": "Owned short URL in punycode form", - "maxLength": 2048, - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / sizeRemoved value: -{ - "anyOf": [ - { - "const": 256, - "type": "number" - }, - { - "const": 512, - "type": "number" - }, - { - "const": 1024, - "type": "number" - } - ], - "description": "PNG pixel size: 256, 512 (default), or 1024" -} - removed
Output schema / properties / formatRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / image_mime_typeRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / qr_image_svg_urlRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / qr_image_urlRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / sizeRemoved value: -{ - "type": "number" -} - removed
Output schema / properties / status_urlRemoved value: -{ - "type": "string" -}
- Changed
disable_link17 fields changed- removed
Input schema / properties / id / descriptionRemoved value: -"Short code / link id you own" - added
Output schema / properties / code / constAdded value: +"FEATURE_NOT_AVAILABLE" - removed
Output schema / properties / created_atRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / destinationRemoved value: -{ - "type": "string" -} - added
Output schema / properties / error / constAdded value: +"FEATURE_NOT_AVAILABLE" - added
Output schema / properties / featureAdded value: +{ + "type": "string" +} - removed
Output schema / properties / idRemoved value: -{ - "type": "string" -} - added
Output schema / properties / ok / constAdded value: +false - added
Output schema / properties / retryable / constAdded value: +false - removed
Output schema / properties / short_urlRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / short_url_asciiRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / stateRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / status_urlRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / titleRemoved value: -{ - "type": "string" -} - added
Output schema / properties / toolAdded value: +{ + "type": "string" +} - removed
Output schema / properties / typeRemoved value: -{ - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "ok", - "request_id" -]New value: +[ + "ok", + "error", + "code", + "feature", + "tool", + "message", + "request_id", + "retryable" +]
- Changed
get_link_analytics22 fields changed- removed
Input schema / properties / fromRemoved value: -{ - "description": "Window start ISO8601 UTC (default last 7 days)", - "type": "string" -} - removed
Input schema / properties / granularityRemoved value: -{ - "description": "Set day to include daily series", - "type": "string" -} - removed
Input schema / properties / id / descriptionRemoved value: -"Short code / link id you own" - removed
Input schema / properties / includeRemoved value: -{ - "description": "Set all_traffic to add all_clicks", - "type": "string" -} - removed
Input schema / properties / toRemoved value: -{ - "description": "Window end ISO8601 UTC", - "type": "string" -} - removed
Output schema / properties / all_clicksRemoved value: -{ - "type": "number" -} - added
Output schema / properties / code / constAdded value: +"FEATURE_NOT_AVAILABLE" - removed
Output schema / properties / countriesRemoved value: -{ - "items": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "type": "array" -} - removed
Output schema / properties / devicesRemoved value: -{ - "items": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "type": "array" -} - added
Output schema / properties / error / constAdded value: +"FEATURE_NOT_AVAILABLE" - added
Output schema / properties / featureAdded value: +{ + "type": "string" +} - removed
Output schema / properties / human_clicksRemoved value: -{ - "type": "number" -} - removed
Output schema / properties / link_idRemoved value: -{ - "type": "string" -} - added
Output schema / properties / ok / constAdded value: +false - removed
Output schema / properties / qr_tagged_visitsRemoved value: -{ - "type": "number" -} - removed
Output schema / properties / referrersRemoved value: -{ - "items": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "type": "array" -} - added
Output schema / properties / retryable / constAdded value: +false - removed
Output schema / properties / seriesRemoved value: -{ - "items": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "type": "array" -} - removed
Output schema / properties / short_codeRemoved value: -{ - "type": "string" -} - added
Output schema / properties / toolAdded value: +{ + "type": "string" +} - removed
Output schema / properties / windowRemoved value: -{ - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" -} - changed
Output schema / requiredPrevious value: -[ - "ok", - "request_id" -]New value: +[ + "ok", + "error", + "code", + "feature", + "tool", + "message", + "request_id", + "retryable" +]
- Changed
get_links11 fields changed- removed
Input schema / properties / cursor / descriptionRemoved value: -"Pagination cursor from previous next_cursor" - removed
Input schema / properties / limit / descriptionRemoved value: -"Page size (1–100, default 50)" - added
Output schema / properties / code / constAdded value: +"FEATURE_NOT_AVAILABLE" - added
Output schema / properties / error / constAdded value: +"FEATURE_NOT_AVAILABLE" - added
Output schema / properties / featureAdded value: +{ + "type": "string" +} - removed
Output schema / properties / itemsRemoved value: -{ - "items": { - "additionalProperties": {}, - "propertyNames": { - "type": "string" - }, - "type": "object" - }, - "type": "array" -} - removed
Output schema / properties / next_cursorRemoved value: -{ - "type": [ - "string", - "null" - ] -} - added
Output schema / properties / ok / constAdded value: +false - added
Output schema / properties / retryable / constAdded value: +false - added
Output schema / properties / toolAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "ok", - "request_id" -]New value: +[ + "ok", + "error", + "code", + "feature", + "tool", + "message", + "request_id", + "retryable" +]
- Changed
update_link18 fields changed- changed
Input schema / properties / destination / descriptionPrevious value: -"New destination URL"New value: +"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl." - removed
Input schema / properties / id / descriptionRemoved value: -"Short code / link id you own" - added
Output schema / properties / code / constAdded value: +"FEATURE_NOT_AVAILABLE" - removed
Output schema / properties / created_atRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / destinationRemoved value: -{ - "type": "string" -} - added
Output schema / properties / error / constAdded value: +"FEATURE_NOT_AVAILABLE" - added
Output schema / properties / featureAdded value: +{ + "type": "string" +} - removed
Output schema / properties / idRemoved value: -{ - "type": "string" -} - added
Output schema / properties / ok / constAdded value: +false - added
Output schema / properties / retryable / constAdded value: +false - removed
Output schema / properties / short_urlRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / short_url_asciiRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / stateRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / status_urlRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / titleRemoved value: -{ - "type": "string" -} - added
Output schema / properties / toolAdded value: +{ + "type": "string" +} - removed
Output schema / properties / typeRemoved value: -{ - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "ok", - "request_id" -]New value: +[ + "ok", + "error", + "code", + "feature", + "tool", + "message", + "request_id", + "retryable" +]
1 tool update
- Removed
create_account
5 tool updates
- Changed
create_qr11 fields changed- added
Input schema / properties / formatAdded value: +{ + "description": "Preferred image format (PNG always embedded; SVG via resource link)", + "enum": [ + "png", + "svg" + ], + "type": "string" +} - changed
Input schema / properties / id / descriptionPrevious value: -"Existing short code"New value: +"Short code of a link you own" - changed
Input schema / properties / short_url / descriptionPrevious value: -"Existing short URL to tag for QR"New value: +"Owned short URL (Unicode or punycode)" - added
Input schema / properties / short_url_asciiAdded value: +{ + "description": "Owned short URL in punycode form", + "maxLength": 2048, + "minLength": 1, + "type": "string" +} - added
Input schema / properties / sizeAdded value: +{ + "anyOf": [ + { + "const": 256, + "type": "number" + }, + { + "const": 512, + "type": "number" + }, + { + "const": 1024, + "type": "number" + } + ], + "description": "PNG pixel size: 256, 512 (default), or 1024" +} - added
Output schema / properties / formatAdded value: +{ + "type": "string" +} - added
Output schema / properties / image_mime_typeAdded value: +{ + "type": "string" +} - added
Output schema / properties / qr_image_svg_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / qr_image_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / sizeAdded value: +{ + "type": "number" +} - added
Output schema / properties / status_urlAdded value: +{ + "type": "string" +}
- Changed
disable_link17 fields changed- added
Input schema / properties / id / descriptionAdded value: +"Short code / link id you own" - removed
Output schema / properties / code / constRemoved value: -"FEATURE_NOT_AVAILABLE" - added
Output schema / properties / created_atAdded value: +{ + "type": "string" +} - added
Output schema / properties / destinationAdded value: +{ + "type": "string" +} - removed
Output schema / properties / error / constRemoved value: -"FEATURE_NOT_AVAILABLE" - removed
Output schema / properties / featureRemoved value: -{ - "type": "string" -} - added
Output schema / properties / idAdded value: +{ + "type": "string" +} - removed
Output schema / properties / ok / constRemoved value: -false - removed
Output schema / properties / retryable / constRemoved value: -false - added
Output schema / properties / short_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / short_url_asciiAdded value: +{ + "type": "string" +} - added
Output schema / properties / stateAdded value: +{ + "type": "string" +} - added
Output schema / properties / status_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / titleAdded value: +{ + "type": "string" +} - removed
Output schema / properties / toolRemoved value: -{ - "type": "string" -} - added
Output schema / properties / typeAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "ok", - "error", - "code", - "feature", - "tool", - "message", - "request_id", - "retryable" -]New value: +[ + "ok", + "request_id" +]
- Changed
get_link_analytics22 fields changed- added
Input schema / properties / fromAdded value: +{ + "description": "Window start ISO8601 UTC (default last 7 days)", + "type": "string" +} - added
Input schema / properties / granularityAdded value: +{ + "description": "Set day to include daily series", + "type": "string" +} - added
Input schema / properties / id / descriptionAdded value: +"Short code / link id you own" - added
Input schema / properties / includeAdded value: +{ + "description": "Set all_traffic to add all_clicks", + "type": "string" +} - added
Input schema / properties / toAdded value: +{ + "description": "Window end ISO8601 UTC", + "type": "string" +} - added
Output schema / properties / all_clicksAdded value: +{ + "type": "number" +} - removed
Output schema / properties / code / constRemoved value: -"FEATURE_NOT_AVAILABLE" - added
Output schema / properties / countriesAdded value: +{ + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / devicesAdded value: +{ + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / error / constRemoved value: -"FEATURE_NOT_AVAILABLE" - removed
Output schema / properties / featureRemoved value: -{ - "type": "string" -} - added
Output schema / properties / human_clicksAdded value: +{ + "type": "number" +} - added
Output schema / properties / link_idAdded value: +{ + "type": "string" +} - removed
Output schema / properties / ok / constRemoved value: -false - added
Output schema / properties / qr_tagged_visitsAdded value: +{ + "type": "number" +} - added
Output schema / properties / referrersAdded value: +{ + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - removed
Output schema / properties / retryable / constRemoved value: -false - added
Output schema / properties / seriesAdded value: +{ + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / short_codeAdded value: +{ + "type": "string" +} - removed
Output schema / properties / toolRemoved value: -{ - "type": "string" -} - added
Output schema / properties / windowAdded value: +{ + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" +} - changed
Output schema / requiredPrevious value: -[ - "ok", - "error", - "code", - "feature", - "tool", - "message", - "request_id", - "retryable" -]New value: +[ + "ok", + "request_id" +]
- Changed
get_links11 fields changed- added
Input schema / properties / cursor / descriptionAdded value: +"Pagination cursor from previous next_cursor" - added
Input schema / properties / limit / descriptionAdded value: +"Page size (1–100, default 50)" - removed
Output schema / properties / code / constRemoved value: -"FEATURE_NOT_AVAILABLE" - removed
Output schema / properties / error / constRemoved value: -"FEATURE_NOT_AVAILABLE" - removed
Output schema / properties / featureRemoved value: -{ - "type": "string" -} - added
Output schema / properties / itemsAdded value: +{ + "items": { + "additionalProperties": {}, + "propertyNames": { + "type": "string" + }, + "type": "object" + }, + "type": "array" +} - added
Output schema / properties / next_cursorAdded value: +{ + "type": [ + "string", + "null" + ] +} - removed
Output schema / properties / ok / constRemoved value: -false - removed
Output schema / properties / retryable / constRemoved value: -false - removed
Output schema / properties / toolRemoved value: -{ - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "ok", - "error", - "code", - "feature", - "tool", - "message", - "request_id", - "retryable" -]New value: +[ + "ok", + "request_id" +]
- Changed
update_link18 fields changed- changed
Input schema / properties / destination / descriptionPrevious value: -"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl."New value: +"New destination URL" - added
Input schema / properties / id / descriptionAdded value: +"Short code / link id you own" - removed
Output schema / properties / code / constRemoved value: -"FEATURE_NOT_AVAILABLE" - added
Output schema / properties / created_atAdded value: +{ + "type": "string" +} - added
Output schema / properties / destinationAdded value: +{ + "type": "string" +} - removed
Output schema / properties / error / constRemoved value: -"FEATURE_NOT_AVAILABLE" - removed
Output schema / properties / featureRemoved value: -{ - "type": "string" -} - added
Output schema / properties / idAdded value: +{ + "type": "string" +} - removed
Output schema / properties / ok / constRemoved value: -false - removed
Output schema / properties / retryable / constRemoved value: -false - added
Output schema / properties / short_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / short_url_asciiAdded value: +{ + "type": "string" +} - added
Output schema / properties / stateAdded value: +{ + "type": "string" +} - added
Output schema / properties / status_urlAdded value: +{ + "type": "string" +} - added
Output schema / properties / titleAdded value: +{ + "type": "string" +} - removed
Output schema / properties / toolRemoved value: -{ - "type": "string" -} - added
Output schema / properties / typeAdded value: +{ + "type": "string" +} - changed
Output schema / requiredPrevious value: -[ - "ok", - "error", - "code", - "feature", - "tool", - "message", - "request_id", - "retryable" -]New value: +[ + "ok", + "request_id" +]
7 tool updates
- Added
create_account - Changed
disable_link2 fields changed- removed
Output schema / properties / soft_c_stateRemoved value: -{ - "const": "not_live", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "ok", - "error", - "code", - "feature", - "tool", - "message", - "soft_c_state", - "request_id", - "retryable" -]New value: +[ + "ok", + "error", + "code", + "feature", + "tool", + "message", + "request_id", + "retryable" +]
- Changed
get_link_analytics2 fields changed- removed
Output schema / properties / soft_c_stateRemoved value: -{ - "const": "not_live", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "ok", - "error", - "code", - "feature", - "tool", - "message", - "soft_c_state", - "request_id", - "retryable" -]New value: +[ + "ok", + "error", + "code", + "feature", + "tool", + "message", + "request_id", + "retryable" +]
- Changed
get_links2 fields changed- removed
Output schema / properties / soft_c_stateRemoved value: -{ - "const": "not_live", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "ok", - "error", - "code", - "feature", - "tool", - "message", - "soft_c_state", - "request_id", - "retryable" -]New value: +[ + "ok", + "error", + "code", + "feature", + "tool", + "message", + "request_id", + "retryable" +]
- Changed
shorten_url6 fields changed- changed
Input schema / properties / alias / descriptionPrevious value: -"Optional ASCII alias [A-Za-z0-9_-], stored lowercase"New value: +"Optional custom path segment (stored lowercase). Do not send customSlug." - removed
Input schema / properties / customSlugRemoved value: -{ - "description": "Optional ASCII alias [A-Za-z0-9_-], stored lowercase", - "maxLength": 32, - "minLength": 1, - "type": "string" -} - changed
Input schema / properties / idempotency_key / descriptionPrevious value: -"Idempotency key (same semantics as REST Idempotency-Key header)"New value: +"Client-generated unique key for this create. Required. Replays within 24h." - removed
Input schema / properties / longUrlRemoved value: -{ - "description": "http(s) destination URL — Soft C SSRF no-fetch applies", - "maxLength": 2048, - "minLength": 1, - "type": "string" -} - changed
Input schema / properties / url / descriptionPrevious value: -"http(s) destination URL — Soft C SSRF no-fetch applies"New value: +"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl." - added
Input schema / requiredAdded value: +[ + "url", + "idempotency_key" +]
- Changed
shorten_urls8 fields changed- changed
Input schema / properties / idempotency_key / descriptionPrevious value: -"Idempotency key (same semantics as REST Idempotency-Key header)"New value: +"Client-generated unique key for this create. Required. Replays within 24h." - changed
Input schema / properties / items / items / properties / alias / descriptionPrevious value: -"Optional ASCII alias [A-Za-z0-9_-], stored lowercase"New value: +"Optional custom path segment (stored lowercase). Do not send customSlug." - added
Input schema / properties / items / items / properties / client_ref / descriptionAdded value: +"Batch item correlation id (never use array index)." - removed
Input schema / properties / items / items / properties / customSlugRemoved value: -{ - "description": "Optional ASCII alias [A-Za-z0-9_-], stored lowercase", - "maxLength": 32, - "minLength": 1, - "type": "string" -} - removed
Input schema / properties / items / items / properties / longUrlRemoved value: -{ - "description": "http(s) destination URL — Soft C SSRF no-fetch applies", - "maxLength": 2048, - "minLength": 1, - "type": "string" -} - changed
Input schema / properties / items / items / properties / url / descriptionPrevious value: -"http(s) destination URL — Soft C SSRF no-fetch applies"New value: +"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl." - changed
Input schema / properties / items / items / requiredPrevious value: -[ - "client_ref" -]New value: +[ + "client_ref", + "url" +] - changed
Input schema / requiredPrevious value: -[ - "items" -]New value: +[ + "items", + "idempotency_key" +]
- Changed
update_link3 fields changed- changed
Input schema / properties / destination / descriptionPrevious value: -"http(s) destination URL — Soft C SSRF no-fetch applies"New value: +"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl." - removed
Output schema / properties / soft_c_stateRemoved value: -{ - "const": "not_live", - "type": "string" -} - changed
Output schema / requiredPrevious value: -[ - "ok", - "error", - "code", - "feature", - "tool", - "message", - "soft_c_state", - "request_id", - "retryable" -]New value: +[ + "ok", + "error", + "code", + "feature", + "tool", + "message", + "request_id", + "retryable" +]
9 tool updates
- First observed
create_qr - First observed
disable_link - First observed
get_link - First observed
get_link_analytics - First observed
get_links - First observed
resolve_short_url - First observed
shorten_url - First observed
shorten_urls - First observed
update_link
Related MCP Connectors
Short links with QR, custom domains and bot-free click analytics. Create, edit, delete, analyze.
Short links with branded domains, cookie-less analytics and QR codes. Sign in with OAuth or a token
Dynamic, editable QR codes + short links with scan analytics and branded QR rendering.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceEnables AI agents to create, update, organize, and delete short links; render styled QR codes; route visitors by device or country; and read click and scan statistics. Agents can also manage groups and custom domains while changing destinations without breaking printed QR codes or shared short URLs.MIT- AlicenseAqualityDmaintenanceGenerate styled QR codes, manage dynamic short links with click analytics, and publish micro-landing pages via AI agents.1940 npm1MIT

Jmpy mcp serverofficial
FlicenseNot gradedqualityDmaintenanceUser can create short urls, edit short urls, get click analytics, generate qr codes and much more.-- AlicenseNot gradedqualityCmaintenanceEnables creation and management of short links with custom slugs, QR repointing, and cookieless analytics from any MCP client.9 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.