Skip to main content
Glama

Server Details

Rams is a design reviewer for UI code. The MCP server puts the hosted engine inside a coding agent: the agent passes files to the review_files tool and gets back a 0–100 score with file:line issues and concrete fixes — accessibility, color, typography, spacing, components, UX, motion, craft, and native SwiftUI. Same engine and scoring as the Rams GitHub App. 258 rules, published at rams.ai/rules. Free tier: 30 reviews/month.

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
100.0% over 54 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.5/5.0

Scored across 5 tools

Disambiguation5/5

Each tool targets a distinct output or phase: quick_review (fast issues, no score/patch), review_files (score + patches), review_url (live page), verify_fixes (re-check findings), and usage (quota). The descriptions explicitly cross-reference each other to steer selection (e.g. 'For a score or patches, use review_files'). The quick_review vs review_files overlap is clearly delineated by output, not ambiguous.

Naming Consistency4/5

Most names follow a verb_noun pattern in snake_case (review_files, review_url, verify_fixes), which is predictable. Minor deviations: quick_review puts the modifier first and 'usage' is a bare noun, but all are still readable and coherent.

Tool Count5/5

Five tools is well-scoped for a design/accessibility review service, with each tool earning its place across the quick-review, full-review, URL, verification, and quota-check needs. No redundant or filler tools.

Completeness4/5

The surface covers the full review lifecycle (quick feedback, scored full review, live URL review, and post-fix verification) plus quota visibility. Minor gap: no way to list or retrieve past reviews/history, so findings must be carried forward manually into verify_fixes.

Available Tools

5 tools
quick_reviewRams quick checkAInspect

Fast design and accessibility check of UI code (React, Vue, Svelte, HTML, CSS, SwiftUI). Returns the top issues with severity, category and file:line in about 10 seconds. Call it when the user pastes or uploads UI code, asks whether a design is good or accessible, or when you just wrote or changed a component, page or view. You do not need to ask first. Pass each file with its real path, or for pasted code a path that fits it (pasted/Card.tsx, pasted/index.html) and the full code. Five quick checks cost one review credit (two on the free plan). It reads code only, not screenshots or URLs. It returns no score and no patch: fix the issues yourself. For a score or patches, use review_files.

ParametersJSON Schema
NameRequiredDescriptionDefault
viaNoSet to "rules" when this call is made because of a standing instruction in a rules file (e.g. CLAUDE.md). Omit when a person asked for the review.
filesYesThe UI code, one entry per file (up to 20): the real path, or for pasted code a path that fits it (pasted/Card.tsx), and the full code
contextNoShort label, e.g. the component or feature name

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only declare shallow hints (readOnlyHint=false, idempotentHint=false); the description adds the details an agent actually needs: ~10s latency, credit cost (one per five checks, two on free plan), code-only input with no screenshot/URL support, and the fact that no score or patch is returned. This is well beyond what the structured fields convey.

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?

Dense but front-loaded: framework list and output shape come first, then triggers, then constraints and credit cost. Slightly redundant in restating the path-for-pasted-code rule that the schema already carries, but nearly every sentence adds actionable 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?

For a read/compute tool with no output schema, the description covers return shape (top issues with severity, category, file:line), latency, cost, input limits, and sibling routing. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so baseline is 3, but the description earns extra by explaining how to populate 'path' for pasted code (pasted/Card.tsx, pasted/index.html) and that full code must be supplied, which the schema does not spell out. The maxItems=20 cap is left to the schema, so it is not a full 5.

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?

Names a specific verb (design and accessibility check) and resource (UI code), enumerating supported frameworks so scope is unambiguous. It explicitly distinguishes itself from review_files ('returns no score and no patch') and rules out screenshots/URLs, so an agent can separate it from review_url and review_files without opening schemas.

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 concrete trigger conditions ('when the user pastes or uploads UI code', 'asks whether a design is good or accessible', 'when you just wrote or changed a component'), removes a common hesitation ('You do not need to ask first'), and names the alternative for other needs ('For a score or patches, use review_files'). When-to-use, when-not, and alternatives are all present.

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

review_filesRams design reviewAInspect

Full Rams design review of UI code (React, Vue, Svelte, HTML, CSS, SwiftUI). Returns a 0-100 score (criticals cap it: one caps at 59, two at 49, three or more at 39), issues with severity, category, file:line, and concrete fixes as patches. Call it once at the end: before a commit, or when the user wants a score or a final check. Pass each file with its real path, or for pasted code a path that fits it (pasted/Card.tsx). Each call uses one review credit. Reviewing a few files needs no permission. Ask the user before a whole-codebase audit (dozens of files), since it spends their allowance. For quick feedback while you work, use quick_review.

ParametersJSON Schema
NameRequiredDescriptionDefault
viaNoSet to "rules" when this call is made because of a standing instruction in a rules file (e.g. CLAUDE.md). Omit when a person asked for the review.
filesYesThe UI code, one entry per file (up to 20): the real path, or for pasted code a path that fits it (pasted/Card.tsx), and the full code
contextNoShort label for this review, e.g. the feature or branch name

Output Schema

ParametersJSON Schema
NameRequiredDescription
scoreYes0-100; confirmed criticals cap it — one at 59, two at 49, three or more at 39
issuesYes
summaryYes
directionNoWhat the change is trying to be — judgment before findings
reviewsUsedYes
reviewsLimitYesnull = unlimited (Team overage applies instead)
detectedCountsYes

TDQS

A4.6/5.0
Behavior5/5

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

Goes well past the annotations by disclosing the credit cost per call ("Each call uses one review credit"), the permission threshold for large audits, and the scoring behavior including critical-capping rules (59/49/39). Annotations only say readOnly=false, destructive=false, idempotent=false; they convey none of this operational context.

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?

Front-loads what the tool is and what it returns, then the when-to-call and cost/permission rules. Dense and mostly waste-free, though the permission and credit sentences could be tightened into one.

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 re-explained, yet the description still summarizes the score/issue shape helpfully. Cost, permission, timing, and alternatives are all covered for a tool with a 20-file batch limit.

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 baseline is 3. The description restates the path convention (real path vs. pasted/Card.tsx) that the schema already documents, and adds nothing for the "via" or "context" parameters. It does not meaningfully extend 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?

States a specific verb+resource ("Full Rams design review of UI code") and enumerates the scopes it covers (React, Vue, Svelte, HTML, CSS, SwiftUI). It also names the sibling it is not (quick_review) for the fast-feedback case, so an agent can distinguish both 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 Guidelines5/5

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

Explicit timing ("Call it once at the end: before a commit, or when the user wants a score"), an explicit cheaper alternative ("for quick feedback while you work, use quick_review"), and explicit permission gating ("Ask the user before a whole-codebase audit"). Nothing is left to inference.

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

review_urlRams page reviewAInspect

Review a live public web page by its URL, no code needed. Rams opens the page at desktop (1440px) and phone (390px) widths, measures the rendered page and looks at both screenshots, then returns the top design issues (severity, category, where on the page, and a fix in plain words) with a 0-100 score. Use it when the user names a site or a page: "review rams.ai with Rams", "how does my landing page look?". It takes up to a minute and uses one review credit. Public pages only: no sign-in pages, localhost or private addresses. It returns no code patches. If the user has the code for the page, use quick_review or review_files on those files instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe page to review, e.g. https://rams.ai or rams.ai/pricing
focusNoOptional: what to put first, e.g. "mobile", "typography", "color"

TDQS

A4.6/5.0
Behavior5/5

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

Adds substantial context beyond annotations: it takes up to a minute, consumes one review credit, renders at two specific viewport widths (1440px, 390px), inspects screenshots, and returns no code patches. This covers cost, latency, and output nature, which the annotations (readOnlyHint=false, openWorldHint=true) alone do not.

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?

Front-loads the core action and scope, then lists constraints and routing. It is dense but every sentence earns its place; the quoted examples add a little padding but are useful for trigger matching.

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 no output schema, the description fully describes the return value (severity, category, location, plain-word fix, 0-100 score) as well as limits, credits, and eligibility constraints. An agent has everything needed to call it correctly and set expectations.

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 both url and focus are already documented in the schema. The description adds no syntax or behavior detail for the parameters themselves (viewport widths are fixed behavior, not params). Baseline 3 applies since the schema carries the parameter load.

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: 'Review a live public web page by its URL, no code needed.' It clearly distinguishes itself from siblings like review_files and quick_review, which operate on files, while this one operates on a live URL.

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 explicit when-to-use triggers with quoted examples ('review rams.ai with Rams'), hard exclusions (public pages only: no sign-in, localhost, or private addresses), and routes the agent to quick_review or review_files when the user has code. All the selection logic is spelled out.

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

usageRams review quotaA
Read-onlyIdempotent
Inspect

Check how many Rams reviews this account has used and how many are left. Free to call. It does not use a review.

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?

Annotations already declare readOnlyHint/idempotentHint/destructiveHint, so the safety profile is covered; the description adds a genuinely useful behavioral fact beyond them — the call is free and does not consume a review. It also hints at the payload ('how many used and how many left'), though it does not describe return format or whether counts reset.

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 short sentences with no filler, front-loaded with the action and resource; the cost caveat follows immediately.

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 no-parameter, read-only quota check with annotations covering safety, the description supplies enough: what it returns conceptually and that it costs nothing. Only minor gaps remain (no output schema, no statement of reset period or whether counts are per-account).

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?

Zero parameters, so the baseline is 4; there is nothing for the description to document. No account identifier is shown in the schema, which the description also does not address, but this tool takes no inputs.

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+resource ('Check ... Rams reviews ... used / left') that is unambiguous against siblings like quick_review and review_url, which consume reviews. The final sentence 'It does not use a review' explicitly separates this quota tool from the review-performing siblings.

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?

'Free to call. It does not use a review' gives a clear condition for when this is the right, low-cost choice versus the review-consuming siblings. It stops short of naming an alternative or stating a recommended ordering (e.g. check before reviewing), so it is clear context without explicit routing.

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

verify_fixesVerify Rams fixes landedA
Read-onlyIdempotent
Inspect

Re-check findings from an earlier Rams review against the updated code. Pass the new version of each file under the same path as before, plus the findings. Returns fixed or still present for each one. Free: it never counts against the user's quota. Use it after you fix the issues.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYesThe updated UI files (same paths as the original review)
issuesYesThe findings to verify, as returned by review_files

Output Schema

ParametersJSON Schema
NameRequiredDescription
fixedYes
presentYes
allClearYestrue when nothing remains, including no remaining criticals

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the safety profile is covered. The description adds genuinely useful context beyond them: it discloses the return semantics ('fixed or still present for each one') and a cost trait ('Free: it never counts against the user's quota'). This is meaningful added value over the structured fields.

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?

Four short sentences, each earning its place: what it does, what to pass, what it returns, and cost/usage. The core action is front-loaded and there is no filler.

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 and rich annotations covering the safety profile, the description supplies everything else an agent needs: the input pairing convention, the return semantics, and the quota context. Nothing required for correct invocation is missing.

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 description coverage is 100%, so the baseline would be 3. The description adds meaning beyond the schema by stating that files must use the same paths as the original review and that the findings are passed alongside them, clarifying the pairing relationship between the two parameters.

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 (re-check/verify) and resource (findings from an earlier Rams review against updated code), and clearly separates it from the finding-producing sibling review_files. An agent can tell this is the follow-up verification tool without opening the 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?

Gives clear when-to-use guidance ('Use it after you fix the issues') and the precondition that files must be passed under the same paths as the original review. It does not explicitly name review_files as the source of the issues, but the phrase 'as returned by review_files' in the schema and 'earlier Rams review' make the context clear.

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. 3 tool updates
    • Changedquick_review1 field changed
      • changedInput schema / properties / files / description
        Previous value: -"The UI files you just changed"New value: +"The UI code, one entry per file (up to 20): the real path, or for pasted code a path that fits it (pasted/Card.tsx), and the full code"
    • Changedreview_files1 field changed
      • changedInput schema / properties / files / description
        Previous value: -"UI files to review (up to 20)"New value: +"The UI code, one entry per file (up to 20): the real path, or for pasted code a path that fits it (pasted/Card.tsx), and the full code"
    • Addedreview_url
  2. 2 tool updates
    • Changedquick_review1 field changed
      • addedInput schema / properties / via
        Added value: +{
        +  "description": "Set to \"rules\" when this call is made because of a standing instruction in a rules file (e.g. CLAUDE.md). Omit when a person asked for the review.",
        +  "type": "string"
        +}
    • Changedreview_files1 field changed
      • addedInput schema / properties / via
        Added value: +{
        +  "description": "Set to \"rules\" when this call is made because of a standing instruction in a rules file (e.g. CLAUDE.md). Omit when a person asked for the review.",
        +  "type": "string"
        +}
  3. 1 tool update
    • Addedquick_review
  4. 1 tool update
    • Changedreview_files1 field changed
      • changedOutput schema / properties / score / description
        Previous value: -"0-100; any confirmed critical caps it at 59"New value: +"0-100; confirmed criticals cap it — one at 59, two at 49, three or more at 39"
  5. 1 tool update
    • Addedverify_fixes
  6. 1 tool update
    • Changedreview_files1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "http://json-schema.org/draft-07/schema#",
        +  "additionalProperties": false,
        +  "properties": {
        +    "detectedCounts": {
        +      "additionalProperties": false,
        +      "properties": {
        +        "critical": {
        +          "type": "number"
        +        },
        +        "moderate": {
        +          "type": "number"
        +        },
        +        "serious": {
        +          "type": "number"
        +        }
        +      },
        +      "required": [
        +        "critical",
        +        "serious",
        +        "moderate"
        +      ],
        +      "type": "object"
        +    },
        +    "direction": {
        +      "description": "What the change is trying to be — judgment before findings",
        +      "type": "string"
        +    },
        +    "issues": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "category": {
        +            "type": "string"
        +          },
        +          "file": {
        +            "type": "string"
        +          },
        +          "fix": {
        +            "description": "The fix as prose/code",
        +            "type": "string"
        +          },
        +          "line": {
        +            "type": "number"
        +          },
        +          "message": {
        +            "type": "string"
        +          },
        +          "patch": {
        +            "description": "RAMS-121: unified diff against the submitted file content, git-apply-able. Present only when the fix locates unambiguously.",
        +            "type": "string"
        +          },
        +          "severity": {
        +            "type": "string"
        +          },
        +          "title": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "severity",
        +          "category",
        +          "title",
        +          "message",
        +          "file",
        +          "line"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "reviewsLimit": {
        +      "description": "null = unlimited (Team overage applies instead)",
        +      "type": [
        +        "number",
        +        "null"
        +      ]
        +    },
        +    "reviewsUsed": {
        +      "type": "number"
        +    },
        +    "score": {
        +      "description": "0-100; any confirmed critical caps it at 59",
        +      "type": "number"
        +    },
        +    "summary": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "score",
        +    "summary",
        +    "detectedCounts",
        +    "issues",
        +    "reviewsUsed",
        +    "reviewsLimit"
        +  ],
        +  "type": "object"
        +}
  7. 2 tool updates
    • First observedreview_files
    • First observedusage

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    24 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources