Design review for UI code and live pages: quick checks, 0-100 scored reviews, fixes as patches
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional. Clients that support OAuth authorize in the browser and need no header. Otherwise send Bearer rams_YOUR_API_KEY from https://www.rams.ai/app/settings (free plan: 15 reviews to try it).
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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.
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
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.
Short label, e.g. the component or feature name
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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.
| Argument | Type | Description |
|---|---|---|
| via | string | 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. |
| files* | array | 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 |
| context | string | Short label, e.g. the component or feature name |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"files"
],
"properties": {
"via": {
"type": "string",
"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."
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"description": "File path, e.g. src/components/Button.tsx"
},
"content": {
"type": "string",
"description": "Full file content"
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1,
"description": "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"
},
"context": {
"type": "string",
"description": "Short label, e.g. the component or feature name"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| via | string | 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. |
| files* | array | 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 |
| context | string | Short label for this review, e.g. the feature or branch name |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"files"
],
"properties": {
"via": {
"type": "string",
"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."
},
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"description": "File path, e.g. src/components/Button.tsx"
},
"content": {
"type": "string",
"description": "Full file content"
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1,
"description": "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"
},
"context": {
"type": "string",
"description": "Short label for this review, e.g. the feature or branch name"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| url* | string | The page to review, e.g. https://rams.ai or rams.ai/pricing |
| focus | string | Optional: what to put first, e.g. "mobile", "typography", "color" |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"maxLength": 2048,
"minLength": 1,
"description": "The page to review, e.g. https://rams.ai or rams.ai/pricing"
},
"focus": {
"type": "string",
"maxLength": 200,
"description": "Optional: what to put first, e.g. \"mobile\", \"typography\", \"color\""
}
},
"additionalProperties": false
}Check how many Rams reviews this account has used and how many are left. Free to call. It does not use a review.
No arguments.
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {}
}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.
| Argument | Type | Description |
|---|---|---|
| files* | array | The updated UI files (same paths as the original review) |
| issues* | array | The findings to verify, as returned by review_files |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"files",
"issues"
],
"properties": {
"files": {
"type": "array",
"items": {
"type": "object",
"required": [
"path",
"content"
],
"properties": {
"path": {
"type": "string",
"description": "File path, e.g. src/components/Button.tsx"
},
"content": {
"type": "string",
"description": "Full file content"
}
},
"additionalProperties": false
},
"maxItems": 20,
"minItems": 1,
"description": "The updated UI files (same paths as the original review)"
},
"issues": {
"type": "array",
"items": {
"type": "object",
"required": [
"severity",
"category",
"file",
"line"
],
"properties": {
"file": {
"type": "string"
},
"line": {
"type": "number"
},
"rule": {
"type": "string"
},
"title": {
"type": "string"
},
"current": {
"type": "string",
"description": "The flagged code from the original finding"
},
"message": {
"type": "string"
},
"category": {
"type": "string"
},
"severity": {
"enum": [
"critical",
"serious",
"moderate"
],
"type": "string"
}
},
"additionalProperties": false
},
"maxItems": 30,
"minItems": 1,
"description": "The findings to verify, as returned by review_files"
}
},
"additionalProperties": false
}