Skip to main content
Glama
dzisner
by dzisner

roo-mcp

npm version node license

MCP server for Roo — the smart-shortlink API. Exposes Roo's link + add-on operations as thin, well-shaped MCP tools an LLM can use directly.

New here? See SETUP.md for a step-by-step install guide (Claude Desktop, Claude Code, Cursor).

Install

Option A — Claude Code plugin (one command; ships MCP + skill together)

claude plugin add https://github.com/roo-bz/roo-mcp.git

Then set your API key once as a user environment variable so the spawned server inherits it:

# Windows PowerShell
[Environment]::SetEnvironmentVariable('ROO_API_KEY', 'your-roo-api-key', 'User')
# macOS / Linux — in ~/.zshrc or ~/.bashrc
export ROO_API_KEY=your-roo-api-key

Restart your terminal + Claude Code. You get both:

  • The 14 roo_* tools (via the MCP server declared in .mcp.json).

  • The roo-shortlinks skill (in skills/roo-shortlinks/) that teaches Claude when to reach for which add-on.

Option B — Manual MCP config (Claude Desktop, Cursor, Continue.dev, other MCP clients)

Add to your MCP client config file:

{
  "mcpServers": {
    "roo": {
      "command": "npx",
      "args": ["-y", "@roo-bz/roo-mcp"],
      "env": { "ROO_API_KEY": "your-roo-api-key" }
    }
  }
}

See SETUP.md for the exact config file path per client. Get an API key from https://roo.bz — see your account API settings.

Related MCP server: url-shortener-mcp

Local development

npm install
cp .env.example .env    # then paste ROO_API_KEY into .env
npm run build
node scripts/smoke.mjs  # spawns the built server, calls tools/list + roo_whoami

Key resolution: at startup the server looks for ROO_API_KEY in this order:

  1. process.env.ROO_API_KEY — how MCP clients normally inject it via their mcpServers.env config.

  2. .env in the package root (../ from the built script) — convenience for local dev, especially when a desktop MCP client (Claude Desktop, etc.) doesn't reliably pass user env vars through to spawned processes.

If neither is present, the server exits with a clear error.

Tools (implemented / planned)

  • roo_whoami — verify key + compact account summary.

  • roo_list_shortlinks, roo_create_shortlink, roo_get_shortlink, roo_update_shortlink — CRUD.

  • roo_make_permanent, roo_update_permanent_settings — permanence.

  • roo_get_qr_code — retrieve QR (base64 data URI or write to file).

  • roo_set_scheduled_redirect, roo_set_click_count_redirect, roo_set_webhook, roo_set_preview_link, roo_set_qr_addon — the five add-ons.

Design & spec

  • DESIGN.md — build brief (tool catalog, architecture, error handling).

  • skills/roo-shortlinks/SKILL.md — companion Claude skill (judgment layer), bundled with the plugin.

  • SPEC-NOTES.md — spec-vs-reality findings from live probes.

  • roo-openapi.json — the extracted Swagger 2.0 spec.

Available Tools

14 tools
roo_get_qr_codeRoo — get shortlink QR imageA

Fetch the QR image for a shortlink. Requires the qrCode add-on to already be configured on the shortlink (via roo_set_qr_addon) — otherwise Roo returns a qr_not_enabled error. By default returns the image inline as an MCP image content block; pass save_to (absolute path) to write the bytes to a file instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesShortlink id.
save_toNoOptional ABSOLUTE filesystem path. If provided, the QR image is decoded and written to that path; the tool returns the path instead of embedding the image. Parent directory must already exist.

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden and delivers it: default behavior returns an MCP image content block, save_to makes it write bytes to a file, the return value changes, and the failure mode (qr_not_enabled) is named. This is well beyond minimal transparency for a simple read tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences: what is fetched, the prerequisite and error, and the default vs. file option. The core mechanism is front-loaded and every sentence earns its place.

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 only two simple scalar parameters and no output schema, the description explains prerequisites, error behavior, default result, alternative result, and the save_to path rule. An agent has enough information to invoke it correctly and interpret the response.

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 and save_to in detail. The description aligns with the schema but adds no new parameter-level semantics beyond the structured field descriptions.

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: 'Fetch the QR image for a shortlink.' It also clarifies the role relative to the prerequisite sibling tool roo_set_qr_addon, so an agent can immediately understand what this tool gets versus what that tool configures.

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 is clear when the tool is usable: the shortlink must already have the qrCode add-on configured, and otherwise a qr_not_enabled error is returned. It does not explicitly list alternatives or exclusion cases, but it does reference the condition that decides usefulness through roo_set_qr_addon.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roo_list_custom_domainsRoo — list custom domainsA

List every custom domain attached to the account, with each one's status and verification details. Authoritative — this is the same data the Roo web app uses. Distinct from the domain a particular SHORTLINK is on (a shortlink can be on roo.ws or roo.bz — Roo-owned defaults — without any custom domain being attached).

ParametersJSON Schema
NameRequiredDescriptionDefault
status_filterNoOptional status filter. Known values: "Issued" (verified + active), "Pending" (verification in progress). Omit to return all domains regardless of status.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It communicates read-only intent via 'List', confirms the data source is authoritative/web-app-backed, and describes the output contents. It does not mention pagination, error behavior, or auth expectations, but for an account-level list operation the scope and no-side-effect nature are sufficiently disclosed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, all informative: the core behavior is front-loaded, the authoritative note adds context, and the shortlink-domain distinction prevents a real misuse. No filler or redundancy. The description earns each sentence.

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 simple optional-filter-list tool with only one parameter and no output schema, the description provides enough to call it correctly: behavior, scope, output ingredients, and how it relates to the shortlink-domain concept. It stops short of detailing exact response structure or list ordering, but those are not critical for this tool.

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 fully documents status_filter including known values. The description adds marginally by mentioning status and verification details, which helps the agent infer what filtering and output mean, but it does not add parameter-level detail beyond the schema.

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 uses a specific verb ('List') and resource ('custom domains attached to the account'), and states the output payload: status and verification details. It also draws a clear line against the domain a SHORTLINK is on, which distinguishes it from the sibling tool the agent might otherwise confuse it with.

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?

The first sentence makes the intended use case obvious: query all account-level custom domains. The explicit distinction from the domain a particular SHORTLINK is on is a useful when-not signal, preventing a common misconception, though it does not name the exact sibling tool to use instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roo_make_permanentRoo — make shortlink permanentA

Mark a shortlink as permanent — it stops participating in the plan's auto-expiry (Hop = 90 days). Counts against the account's permanent-shortlink limit. To un-make a link permanent, use roo_update_permanent_settings with { permanent: false }.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesShortlink id to mark permanent (opts the link out of the plan's auto-expiry).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It discloses that the shortlink stops participating in auto-expiry, that a 90-day plan period applies, and that the action counts against a permanent-shortlink limit. It also reveals reversibility by directing the user to un-make it. It could mention permissions or errors, but the core behavioral impact is well covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded: the main action is stated first, followed by key consequences and the reverse path. Every sentence contributes useful information 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 one-parameter mutation tool with no output schema, the description is nearly complete: the effect, the plan expiry context, the limit impact, and the way to reverse the operation are all included. A minor omission is whether the operation can fail or be blocked by quota, but this is not required for correct invocation.

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 coverage is 100%, so the schema already documents the single `id` parameter clearly. The description adds minimal parameter-level detail beyond the schema, but since there is only one simple required parameter and the description restates its purpose, the baseline score of 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 uses a specific verb and resource: 'Mark a shortlink as permanent'. It clearly differentiates this tool from the sibling roo_update_permanent_settings by stating the opposite operation uses that other tool.

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 for when this tool applies (shortlinks subject to plan auto-expiry) and explicitly points to roo_update_permanent_settings for the reverse operation. It does not exhaustively compare with every sibling, but the key alternative and condition are covered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roo_set_click_count_redirectRoo — set click-count redirectA

Click-count redirect: attach or replace cumulative thresholds on the shortlink. After the shortlink accumulates click_count clicks, the destination switches to url and stays until the next threshold. Order thresholds by increasing click_count; the tool re-sorts.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesShortlink id.
thresholdsYesOrdered thresholds (cumulative). After the shortlink accumulates click_count clicks, the destination switches to `url` and stays there until the next threshold. The tool re-sorts ascending for safety.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It does disclose the mutable behavior and important details like 'switches to url and stays' and 'the tool re-sorts', but it does not mention permissions, side effects, or what exactly happens when thresholds are replaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, no fluff. The first sentence gives the verb and resource, the second explains the runtime behavior, and the third addresses ordering. Well-structured and easy to scan.

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 simple two-parameter mutation tool with full schema coverage, the description is largely complete and the threshold behavior is clear. It loses the top score because it does not mention operational cautions like permission requirements, previous-threshold replacement semantics, or anything about the response/result.

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 explains both parameters and their semantics. The description repeats the cumulative-threshold behavior and re-sorting, but adds little beyond what the schema provides, so 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 starts with a specific mechanism: 'click-count redirect', then explains that cumulative thresholds are attached or replaced on the shortlink. It clearly states the behavioral contract: after click_count clicks, the destination switches to `url` and stays until the next threshold, which distinguishes it from siblings like set_scheduled_redirect.

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?

The description gives no explicit guidance on when to use this tool versus alternatives such as set_scheduled_redirect or update_shortlink. The use case is implied by the phrase 'click-count redirect' and the threshold semantics, but no exclusion or alternative routing is provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roo_set_qr_addonRoo — configure QR add-onA

Configure and enable the QR code add-on on a shortlink. Roo requires all 6 fields; the tool defaults them all. After this succeeds, use roo_get_qr_code to fetch the rendered image.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesShortlink id.
logoNoCenter logo as base64 data URI, or empty string for no logo (default "").
scaleNoSize multiplier 1-10 (default 4).
styleNoDot/corner style — Roo's `qtType` (default mode_1).
code_colorNoQR foreground color, hex #RRGGBB (default #000000).
background_colorNoQR background color, hex #RRGGBB (default #FFFFFF).
display_roo_logoNoShow Roo branding on the QR (default false).

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the behavioral disclosure burden. It adds genuinely useful context by explaining that 'Roo requires all 6 fields; the tool defaults them all' — meaning optional schema fields are defaulted. But it does not disclose whether existing QR settings are overwritten, whether changes are reversible, or what happens on success beyond the implication that the add-on becomes enabled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted words. The opening sentence states the purpose, the second sentence adds a critical behavioral hint about defaults and gives a clear follow-up action. Each sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is reasonably complete given the strong schema and clear sibling workflow, but without annotations or an output schema it leaves some behavioral uncertainty: what the success result looks like, whether existing QR configuration is replaced, and whether there are any side effects. For a mutation-style tool, this missing context prevents a higher score.

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?

The input schema has 100% description coverage of all seven parameters, including defaults, enums, ranges, and patterns. The description adds only the note that all six non-required fields are defaulted by the tool. Since the schema already documents every parameter in detail, the description does not significantly amplify parameter meaning.

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 clearly states the action: 'Configure and enable the QR code add-on on a shortlink.' It names a specific verb, resource, and outcome, and the phrasing distinguishes it from sibling roo_get_qr_code, which fetches the rendered image rather than configuring it.

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?

The description gives clear contextual guidance by noting that after this tool succeeds, the agent should use roo_get_qr_code to fetch the image. This establishes a workflow. However, it does not explicitly state when to avoid using this tool or what distinguishes it from other update/configure siblings, so it stops short of full alternative-condition guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roo_set_scheduled_redirectRoo — set scheduled redirectA

Time-based redirect: attach or replace waypoints on the shortlink. Each waypoint is a { url, at } pair — at time T the redirect switches to url and stays until the next waypoint. Before the first waypoint the shortlink falls through to its base url. Roo has no timezone or per-waypoint end field.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesShortlink id.
waypointsYesOrdered waypoints. Roo models these as switch points, not windows: at time T the redirect switches to `url` and stays there until the next waypoint. Times before the first waypoint fall through to the shortlink's base url. The tool re-sorts chronologically for safety.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure, and it handles this well. It explains the switch-point semantics ('at time T the redirect switches to url and stays until the next waypoint'), the fall-through behavior before the first waypoint, and the important limitation about timezone and per-waypoint end fields. It does not cover idempotency, response, or error behavior, but the core operation is transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise and front-loaded: the first phrase names the tool type, the next explains the rule/action, and each subsequent sentence adds a distinct, non-redundant behavior or limitation. There is no fluff, ESL padding, or repeated schema text at the top level.

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 2-parameter mutation tool with full schema coverage and no output schema, the description provides the essential operational context: temporal switch behavior, fall-through, and unsupported end/timezone handling. Minor gaps remain, such as whether waypoints replace or merely append to existing scheduled waypoints, and what success/response looks like, but the core invocation criteria are covered.

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 both parameters thoroughly. The top-level description adds interpretive context about what a waypoint means and calls out the missing timezone/end-field semantics, but this mostly restates the embedded waypoint description rather than providing substantial new parameter-level details. This matches the baseline for complete schema coverage.

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: 'attach or replace waypoints on the shortlink', and immediately frames the tool as 'time-based redirect'. This clearly sets it apart from the sibling roo_set_click_count_redirect and other shortlink-manipulation tools. It does more than restate the tool name/title.

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?

The phrase 'Time-based redirect' gives clear context for when this tool applies, and the limitation 'Roo has no timezone or per-waypoint end field' hints at conditions to check. However, it never explicitly states when to prefer an alternative sibling tool, such as roo_set_click_count_redirect or roo_set_preview_link, or when not to use this tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roo_set_webhookRoo — set webhookA

Fire an HTTP request to endpoint on every click. Roo requires 8 fields; this tool defaults 7 of them — you only need to provide the endpoint. The webhook does NOT change where the shortlink redirects to; the destination is unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesShortlink id.
bodyNoRequest body as a raw STRING (JSON as a string, not an object). Default "{}".
nameNoDisplay name for the webhook (default: derived from context).
methodNoHTTP method (default POST).
headersNoCustom HTTP headers.
endpointYesWebhook target URL — Roo POSTs (or your chosen method) here on every click.
add_metadataNoInclude Roo click metadata (referrer, IP, etc.) in the webhook payload (default true).
content_typeNoBody content type (default application/json).
query_stringNoQuery-string parameters appended to endpoint.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It does disclose useful behavioral context: most fields are defaulted, and the webhook does not alter the shortlink's redirect destination. However, it does not mention whether setting the webhook replaces an existing one, what permissions are needed, or what confirmation/error behavior to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no wasted wording. The most actionable information is front-loaded, and the clarifying note about the destination not changing is a valuable second sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The claim that 'you only need to provide the endpoint' conflicts with the input schema, which requires both id and endpoint. This is misleading for an agent and could lead to an invalid call. With 9 parameters, no annotations, and no output schema, the description leaves too much unsaid about side effects and setup prerequisites despite the rich schema.

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 explains every parameter in detail. The description adds only high-level context about defaults (7 fields defaulted) and endpoint semantics, but does not meaningfully improve per-parameter understanding beyond the schema.

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 ('set webhook') and explains exactly what the tool does: fire an HTTP request to an endpoint on every click. The explicit clarification that it does not change the shortlink destination helps distinguish this from redirect-related sibling tools.

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?

The description clearly identifies the trigger context: use this when you want an HTTP request fired on every click. It also provides a when-not signal by stating that the redirect destination is unchanged, which helps an agent avoid misusing it as a redirect-setting tool. However, no explicit alternatives are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roo_update_permanent_settingsRoo — update permanent settingsA

Update permanent-mode settings on a shortlink. Today the only verified field is permanent (true/false) — additional fields may be accepted by the endpoint in the future; only fields you pass are sent.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesShortlink id.
permanentNoSet false to un-make a link permanent (allow it to auto-expire again); true to make it permanent.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries most of the behavioral burden. It clearly discloses patch-like behavior ('only fields you pass are sent') and warns that `permanent` is the only currently verified field, while future fields may also be accepted. It does not mention authentication or failure behavior, but it is transparent about what the endpoint will and won't do.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is one dense, front-loaded sentence that states the action first and then adds a relevant caveat. Every clause earns its place, and there is no repeated or redundant wording from the title or schema.

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 simple two-parameter patch with complete schema documentation, the description gives enough information to invoke the tool correctly. It does not clarify how this relates to roo_make_permanent or roo_update_shortlink, and there is no output schema, but the core calling context is sufficiently covered.

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 description does not need to restate id or `permanent`. It adds useful context that only supplied fields are sent and that `permanent` is currently the only verified field, which encourages careful argument construction. This is helpful but not transformative beyond the schema.

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 opens with a clear verb ('Update') and a specific resource ('permanent-mode settings on a shortlink'), then narrows the actual scope to the `permanent` boolean field. It is distinct from a general shortlink update, but it does not explicitly distinguish itself from a sibling like roo_make_permanent.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit guidance about when to use this tool versus its alternatives. It names neither roo_make_permanent nor the general roo_update_shortlink, and gives no 'use this when...' or 'do not use for...' condition. The 'only verified field' caveat is a limitation, not a usage criterion.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

roo_whoamiRoo — who am IA

Verify the Roo API key and return a compact account summary (email, plan, limits, subscription dates). Use to check that Roo access is working before other operations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden — and it does so reasonably: it discloses what the call returns (email, plan, limits, subscription dates) and implies a non-mutating check via 'verify.' It does not state error behavior for an invalid key (e.g., what response shape is returned), which is the main transparency gap, but for a zero-parameter read-only identity check the essential behavior is covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight, front-loaded sentences with zero filler: sentence one states function and return content, sentence two states when to use it. Every word earns its place.

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 zero-parameter tool with no output schema and no annotations, the description gives what an agent needs: the operation, the return contents, and the recommended usage context. The only notable omission is the failure mode for an invalid/expired API key and any pagination or detail level of the summary, but the tool still appears callable and interpretable without further information.

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?

The input schema has zero parameters, so the description correctly adds no parameter noise; per the baseline for 0-param tools this earns a 4. The description does not need to explain any parameter semantics since none exist.

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 names a specific verb ('Verify the Roo API key') and a concrete deliverable ('compact account summary (email, plan, limits, subscription dates)'). The title 'Roo — who am I' reinforces the identity/account-check intent. None of the sibling tools (shortlink, QR, webhook, domain, redirect management) perform account verification, so it is clearly distinguishable without inspecting any schemas.

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?

The description explicitly states when to call it: 'Use to check that Roo access is working before other operations,' positioning it as a smoke test. It does not name alternatives or state when not to use it, but with 13 siblings all doing unrelated shortlink/config/QR operations, no real alternative exists; the guidance is clear though not exhaustive.

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. Dates show when Glama detected each change.

  1. 14 tool updatesv0.1.2
    • First observedroo_create_shortlink
    • First observedroo_get_qr_code
    • First observedroo_get_shortlink
    • First observedroo_list_custom_domains
    • First observedroo_list_shortlinks
    • First observedroo_make_permanent
    • First observedroo_set_click_count_redirect
    • First observedroo_set_preview_link
    • First observedroo_set_qr_addon
    • First observedroo_set_scheduled_redirect
    • First observedroo_set_webhook
    • First observedroo_update_permanent_settings
    • First observedroo_update_shortlink
    • First observedroo_whoami

TDQS

A3.9/5.0
Disambiguation4/5

The tool set is largely distinct: shortlink CRUD, previews, QR codes, webhooks, and redirect rules each map to separate responsibilities. The main overlap is between roo_make_permanent and roo_update_permanent_settings, since both can enable permanent mode and the latter is also used to disable it.

Naming Consistency4/5

Most tools follow a consistent roo_verb_object snake_case pattern such as list_shortlinks, create_shortlink, get_shortlink, and set_webhook. Minor outliers like roo_whoami and roo_make_permanent break the object-noun pattern, but overall the naming is predictable.

Tool Count4/5

14 tools is a reasonable size for a shortlink platform covering core CRUD, custom domains, QR codes, redirect rules, webhooks, and preview settings. The count is slightly padded by redundant permanent-link control, but no tool feels wildly out of place.

Completeness3/5

Core operations are well covered for shortlink creation, retrieval, updating, and listing, plus several add-on features. However, there is no delete/remove shortlink tool, and add-ons like webhooks, QR codes, or redirect rules cannot be explicitly disabled — only replaced.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to create, manage, and analyze short URLs through complete URL shortening functionality. Supports batch operations, custom domains, click statistics, and comprehensive link management.
    6
    18
    1
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to create and manage short URLs via the MCP protocol, with OAuth authentication through Cloudflare Access.
    13
    Apache 2.0

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/dzisner/roo-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server