Skip to main content
Glama

短.在线

Server Details

Short links + QR tracking URLs for agents. Prefer punycode host. Account required to create links.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
98.4% over 23 days
OAuth
Works in Glama
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4/5.0

Scored across 6 tools

Disambiguation4/5

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.

Naming Consistency4/5

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.

Tool Count5/5

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.

Completeness3/5

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 tools
begin_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
localeNoBrowser 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

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 · 二维码图片(短.在线)A
Idempotent
Inspect

为已有短链返回可扫描二维码。默认 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
idNoExisting short code. Mutually exclusive with short_url.
sizeNoPNG square pixels. Default 512. Allowed: 256, 512, or 1024. Ignored when format is svg.
formatNoImage format. Default png. svg only when requested. SVG ignores size.
short_urlNoExisting short URL to tag for QR. Mutually exclusive with id.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

resolve_short_urlInspect short link · 查询本站短链(短.在线)A
Read-onlyIdempotent
Inspect

查询本站短码或本站短链的已保存状态;仅 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlNoFull short URL (Unicode or punycode). Mutually exclusive with code.
codeNoShort code. Mutually exclusive with url.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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.

Conciseness3/5

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.

Completeness5/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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 · 缩短链接(短.在线)A
Idempotent
Inspect

创建一个 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesDestination HTTPS/HTTP URL to shorten. Required. Do not send longUrl.
aliasNoOptional custom path segment (stored lowercase). Do not send customSlug.
titleNoOptional link title, at most 256 characters.
localeNoAPI 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_keyYesClient-generated unique key for this create. Required. Replays within 24h.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters3/5

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.

Purpose5/5

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.

Usage Guidelines5/5

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 · 批量短链(短.在线)A
Idempotent
Inspect

一次同步创建 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.

ParametersJSON Schema
NameRequiredDescriptionDefault
itemsYesSynchronous batch items (1 to 100). Each item creates one short link.
idempotency_keyYesClient-generated unique key for this create. Required. Replays within 24h.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines4/5

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. 1 tool update
    • Changedcreate_qr1 field changed
      • changedOutput schema / oneOf
        Previous 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"
        +  }
        +]
  2. 6 tool updates
    • Changedbegin_registration4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / oneOf
        Added 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"
        +  }
        +]
      • removedOutput schema / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "ok"
        -]
    • Changedcreate_qr4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / oneOf
        Added 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"
        +  }
        +]
      • removedOutput schema / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "ok",
        -  "request_id"
        -]
    • Changedget_link4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / oneOf
        Added 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"
        +  }
        +]
      • removedOutput schema / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "ok",
        -  "request_id"
        -]
    • Changedresolve_short_url4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / oneOf
        Added 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"
        +  }
        +]
      • removedOutput schema / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "ok",
        -  "request_id"
        -]
    • Changedshorten_url4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / oneOf
        Added 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"
        +  }
        +]
      • removedOutput schema / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "ok",
        -  "request_id"
        -]
    • Changedshorten_urls4 fields changed
      • removedOutput schema / additionalProperties
        Removed value: -false
      • addedOutput schema / oneOf
        Added 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"
        +  }
        +]
      • removedOutput schema / properties
        Removed 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"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "ok",
        -  "request_id"
        -]
  3. 5 tool updates
    • Changedbegin_registration2 fields changed
      • addedOutput schema / properties / title
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / type
        Added value: +{
        +  "type": "string"
        +}
    • Changedcreate_qr10 fields changed
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / examples
        Previous 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
        +  }
        +]
      • removedInput schema / oneOf
        Removed 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"
        -  }
        -]
      • addedInput schema / properties
        Added 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."
        +  }
        +}
      • addedOutput schema / properties / mime_type
        Added value: +{
        +  "description": "image/png or image/svg+xml.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / pixel_size
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "PNG square pixels. Null for SVG."
        +}
      • addedOutput schema / properties / qr_tracking_url / description
        Added value: +"ASCII tracking URL encoded in the image, including ?s=qr."
      • addedOutput schema / properties / status_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / title
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / type
        Added value: +{
        +  "type": "string"
        +}
    • Changedresolve_short_url3 fields changed
      • addedInput schema / additionalProperties
        Added value: +{}
      • removedInput schema / oneOf
        Removed 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"
        -  }
        -]
      • addedInput schema / properties
        Added 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"
        +  }
        +}
    • Changedshorten_url4 fields changed
      • addedOutput schema / properties / qr_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / resend_path
        Added value: +{
        +  "description": "Where to resend the verification email when verification would raise this account's limits.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / title
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / type
        Added value: +{
        +  "type": "string"
        +}
    • Changedshorten_urls3 fields changed
      • addedOutput schema / properties / resend_path
        Added value: +{
        +  "description": "Where to resend the verification email when verification would raise this account's limits.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / title
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / type
        Added value: +{
        +  "type": "string"
        +}
  4. 7 tool updates
    • Changedbegin_registration2 fields changed
      • changedInput schema / properties / locale / description
        Previous 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."
      • changedInput schema / properties / locale / enum
        Previous value: -[
        -  "en",
        -  "zh-CN"
        -]New value: +[
        +  "en",
        +  "zh-CN",
        +  "zh-cn",
        +  "zh-Hans",
        +  "zh-hans",
        +  "zh_Hans",
        +  "zh_hans"
        +]
    • Removeddisable_link
    • Removedget_link_analytics
    • Removedget_links
    • Changedshorten_url1 field changed
      • changedInput schema / properties / locale / description
        Previous 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."
    • Changedshorten_urls1 field changed
      • changedInput schema / properties / items / items / properties / locale / description
        Previous 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."
    • Removedupdate_link
  5. 2 tool updates
    • Changedcreate_qr3 fields changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "id": "example"
        -  },
        -  {
        -    "short_url": "https://example.com/example"
        -  }
        -]New value: +[
        +  {
        +    "id": "example"
        +  },
        +  {
        +    "short_url": "https://xn--s7y.xn--3ds443g/example"
        +  }
        +]
      • addedInput schema / oneOf
        Added 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"
        +  }
        +]
      • removedInput schema / properties
        Removed 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"
        -  }
        -}
    • Changedresolve_short_url3 fields changed
      • changedInput schema / examples
        Previous value: -[
        -  {
        -    "url": "https://example.com/example"
        -  },
        -  {
        -    "code": "example"
        -  }
        -]New value: +[
        +  {
        +    "url": "https://xn--s7y.xn--3ds443g/example"
        +  },
        +  {
        +    "code": "example"
        +  }
        +]
      • addedInput schema / oneOf
        Added 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"
        +  }
        +]
      • removedInput schema / properties
        Removed 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"
        -  }
        -}
  6. 10 tool updates
    • Changedbegin_registration1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "locale": "en"
        +  },
        +  {
        +    "locale": "zh-CN"
        +  }
        +]
    • Changedcreate_qr1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "id": "example"
        +  },
        +  {
        +    "short_url": "https://example.com/example"
        +  }
        +]
    • Changeddisable_link2 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "id": "example"
        +  }
        +]
      • addedInput schema / properties / id / description
        Added value: +"Short code / link id. disable_link is not available yet; this call does not disable the link."
    • Changedget_link1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "id": "example"
        +  }
        +]
    • Changedget_link_analytics2 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "id": "example"
        +  }
        +]
      • addedInput schema / properties / id / description
        Added value: +"Short code / link id. get_link_analytics is not available yet; this call does not return analytics."
    • Changedget_links3 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "cursor": "example",
        +    "limit": 20
        +  }
        +]
      • addedInput schema / properties / cursor / description
        Added value: +"Optional page cursor. get_links is not available yet; this call does not list links."
      • addedInput schema / properties / limit / description
        Added value: +"Optional page size, an integer from 1 to 100. get_links is not available yet; this call does not list links."
    • Changedresolve_short_url1 field changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "url": "https://example.com/example"
        +  },
        +  {
        +    "code": "example"
        +  }
        +]
    • Changedshorten_url3 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "alias": "notes",
        +    "idempotency_key": "example-create-1",
        +    "locale": "en",
        +    "title": "Notes",
        +    "url": "https://example.com/notes"
        +  }
        +]
      • addedInput schema / properties / locale / description
        Added 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."
      • addedInput schema / properties / title / description
        Added value: +"Optional link title, at most 256 characters."
    • Changedshorten_urls4 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "idempotency_key": "example-batch-1",
        +    "items": [
        +      {
        +        "alias": "notes",
        +        "client_ref": "item-1",
        +        "locale": "zh-cn",
        +        "title": "Notes",
        +        "url": "https://example.com/notes"
        +      }
        +    ]
        +  }
        +]
      • addedInput schema / properties / items / description
        Added value: +"Synchronous batch items (1 to 100). Each item creates one short link."
      • addedInput schema / properties / items / items / properties / locale / description
        Added 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."
      • addedInput schema / properties / items / items / properties / title / description
        Added value: +"Optional link title, at most 256 characters."
    • Changedupdate_link4 fields changed
      • addedInput schema / examples
        Added value: +[
        +  {
        +    "destination": "https://example.com/notes",
        +    "id": "example",
        +    "title": "Notes"
        +  }
        +]
      • changedInput schema / properties / destination / description
        Previous 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."
      • addedInput schema / properties / id / description
        Added value: +"Short code / link id. update_link is not available yet; this call does not update the link."
      • addedInput schema / properties / title / description
        Added value: +"Optional link title, at most 256 characters. update_link is not available yet; this call does not update the link."
  7. 6 tool updates
    • Addedbegin_registration
    • Changedcreate_qr11 fields changed
      • removedInput schema / properties / format
        Removed value: -{
        -  "description": "Preferred image format (PNG always embedded; SVG via resource link)",
        -  "enum": [
        -    "png",
        -    "svg"
        -  ],
        -  "type": "string"
        -}
      • changedInput schema / properties / id / description
        Previous value: -"Short code of a link you own"New value: +"Existing short code"
      • changedInput schema / properties / short_url / description
        Previous value: -"Owned short URL (Unicode or punycode)"New value: +"Existing short URL to tag for QR"
      • removedInput schema / properties / short_url_ascii
        Removed value: -{
        -  "description": "Owned short URL in punycode form",
        -  "maxLength": 2048,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / size
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "const": 256,
        -      "type": "number"
        -    },
        -    {
        -      "const": 512,
        -      "type": "number"
        -    },
        -    {
        -      "const": 1024,
        -      "type": "number"
        -    }
        -  ],
        -  "description": "PNG pixel size: 256, 512 (default), or 1024"
        -}
      • removedOutput schema / properties / format
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / image_mime_type
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / qr_image_svg_url
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / qr_image_url
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / size
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / status_url
        Removed value: -{
        -  "type": "string"
        -}
    • Changeddisable_link17 fields changed
      • removedInput schema / properties / id / description
        Removed value: -"Short code / link id you own"
      • addedOutput schema / properties / code / const
        Added value: +"FEATURE_NOT_AVAILABLE"
      • removedOutput schema / properties / created_at
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / destination
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / error / const
        Added value: +"FEATURE_NOT_AVAILABLE"
      • addedOutput schema / properties / feature
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / id
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / ok / const
        Added value: +false
      • addedOutput schema / properties / retryable / const
        Added value: +false
      • removedOutput schema / properties / short_url
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / short_url_ascii
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / state
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / status_url
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / title
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / tool
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / type
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "request_id"
        -]New value: +[
        +  "ok",
        +  "error",
        +  "code",
        +  "feature",
        +  "tool",
        +  "message",
        +  "request_id",
        +  "retryable"
        +]
    • Changedget_link_analytics22 fields changed
      • removedInput schema / properties / from
        Removed value: -{
        -  "description": "Window start ISO8601 UTC (default last 7 days)",
        -  "type": "string"
        -}
      • removedInput schema / properties / granularity
        Removed value: -{
        -  "description": "Set day to include daily series",
        -  "type": "string"
        -}
      • removedInput schema / properties / id / description
        Removed value: -"Short code / link id you own"
      • removedInput schema / properties / include
        Removed value: -{
        -  "description": "Set all_traffic to add all_clicks",
        -  "type": "string"
        -}
      • removedInput schema / properties / to
        Removed value: -{
        -  "description": "Window end ISO8601 UTC",
        -  "type": "string"
        -}
      • removedOutput schema / properties / all_clicks
        Removed value: -{
        -  "type": "number"
        -}
      • addedOutput schema / properties / code / const
        Added value: +"FEATURE_NOT_AVAILABLE"
      • removedOutput schema / properties / countries
        Removed value: -{
        -  "items": {
        -    "additionalProperties": {},
        -    "propertyNames": {
        -      "type": "string"
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / devices
        Removed value: -{
        -  "items": {
        -    "additionalProperties": {},
        -    "propertyNames": {
        -      "type": "string"
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / error / const
        Added value: +"FEATURE_NOT_AVAILABLE"
      • addedOutput schema / properties / feature
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / human_clicks
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / link_id
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / ok / const
        Added value: +false
      • removedOutput schema / properties / qr_tagged_visits
        Removed value: -{
        -  "type": "number"
        -}
      • removedOutput schema / properties / referrers
        Removed value: -{
        -  "items": {
        -    "additionalProperties": {},
        -    "propertyNames": {
        -      "type": "string"
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • addedOutput schema / properties / retryable / const
        Added value: +false
      • removedOutput schema / properties / series
        Removed value: -{
        -  "items": {
        -    "additionalProperties": {},
        -    "propertyNames": {
        -      "type": "string"
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / short_code
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / tool
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / window
        Removed value: -{
        -  "additionalProperties": {},
        -  "propertyNames": {
        -    "type": "string"
        -  },
        -  "type": "object"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "request_id"
        -]New value: +[
        +  "ok",
        +  "error",
        +  "code",
        +  "feature",
        +  "tool",
        +  "message",
        +  "request_id",
        +  "retryable"
        +]
    • Changedget_links11 fields changed
      • removedInput schema / properties / cursor / description
        Removed value: -"Pagination cursor from previous next_cursor"
      • removedInput schema / properties / limit / description
        Removed value: -"Page size (1–100, default 50)"
      • addedOutput schema / properties / code / const
        Added value: +"FEATURE_NOT_AVAILABLE"
      • addedOutput schema / properties / error / const
        Added value: +"FEATURE_NOT_AVAILABLE"
      • addedOutput schema / properties / feature
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / items
        Removed value: -{
        -  "items": {
        -    "additionalProperties": {},
        -    "propertyNames": {
        -      "type": "string"
        -    },
        -    "type": "object"
        -  },
        -  "type": "array"
        -}
      • removedOutput schema / properties / next_cursor
        Removed value: -{
        -  "type": [
        -    "string",
        -    "null"
        -  ]
        -}
      • addedOutput schema / properties / ok / const
        Added value: +false
      • addedOutput schema / properties / retryable / const
        Added value: +false
      • addedOutput schema / properties / tool
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "request_id"
        -]New value: +[
        +  "ok",
        +  "error",
        +  "code",
        +  "feature",
        +  "tool",
        +  "message",
        +  "request_id",
        +  "retryable"
        +]
    • Changedupdate_link18 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"New destination URL"New value: +"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl."
      • removedInput schema / properties / id / description
        Removed value: -"Short code / link id you own"
      • addedOutput schema / properties / code / const
        Added value: +"FEATURE_NOT_AVAILABLE"
      • removedOutput schema / properties / created_at
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / destination
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / error / const
        Added value: +"FEATURE_NOT_AVAILABLE"
      • addedOutput schema / properties / feature
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / id
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / ok / const
        Added value: +false
      • addedOutput schema / properties / retryable / const
        Added value: +false
      • removedOutput schema / properties / short_url
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / short_url_ascii
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / state
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / status_url
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / title
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / tool
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / type
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "request_id"
        -]New value: +[
        +  "ok",
        +  "error",
        +  "code",
        +  "feature",
        +  "tool",
        +  "message",
        +  "request_id",
        +  "retryable"
        +]
  8. 1 tool update
    • Removedcreate_account
  9. 5 tool updates
    • Changedcreate_qr11 fields changed
      • addedInput schema / properties / format
        Added value: +{
        +  "description": "Preferred image format (PNG always embedded; SVG via resource link)",
        +  "enum": [
        +    "png",
        +    "svg"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / id / description
        Previous value: -"Existing short code"New value: +"Short code of a link you own"
      • changedInput schema / properties / short_url / description
        Previous value: -"Existing short URL to tag for QR"New value: +"Owned short URL (Unicode or punycode)"
      • addedInput schema / properties / short_url_ascii
        Added value: +{
        +  "description": "Owned short URL in punycode form",
        +  "maxLength": 2048,
        +  "minLength": 1,
        +  "type": "string"
        +}
      • addedInput schema / properties / size
        Added value: +{
        +  "anyOf": [
        +    {
        +      "const": 256,
        +      "type": "number"
        +    },
        +    {
        +      "const": 512,
        +      "type": "number"
        +    },
        +    {
        +      "const": 1024,
        +      "type": "number"
        +    }
        +  ],
        +  "description": "PNG pixel size: 256, 512 (default), or 1024"
        +}
      • addedOutput schema / properties / format
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / image_mime_type
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / qr_image_svg_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / qr_image_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / size
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / status_url
        Added value: +{
        +  "type": "string"
        +}
    • Changeddisable_link17 fields changed
      • addedInput schema / properties / id / description
        Added value: +"Short code / link id you own"
      • removedOutput schema / properties / code / const
        Removed value: -"FEATURE_NOT_AVAILABLE"
      • addedOutput schema / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / destination
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / error / const
        Removed value: -"FEATURE_NOT_AVAILABLE"
      • removedOutput schema / properties / feature
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / id
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / ok / const
        Removed value: -false
      • removedOutput schema / properties / retryable / const
        Removed value: -false
      • addedOutput schema / properties / short_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / short_url_ascii
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / state
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / status_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / title
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / tool
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / type
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "error",
        -  "code",
        -  "feature",
        -  "tool",
        -  "message",
        -  "request_id",
        -  "retryable"
        -]New value: +[
        +  "ok",
        +  "request_id"
        +]
    • Changedget_link_analytics22 fields changed
      • addedInput schema / properties / from
        Added value: +{
        +  "description": "Window start ISO8601 UTC (default last 7 days)",
        +  "type": "string"
        +}
      • addedInput schema / properties / granularity
        Added value: +{
        +  "description": "Set day to include daily series",
        +  "type": "string"
        +}
      • addedInput schema / properties / id / description
        Added value: +"Short code / link id you own"
      • addedInput schema / properties / include
        Added value: +{
        +  "description": "Set all_traffic to add all_clicks",
        +  "type": "string"
        +}
      • addedInput schema / properties / to
        Added value: +{
        +  "description": "Window end ISO8601 UTC",
        +  "type": "string"
        +}
      • addedOutput schema / properties / all_clicks
        Added value: +{
        +  "type": "number"
        +}
      • removedOutput schema / properties / code / const
        Removed value: -"FEATURE_NOT_AVAILABLE"
      • addedOutput schema / properties / countries
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / devices
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / error / const
        Removed value: -"FEATURE_NOT_AVAILABLE"
      • removedOutput schema / properties / feature
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / human_clicks
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / link_id
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / ok / const
        Removed value: -false
      • addedOutput schema / properties / qr_tagged_visits
        Added value: +{
        +  "type": "number"
        +}
      • addedOutput schema / properties / referrers
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • removedOutput schema / properties / retryable / const
        Removed value: -false
      • addedOutput schema / properties / series
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / short_code
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / tool
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / window
        Added value: +{
        +  "additionalProperties": {},
        +  "propertyNames": {
        +    "type": "string"
        +  },
        +  "type": "object"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "error",
        -  "code",
        -  "feature",
        -  "tool",
        -  "message",
        -  "request_id",
        -  "retryable"
        -]New value: +[
        +  "ok",
        +  "request_id"
        +]
    • Changedget_links11 fields changed
      • addedInput schema / properties / cursor / description
        Added value: +"Pagination cursor from previous next_cursor"
      • addedInput schema / properties / limit / description
        Added value: +"Page size (1–100, default 50)"
      • removedOutput schema / properties / code / const
        Removed value: -"FEATURE_NOT_AVAILABLE"
      • removedOutput schema / properties / error / const
        Removed value: -"FEATURE_NOT_AVAILABLE"
      • removedOutput schema / properties / feature
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / items
        Added value: +{
        +  "items": {
        +    "additionalProperties": {},
        +    "propertyNames": {
        +      "type": "string"
        +    },
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • removedOutput schema / properties / ok / const
        Removed value: -false
      • removedOutput schema / properties / retryable / const
        Removed value: -false
      • removedOutput schema / properties / tool
        Removed value: -{
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "error",
        -  "code",
        -  "feature",
        -  "tool",
        -  "message",
        -  "request_id",
        -  "retryable"
        -]New value: +[
        +  "ok",
        +  "request_id"
        +]
    • Changedupdate_link18 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl."New value: +"New destination URL"
      • addedInput schema / properties / id / description
        Added value: +"Short code / link id you own"
      • removedOutput schema / properties / code / const
        Removed value: -"FEATURE_NOT_AVAILABLE"
      • addedOutput schema / properties / created_at
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / destination
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / error / const
        Removed value: -"FEATURE_NOT_AVAILABLE"
      • removedOutput schema / properties / feature
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / id
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / ok / const
        Removed value: -false
      • removedOutput schema / properties / retryable / const
        Removed value: -false
      • addedOutput schema / properties / short_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / short_url_ascii
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / state
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / status_url
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / title
        Added value: +{
        +  "type": "string"
        +}
      • removedOutput schema / properties / tool
        Removed value: -{
        -  "type": "string"
        -}
      • addedOutput schema / properties / type
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "error",
        -  "code",
        -  "feature",
        -  "tool",
        -  "message",
        -  "request_id",
        -  "retryable"
        -]New value: +[
        +  "ok",
        +  "request_id"
        +]
  10. 7 tool updates
    • Addedcreate_account
    • Changeddisable_link2 fields changed
      • removedOutput schema / properties / soft_c_state
        Removed value: -{
        -  "const": "not_live",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "error",
        -  "code",
        -  "feature",
        -  "tool",
        -  "message",
        -  "soft_c_state",
        -  "request_id",
        -  "retryable"
        -]New value: +[
        +  "ok",
        +  "error",
        +  "code",
        +  "feature",
        +  "tool",
        +  "message",
        +  "request_id",
        +  "retryable"
        +]
    • Changedget_link_analytics2 fields changed
      • removedOutput schema / properties / soft_c_state
        Removed value: -{
        -  "const": "not_live",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "error",
        -  "code",
        -  "feature",
        -  "tool",
        -  "message",
        -  "soft_c_state",
        -  "request_id",
        -  "retryable"
        -]New value: +[
        +  "ok",
        +  "error",
        +  "code",
        +  "feature",
        +  "tool",
        +  "message",
        +  "request_id",
        +  "retryable"
        +]
    • Changedget_links2 fields changed
      • removedOutput schema / properties / soft_c_state
        Removed value: -{
        -  "const": "not_live",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "error",
        -  "code",
        -  "feature",
        -  "tool",
        -  "message",
        -  "soft_c_state",
        -  "request_id",
        -  "retryable"
        -]New value: +[
        +  "ok",
        +  "error",
        +  "code",
        +  "feature",
        +  "tool",
        +  "message",
        +  "request_id",
        +  "retryable"
        +]
    • Changedshorten_url6 fields changed
      • changedInput schema / properties / alias / description
        Previous value: -"Optional ASCII alias [A-Za-z0-9_-], stored lowercase"New value: +"Optional custom path segment (stored lowercase). Do not send customSlug."
      • removedInput schema / properties / customSlug
        Removed value: -{
        -  "description": "Optional ASCII alias [A-Za-z0-9_-], stored lowercase",
        -  "maxLength": 32,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / properties / idempotency_key / description
        Previous value: -"Idempotency key (same semantics as REST Idempotency-Key header)"New value: +"Client-generated unique key for this create. Required. Replays within 24h."
      • removedInput schema / properties / longUrl
        Removed value: -{
        -  "description": "http(s) destination URL — Soft C SSRF no-fetch applies",
        -  "maxLength": 2048,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / properties / url / description
        Previous value: -"http(s) destination URL — Soft C SSRF no-fetch applies"New value: +"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl."
      • addedInput schema / required
        Added value: +[
        +  "url",
        +  "idempotency_key"
        +]
    • Changedshorten_urls8 fields changed
      • changedInput schema / properties / idempotency_key / description
        Previous value: -"Idempotency key (same semantics as REST Idempotency-Key header)"New value: +"Client-generated unique key for this create. Required. Replays within 24h."
      • changedInput schema / properties / items / items / properties / alias / description
        Previous value: -"Optional ASCII alias [A-Za-z0-9_-], stored lowercase"New value: +"Optional custom path segment (stored lowercase). Do not send customSlug."
      • addedInput schema / properties / items / items / properties / client_ref / description
        Added value: +"Batch item correlation id (never use array index)."
      • removedInput schema / properties / items / items / properties / customSlug
        Removed value: -{
        -  "description": "Optional ASCII alias [A-Za-z0-9_-], stored lowercase",
        -  "maxLength": 32,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • removedInput schema / properties / items / items / properties / longUrl
        Removed value: -{
        -  "description": "http(s) destination URL — Soft C SSRF no-fetch applies",
        -  "maxLength": 2048,
        -  "minLength": 1,
        -  "type": "string"
        -}
      • changedInput schema / properties / items / items / properties / url / description
        Previous value: -"http(s) destination URL — Soft C SSRF no-fetch applies"New value: +"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl."
      • changedInput schema / properties / items / items / required
        Previous value: -[
        -  "client_ref"
        -]New value: +[
        +  "client_ref",
        +  "url"
        +]
      • changedInput schema / required
        Previous value: -[
        -  "items"
        -]New value: +[
        +  "items",
        +  "idempotency_key"
        +]
    • Changedupdate_link3 fields changed
      • changedInput schema / properties / destination / description
        Previous value: -"http(s) destination URL — Soft C SSRF no-fetch applies"New value: +"Destination HTTPS/HTTP URL to shorten. Required. Do not send longUrl."
      • removedOutput schema / properties / soft_c_state
        Removed value: -{
        -  "const": "not_live",
        -  "type": "string"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "ok",
        -  "error",
        -  "code",
        -  "feature",
        -  "tool",
        -  "message",
        -  "soft_c_state",
        -  "request_id",
        -  "retryable"
        -]New value: +[
        +  "ok",
        +  "error",
        +  "code",
        +  "feature",
        +  "tool",
        +  "message",
        +  "request_id",
        +  "retryable"
        +]
  11. 9 tool updates
    • First observedcreate_qr
    • First observeddisable_link
    • First observedget_link
    • First observedget_link_analytics
    • First observedget_links
    • First observedresolve_short_url
    • First observedshorten_url
    • First observedshorten_urls
    • First observedupdate_link

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables 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
  • A
    license
    A
    quality
    D
    maintenance
    Generate styled QR codes, manage dynamic short links with click analytics, and publish micro-landing pages via AI agents.
    19
    40 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    User can create short urls, edit short urls, get click analytics, generate qr codes and much more.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables creation and management of short links with custom slugs, QR repointing, and cookieless analytics from any MCP client.
    9 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources