Skip to main content
Glama

RooQuiz

Server Details

Create and manage quizzes, leads, and respondents on RooQuiz, a lead-capture assessment platform.

Ownership verified
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
ChatGPT
–
Claude
–

TDQS

A3.9/5.0

Scored across 42 tools

Disambiguation3/5

Most tools are clearly scoped (form CRUD, question editing, translations, media upload, tenants), but the lead / record / examinee cluster is genuinely blurry: list_leads and list_records are described as the same underlying entity, and get_lead, get_record and get_examinee offer three overlapping views of one person. Descriptions acknowledge the overlap, which mitigates but does not remove misselection risk.

Naming Consistency4/5

Nearly everything follows a snake_case verb_noun pattern (list_forms, create_form, update_question, delete_form_translation, assign_leads, switch_active_tenant), which is predictable. Minor deviation: append-style tools mix add_question, insert_question and add_lead_comment, and the two-step image flow uses prepare_/finalize_ rather than the CRUD verbs.

Tool Count2/5

42 tools is heavy for one surface; while the server legitimately spans quiz building, translations, media, analytics, CRM leads and multi-team administration, the breadth forces an agent to wade through large clusters (5 translation tools, 5 question tools, 12 lead/record/booking tools). A flatter or more consolidated surface would be easier to drive.

Completeness4/5

Form lifecycle is fully covered — create/from-template/duplicate/get/update/soft-delete/restore, per-question CRUD plus reordering, translations, delivery settings, share info, stats and funnel — and leads have get/update/tags/assign/comments. Gaps are mostly around team administration (invite_member exists but no list_members, role update or remove) and media management (upload but no list/delete), plus bookings are read-only by design.

Available Tools

42 tools
add_lead_commentAdd lead commentAInspect

Write an internal follow-up note on a lead of the current team (visible to team members only, never to the respondent). Max 2000 characters. Optionally attach the record id of the submission the note is about, as context. Read existing notes with get_lead(includeComments: true). Not idempotent: if the call times out it may still have succeeded, so retrying blindly can create a duplicate — check first, then retry only if it is really missing.

Inputs: body (required), leadId (required), recordId. Returns: body, leadId, commentId, createdAt

add_questionAdd questionAInspect

Append an item to the end of a form: a question, a page break (Breaker — only formId + type are needed, other fields are ignored) or a display block (Statement / Swiper). Item fields, their per-type / per-scene rules and the question types themselves are exactly those of create_form questions[] — read the full field descriptions there. Limit: a quiz holds at most 50 questions on every plan (page breaks, statements and carousels do not count). An ai_quiz holds at most 20. Not idempotent: if the call times out it may still have succeeded, so retrying blindly can create a duplicate — check first, then retry only if it is really missing.

Inputs: type (required), formId (required), max, min, +27 more. Returns: field, formId, itemCount

assign_leadsAssign leadsA
Destructive
Inspect

Assign one or more leads of the current team to a member, or clear the assignee. Pass every lead id in a single call (up to 50) — do not loop one call per lead. The assignee must be an active member (see list_lead_settings.assignableMembers); pass "me" for yourself, or omit / null to unassign. Each actual change is recorded on the lead's timeline. When assigning, the assignee gets one aggregated in-app notification and, if enabled in their notification preferences, one email for the whole batch; assigning the same owner again does not notify them again.

Inputs: leadIds (required), assigneeId. Returns: count, items, assigneeId

create_formCreate formAInspect

Create a form in the team this token is bound to. Pass the questions array and report configuration in one call instead of following up with per-question calls. In the outcome_quiz scene report.outcomes is REQUIRED at create time (TrueFalse votes via trueOutcomes/falseOutcomes). In the ai_quiz scene nothing is scored: set custom question codes and pass report.aiReport.instructions referencing them as {{code}} in this same call. For a scored_quiz with dimensions, define report.dimensionAnalysis.dimensions with codes and formulas over question codes in this same call; a question may override its score for one dimension via choices[i].dimensionScores (TrueFalse: trueDimensionScores/falseDimensionScores). The returned structuredContent.fields carries each question code — read those first if you need to reference them: a scored_quiz totals its question scores by default, and only needs report.formula (e.g. {{q_a}} * 2 + {{q_b}}) for a custom total; dimensions go in report.dimensionAnalysis via update_form / set_dimension_analysis. Creates the primary language only; add other languages with create_form_translation. Limit: a quiz holds at most 50 questions on every plan (page breaks, statements and carousels do not count). An ai_quiz holds at most 20. Not idempotent: if the call times out it may still have succeeded, so retrying blindly can create a duplicate — check first, then retry only if it is really missing.

Inputs: scene (required), title (required), theme, report, +5 more. Returns: id, url, scene, theme, +8 more

create_form_from_templateCreate form from templateAInspect

Create a new form in the current team from a public template (find template ids with list_templates). Clones the template structure, scoring/report configuration, visual settings, and all language versions in one call. Links set by the template author are not copied: redirect-after-submit is dropped and result-page CTA buttons keep their text but come over switched off with no URL — tell the user to add their own link and turn them back on. Pass title to override the template title. After creation you can adjust it with update_form / update_question etc. This is the fastest way to build a quiz when a suitable template exists — prefer it over building from scratch with create_form. Not idempotent: if the call times out it may still have succeeded, so retrying blindly can create a duplicate — check first, then retry only if it is really missing.

Inputs: templateId (required), title. Returns: id, url, scene, title, +4 more

create_form_translationCreate form translationAInspect

Add a language version (translation) to a form. Clones the source text as the initial draft and returns it so you can translate right away: edit the human-readable text in place, keep every code identical to the source, then save with update_form_translation. The language must differ from the form's primary language, and there is at most one translation per language (see list_form_translations).

Inputs: formId (required), language (required). Returns: cloned, formId, language, shareUrl, +2 more

delete_formDelete formA
Destructive
Inspect

Move a form into the trash (soft delete) in the current team. The form is hidden from list_forms but kept recoverable for 5 days (then auto-purged); use restore_form to bring it back. Any member of the team can do this. Submission records are kept until permanent purge.

Inputs: formId (required). Returns: formId, message

delete_form_translationDelete form translationA
Destructive
Inspect

Delete one language version (translation) of a form. Submission records are anchored to the source form and are NOT deleted; reports for historical records in this language fall back to the source text. The primary language cannot be deleted this way (it lives on the form itself).

Inputs: formId (required), language (required). Returns: formId, deleted, language

delete_questionDelete questionA
Destructive
Inspect

Delete a single item from a form by code — a question, a page break (Breaker) or a display block (Statement / Swiper). Deleting the last one is allowed (a form can be an empty shell). In the ai_quiz scene, {{code}} references to the deleted question are also removed from report.aiReport.instructions.

Inputs: code (required), formId (required). Returns: formId, deletedCode, remainingCount

duplicate_formDuplicate formAInspect

Duplicate a form in the current team: clones its structure, scoring, report, visual settings and all language translations into a brand-new form owned by you (with fresh share links). Does NOT copy submission records, sharing, integrations, or ban state. Useful for cloning a proven quiz and tweaking it. Not idempotent: if the call times out it may still have succeeded, so retrying blindly can create a duplicate — check first, then retry only if it is really missing.

Inputs: sourceFormId (required), newTitle. Returns: id, url, scene, title, +4 more

finalize_image_uploadFinalize image uploadAInspect

Step 2 of 2 for adding an image: call this AFTER you have PUT the file to the uploadUrl returned by prepare_image_upload. It verifies the uploaded object in storage, records it in the team media library and returns a media id + public URL. To use the image as a quiz cover or a landing-page cover, call update_form with flagImg or landingImage set to the returned media id.

Inputs: key (required), filename (required), mimeType (required), alt. Returns: key, url, mediaId, filename, +2 more

get_active_tenantGet active teamA
Read-only
Inspect

Return the team (tenant) this token is currently operating against. All write tools default to this team.

Inputs: no named parameters. Returns: id, name, role, slug

get_examineeGet respondentA
Read-only
Inspect

View the full detail of one examinee (a.k.a. respondent) in the current team by its examineeId (the business ID shown in list_examinees, e.g. AB1234567890), including customData. Sensitive auth fields are never returned.

Inputs: examineeId (required). Returns: name, email, avatar, tenant, +6 more

get_formGet formA
Read-only
Inspect

View one form of the current team in full, including the questions list fields[] and the report configuration. For outcome forms, the outcome codes that question votes reference live in report.outcomeAnalysis.outcomes. language is the primary language; existing non-primary language versions are listed in translationLanguages.

Inputs: id (required), includeFields, includeReport. Returns: id, scene, theme, title, +12 more

get_form_funnelGet form funnelA
Read-only
Inspect

Read the conversion funnel for a form in the current team over the last N days, from the form_sessions telemetry: overall stages (viewed → started → submitted → leadCaptured → reportViewed → ctaClicked → shared; leadCaptured is counted from submissions bound to a respondent account, not from telemetry), per-channel funnel (by utm_source, with embedded flag), UTM combos, and drop-off points (which question unsubmitted sessions stalled on). Use this to find where respondents drop and improve conversion.

Inputs: formId (required), days. Returns: days, formId, dropOff, overall, +2 more

get_form_share_infoGet form share infoA
Read-only
Inspect

Everything needed to put a form of the current team in front of an audience: the public answer link (also per language version), the team's custom domain and whether it is actually serving, ready-to-paste embed snippets in three modes (inline / popup / iframe), and the current delivery settings so you can tell whether the form will even accept responses. Pass utmSource to get every link and snippet tagged for one channel. Use this to answer "give me the link / the embed code" and to sanity-check a launch; change the switches with update_form_settings.

Inputs: formId (required), utmSource, iframeHeight, popupButtonText. Returns: slug, embed, title, formId, +6 more

get_form_statsGet form statsA
Read-only
Inspect

Read submission statistics for a form in the current team: KPI overview (total / today / last 7 / last 30, unique examinees, anonymous, report status counts, average score, latest submission), daily submission trend, channels (by utm_source), UTM combos, login types (anonymous vs registered), device breakdown, and per-question answer distributions. days only sets the length of the daily trend; every other block counts all submissions ever made. Answer distributions cover only the first 10 SingleCheck / DropDown / Rate / TrueFalse questions in form order (other types, MultiCheck included, are not counted); each bucket carries the choice label next to its stored value. Use this to gauge how a quiz is performing and to suggest improvements.

Inputs: formId (required), days. Returns: days, trend, formId, devices, +5 more

get_form_translationGet form translationA
Read-only
Inspect

Read the full content of one language version (translation) of a form, including the mirrored fields[] and report. Use this to fetch the current draft before translating: edit the human-readable text in place, keep every code identical to the source form, then save with update_form_translation. Returns an error if that language version does not exist yet (create it first with create_form_translation).

Inputs: formId (required), language (required). Returns: title, fields, formId, report, +9 more

get_leadGet leadA
Read-only
Inspect

View one lead of the current team by leadId: follow-up status, assignee, colour tags, the respondent block, and the next upcoming booking. Optionally include the respondent's submission history (which quizzes they took, with score / level), the team's internal follow-up comments, and the change timeline (status / assignee / tag changes plus submissions). Reference a lead by its leadId and a respondent by examineeId, never by a masked email.

Inputs: leadId (required), includeRecords, includeComments, includeActivities. Returns: tags, leadId, status, records, +10 more

get_recordGet recordA
Read-only
Inspect

View the full detail of one submission record (lead) in the current team by its record id (the id field returned by list_records), including the examinee, the submitted answers, UTM metadata and the business report result (overall / dimensions / outcome / AI report / AI evaluation), with internal diagnostics omitted and quoted contacts masked. Answers are returned as the respondent wrote them, except that any email address or phone number inside them comes back masked.

Inputs: recordId (required). Returns: id, data, formId, examinee, +7 more

insert_questionInsert questionAInspect

Insert an item at a specific position: a question, a page break (Breaker) or a display block (Statement with content / Swiper with items). Use after / before to reference an existing field code (from get_form's field.code). To insert at the very front: before references the first field's code. To insert at the end, use add_question. Item fields, their per-type / per-scene rules and the question types themselves are exactly those of create_form questions[] — read the full field descriptions there. Limit: a quiz holds at most 50 questions on every plan (page breaks, statements and carousels do not count). An ai_quiz holds at most 20. Not idempotent: if the call times out it may still have succeeded, so retrying blindly can create a duplicate — check first, then retry only if it is really missing.

Inputs: type (required), formId (required), max, min, +29 more. Returns: field, formId, position, itemCount

invite_memberInvite memberA
Destructive
Inspect

Invite someone to the active team (tenant) by email. The pending membership is created immediately and an invitation email with a join link is queued for delivery; the link and its token are never returned in the tool result. Only the team owner or an admin can invite; the call is rejected for other roles. role defaults to "member" and may be "admin". Members can create and edit every form, response, respondent and lead of the team; admins also manage members and team settings. You cannot invite someone as the owner. Fails if the email is already a member or already has a pending invite, or if the team has hit its member limit. Operates on the team this token currently targets — use list_my_tenants / switch_active_tenant to change teams first.

Inputs: email (required), role. Returns: role, email, membershipId, invitationQueued, +1 more

list_bookingsList bookingsA
Read-only
Inspect

List the bookings of the current team, earliest first: calls respondents booked through Cal.com from a quiz result page (synced back by the Cal.com connector; provider "calcom"), plus read-only history from the retired built-in scheduler (provider "native"). Each item carries the time range, status, the Cal.com event type, the attendee, the source quiz and submission, and the lead owner. Read-only: reschedule, cancel or confirm a booking in Cal.com and the change syncs back. Filter by status / quiz / respondent / time range. Reference a booking by its bookingId; the attendee name / email come back masked.

Inputs: to, from, page, sort, +5 more. Returns: page, items, totalDocs, totalPages

list_examineesList respondentsA
Read-only
Inspect

List the examinees — also called respondents, the people who answer the quizzes — of the current team, newest first. Sensitive auth fields (password, verification code, reset token, etc.) are never returned. The examineeId business ID is returned unmasked and is what get_examinee takes. Use get_examinee for one examinee's full detail including customData.

Inputs: limit, search. Returns: count, items, total

list_formsList formsA
Read-only
Inspect

List the forms of the current team. Returned in reverse chronological order of creation, without question content (use get_form for details).

Inputs: limit, scene, titleContains. Returns: items, totalDocs

list_form_translationsList form translationsA
Read-only
Inspect

List the existing language versions (translations) of a form. Returns each translation's language, isActive flag, public share link and timestamps. The primary language lives on the form itself (see get_form.language) and is not listed here.

Inputs: formId (required). Returns: count, formId, translations

list_leadsList leadsA
Read-only
Inspect

List the leads (CRM records) of the current team — one lead per respondent across all forms, carrying follow-up status, assignee, colour tags, submission count and the next upcoming booking. Newest activity first by default. Filter by status / assignee / tags / created-at range / keyword / whether they have an upcoming booking. Status codes and tag codes are team-defined — call list_lead_settings first to get the valid ones, never guess. Reference a lead by its leadId and a respondent by examineeId, never by a masked email.

Inputs: page, sort, limit, status, +6 more. Returns: page, items, totalDocs, totalPages, +1 more

list_lead_settingsList lead settingsA
Read-only
Inspect

Read the current team's lead configuration: the follow-up status codes (with label and colour, in display order), the colour tag library, and the members a lead can be assigned to. Call this before update_lead / set_lead_tags / assign_leads — status codes, tag codes and member ids are all team-specific and the write tools reject unknown values.

Inputs: no named parameters. Returns: tags, statuses, assignableMembers

list_my_tenantsList my teamsA
Read-only
Inspect

List all teams (tenants) the current user belongs to. isActive marks the team this token currently operates against.

Inputs: no named parameters. Returns: tenants, activeTenantId

list_recordsList recordsA
Read-only
Inspect

List submission records (leads) of the current team, newest first. Each item includes the examinee (name / email / customData if captured), the submitted answers, UTM metadata and a compact report result (status / score / level / outcome). Optionally filter by form, report status, and submitted-at range. Reference a respondent by examineeId, never by a masked email; email addresses and phone numbers written into the answers come back masked too. Use get_record for one record's full detail.

Inputs: page, limit, since, until, +2 more. Returns: page, items, limit, totalDocs

list_templatesList templatesA
Read-only
Inspect

List active templates in the public template library (id, title, scene, use cases, description, category, recommended flag, usage count), most-used first. Filter by useCase to find templates for a goal across scenes (e.g. "personality" also returns scored_quiz personality tests). Use this to find a template, then call create_form_from_template with its id to create a form from it — the fastest way to build a quiz when a suitable template exists.

Inputs: limit, scene, useCase, categoryId, +2 more. Returns: page, items, totalDocs, totalPages, +1 more

move_questionMove questionAInspect

Move an existing item (question, page break or display block) to a specific position by code. Choose either after or before, referencing another field's code. Move to the front: before references the current first field's code. Move to the end: after references the current last field's code.

Inputs: code (required), formId (required), after, before. Returns: to, code, from, formId, +3 more

prepare_image_uploadPrepare image uploadAInspect

Step 1 of 2 for adding an image (PNG / JPEG / GIF / WebP) to the current team media library. This tool does NOT receive image bytes — it returns a short-lived presigned URL you upload the file to directly, so even large images never pass through this conversation. Workflow: (1) save the image to a local temp file; (2) if the file is larger than 5MB, compress / downscale it to 5MB or less FIRST (e.g. sips -Z 2048 in.png --out out.jpg on macOS, or magick in.png -resize "2048x2048>" -quality 82 out.webp) — uploads over 5MB are rejected; (3) call this tool with filename, mimeType and (optionally) fileSize; (4) HTTP PUT the temp file to the returned uploadUrl with the matching Content-Type header, e.g. curl -X PUT --upload-file <file> "<uploadUrl>" -H "Content-Type: image/png"; (5) call finalize_image_upload with the returned key; (6) delete the temp file. Max 5MB after compression. Only image/png, image/jpeg, image/gif and image/webp are accepted.

Inputs: filename (required), mimeType (required), fileSize. Returns: key, expiresIn, uploadUrl, requiredContentType

restore_formRestore formAInspect

Restore a form from the trash in the current team (undo delete_form). Any member of the team can restore; errors if the form is not in the trash.

Inputs: formId (required). Returns: formId, message

set_dimension_analysisSet dimension analysisA
Destructive
Inspect

Set the multi-dimension analysis (form.report.dimensionAnalysis) of a form, replacing the dimension list without touching overallAnalysis (title / radar settings you omit are kept). Dimension codes are stable: pass dimensions[].code to keep or set one, or omit it and a dimension with the same name keeps its existing code. Only scored_quiz forms have dimensions; every dimension needs a formula over question codes (e.g. {{q1}} + {{q2}}), where a question's choices[i].dimensionScores override its plain choice score for that dimension. A dimension still referenced by a question's dimensionScores or by report.formula (the overall formula) cannot be removed. Pass an empty dimensions array to clear the multi-dimension analysis. Call get_form first to read the question and dimension codes. Not supported for knowledge_quiz / outcome_quiz / ai_quiz forms.

Inputs: formId (required), title, dimensions, showRadarChart, +1 more. Returns: formId, dimensions, dimensionCount

set_lead_tagsSet lead tagsA
Destructive
Inspect

Set the colour tags on one or more leads of the current team. Pass every lead id in a single call (up to 50) — do not loop. mode: "replace" (default, overwrite the whole tag set — for editing a single lead), "add" or "remove" (for batches, where each lead has different tags and overwriting would wipe other people's tags). Tag codes must exist in the team's tag library (see list_lead_settings.tags); "remove" also accepts stale codes. Changes are recorded on each lead's timeline.

Inputs: tags (required), leadIds (required), mode. Returns: mode, count, items

switch_active_tenantSwitch active teamAInspect

Switch the active team (tenant) for this token. The change persists across sessions until switched again. Caller must be a member of the target team.

Inputs: tenantId (required). Returns: id, name, slug

update_formUpdate formA
Destructive
Inspect

Update a form of the current team: title / description / isActive / flagImg / landingImage / theme / report / openGraph / language / systemText. flagImg is the quiz cover, landingImage the landing-page cover (sets the image only, does not toggle the landing page); both take a media id from finalize_image_upload, a media URL, or "" to clear. report and openGraph (the social share card on the answer link) merge by sub-key — only what you pass is replaced, "" clears an openGraph sub-key; in the outcome_quiz scene outcomes are matched by code so existing images survive, and removing an outcome still referenced by question votes is rejected. systemText is replaced wholesale ({} clears it). language is changeable only while the form has no language versions; scene never. Questions go through add_question / update_question / delete_question / move_question, dimensionAnalysis alone through set_dimension_analysis.

Inputs: id (required), theme, title, report, +7 more. Returns: id, scene, theme, title, +9 more

update_form_settingsUpdate form settingsA
Destructive
Inspect

Change how a form of the current team is delivered, as opposed to what it says (use update_form for title / questions / report / theme). Editable: submissionAccess (who may answer and whether seeing the report needs a login — this is the lead-capture gate), reportGateRequireCode (whether that login gate collects an emailed verification code, trading completion rate against lead quality), timeLimit, sharing (the result-page share button and personalised share card, which is what drives organic spread), answerSheet, crowdCompare (show respondents what share of people picked the same option — off by default, not for knowledge quizzes), instantFeedback (knowledge quizzes only, on by default for newly created ones except level tests: respondents submit each page and see right / wrong, the correct answer and the explanation before moving on), hideScores (hide every score respondents see — report, question points, instant feedback and answer review — while keeping levels and right / wrong), booking (the result-page block that opens the team's Cal.com scheduling link; bookings sync back read-only), feedback (a one-question feedback block on the result page), allowPdfDownload (respondents can download their full report as a PDF — Pro), resultRedirect (send respondents straight to a link chosen by their score level or outcome after they submit, instead of the result page — Pro), defaultCta (the result-page CTA master switch plus the default button for results without their own), hiddenFields (URL parameters such as partner or campaign_id captured with each response for attribution), searchIndexable (whether search engines may list the quiz), and slug (the custom path that gives the public link a memorable, SEO-friendly address). Only the keys you pass are changed. Read the current values with get_form_share_info.

Inputs: formId (required), slug, booking, sharing, +13 more. Returns: slug, formId, changed, delivery

update_form_translationUpdate form translationA
Destructive
Inspect

Save translated copy for one language version of a form. Pass the translated title / description / fields / report / systemText / booking / feedback, mirroring the shape returned by get_form_translation; fields you omit keep their current value and partial translation is allowed. Translation fields[] must not introduce codes that do not exist on the source form. Pass isActive=false to pause just this language version, independently of the form's overall isActive.

Inputs: formId (required), language (required), title, fields, +6 more. Returns: formId, updated, language

update_leadUpdate leadAInspect

Move one lead of the current team to another follow-up status (e.g. new → contacted). The change is recorded on the lead's timeline. Status codes and tag codes are team-defined — call list_lead_settings first to get the valid ones, never guess.

Inputs: leadId (required), status (required). Returns: leadId, status

update_questionUpdate questionA
Destructive
Inspect

Update a single question of an existing form, located by code. Changeable: name / description / explain / required / score / correctAnswer / aiMatch (FillBlank AI grading) / precision (DateField/TimeField picker precision) / min / max / unit / decimalPlaces (NumberField) / words (Rate scale labels) / maxFiles (Attachment) / choices (replaces ALL choices of a choice-based question). NOT changeable — delete_question then add_question instead: question type, Rate steps, DropDown multiple, Ordering shuffle, Attachment kind. DateField / TimeField / Rate reject score / correctAnswer / aiMatch (configure date/time scoring in the web app). The scored_quiz, outcome_quiz and ai_quiz scenes reject the top-level score / correctAnswer / aiMatch as well: pass choices carrying choices[i].score or choices[i].outcomes instead (TrueFalse outcome votes still need delete + recreate). Display blocks are edited here too, with their own keys: Statement takes content, Swiper takes items (replacing all slides), and both take name / description — every question key is rejected on them.

Inputs: code (required), formId (required), max, min, +18 more. Returns: code, field, formId, changed

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      A
      quality
      B
      maintenance
      Create and manage quizzes, question banks, and translations; capture and manage leads, respondents, and bookings; and pull stats and funnel analytics on RooQuiz — a lightweight assessment platform for lead capture and viral sharing.
      52
      1
      MIT
    • F
      license
      Not graded
      quality
      C
      maintenance
      Enables creating and administering multiple quizzes, adding questions, registering participants, validating answers, reviewing responses, and managing leaderboards through MCP, accessible locally via stdio or remotely over HTTP.
      -
    • A
      license
      A
      quality
      B
      maintenance
      Enables AI clients to create, manage, and configure Roo smart shortlinks and their add-ons, such as QR codes, scheduled redirects, and webhooks, through MCP tools.
      14
      13 npm
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources