Skip to main content
Glama

upshift-mcp

Upshift's reference MCP server. Three tools, deployed remote, on MCP spec revision 2026-07-28.

It exists to do two jobs at once: be genuinely useful to an agent, and be the worked example a buyer looks at before paying us to build theirs. Every price it quotes is generated from the live store, so it cannot invent one.

https://mcp.upshiftsites.com/mcp
{
  "mcpServers": {
    "upshift": { "type": "http", "url": "https://mcp.upshiftsites.com/mcp" }
  }
}

Or run the same server locally, for clients that spawn a command rather than call a URL. Nothing to clone or build — it is published on npm:

{
  "mcpServers": {
    "upshift": { "command": "npx", "args": ["-y", "upshift-mcp"] }
  }
}

The same binary from a shell. stdio is the default; --http serves the full Worker on localhost instead:

npx upshift-mcp

Tools

Tool

Does

upshift_site_audit(url)

Fetches a live page and reports structured data, llms.txt, robots.txt, title and meta budgets, headings, alt-text coverage, HTTPS and document weight, with a 0-100 score and a fix for each finding.

upshift_template_match(industry, needs?)

Ranks the 14 website template lines against a trade, with live demo links, store links and real prices, and explains why each matched.

upshift_quote(job_type, scope?)

The real price table for MCP server work and for websites.

Free and rate limited to 20 calls/minute per IP.

Related MCP server: agent-ready-mcp

Layout

src/
  worker.ts      Cloudflare entrypoint: routing, origin policy, rate limit
  server.ts      The three tools; the one place production layers are applied
  audit.ts       Audit rules — pure, so every rule is testable without a network
  safe-fetch.ts  The SSRF guard for the one tool that takes a caller's URL
  match.ts       Template matching
  services.ts    What we charge for MCP work
  catalog.generated.ts   Template lines + prices, generated from the store
  landing.ts     The page a human gets at /
evals/           12 qa_pairs, run over the real protocol
test/            32 tests: protocol conformance + the pure logic

Working on it

npm install
npm run dev          # http://127.0.0.1:8788/mcp
npm run ci:verify    # typecheck + tests + evals

wrangler dev needs macOS 13.5+ and will not boot on the build machine, so npm run dev serves the production src/worker.ts on Node against an in-memory KV. Same handler, same routes, same tools — not a second implementation. Deployment is still wrangler deploy.

Prices come from ../upshift-agency-site/src/data/store.ts. After changing them there:

npm run gen:catalog

Deploying

Live since 2026-08-16 at https://mcp.upshiftsites.com/mcp. KV namespace and custom domain are provisioned; npm run deploy ships a new version.

Listed

  • Official MCP registry: com.upshiftsites/mcp, published active against the DNS-verified namespace.

  • Glama — installable, with a released container built from this repo.

  • npm: upshift-mcpnpx upshift-mcp runs this same server locally.

Glama score for upshift-mcp

Honest gaps

In docs/VALIDATION.md — what is verified, what is not, the four real bugs the eval suite caught during the build (one of them a security bypass), and the fifth it missed. That document is the argument for shipping evals alongside a server, which is the part of this we sell; the miss is part of the argument, not an exception to it.

Licence

MIT. Lift anything useful. If you would rather we built and ran it for you, that is at https://upshiftsites.com/store/mcp-server-service/.

Available Tools

3 tools
upshift_quotePrice a jobA
Read-only
Inspect

Return Upshift's real prices. job_type 'mcp' covers MCP server work (registry listing, live tool preview, spec upgrade, full build); 'website' covers website templates and done-for-you launches. These are the actual listed prices, not estimates. Use when someone asks what a job costs, what a tier includes, or how long it takes. The figures are generated from the live store catalog, so this cannot quote a price that is not sold; it makes no network call and the same arguments always return the same answer.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoOptional free text about the situation, used to pick which tier to lead with and to explain why, e.g. "we have a server on stdio" or "roofing company, no site". Never changes the prices themselves.
job_typeYes'mcp' for MCP server work, 'website' for website work.

Output Schema

ParametersJSON Schema
NameRequiredDescription
noteYes
offersYes
jobTypeYes

TDQS

A4.6/5.0
Behavior4/5

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

The description adds substantial behavioral context beyond the annotations. It reveals that the tool is deterministic ('same arguments always return the same answer'), makes no network call, and generates prices from a live store catalog. The annotations already declare readOnlyHint=true and openWorldHint=false, which the description aligns with. The only minor gap is not expanding on what the return structure looks like, but the tool has an output schema which mitigates this.

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

Conciseness4/5

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

The description is a single paragraph of four sentences with clear front-loading: the first sentence states the core purpose. Each sentence adds distinct information. It could be slightly more structured (e.g., breaking guidelines into a separate sentence), but it's efficient and avoids waste.

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?

Given the tool has only 2 parameters (1 required), an output schema, and readOnlyHint+openWorldHint annotations, the description is complete. It covers purpose, when to use, constraints (no network call, deterministic), and parameter semantics. The output schema covers return structure. There are no gaps in information needed for an agent to correctly select and invoke this tool.

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 is 3. The description goes further by explaining what values each enum choice covers (e.g., 'mcp' includes registry listing, live tool preview, etc.) and explains the scope parameter's purpose (free text to help pick a tier, never changes prices). This adds genuine value beyond the schema's minimal 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 uses the specific verb 'Return' with the resource 'Upshift's real prices' and clearly distinguishes between two job types (mcp and website). It immediately communicates that this tool provides actual listed prices, not estimates, and gives concrete examples of what each job_type covers, making it easy for an agent to understand exactly what this tool does.

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?

The description explicitly states when to use the tool: 'Use when someone asks what a job costs, what a tier includes, or how long it takes.' It also specifies limitations: it cannot quote a price that is not sold, and the same arguments always return the same answer. While it doesn't explicitly name sibling tools as alternatives, the context of pricing guidance is clearly delineated from other tools like upshift_site_audit.

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

upshift_site_auditAudit a website for machine legibilityA
Read-only
Inspect

Fetch a live website and report how legible it is to search engines and AI assistants: structured data (JSON-LD), llms.txt, robots.txt, title and meta description, headings, image alt text, HTTPS and document weight. Returns findings with severity and a 0-100 score. Use this to check a real site before recommending changes to it. Makes one outbound request to the URL given, so it only sees what a fetch can establish — never rendering or browser metrics. Refuses private, loopback and link-local addresses, and reports a page as unreachable rather than scoring the error body.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesAbsolute http(s) URL of the page to audit, e.g. https://example.com

Output Schema

ParametersJSON Schema
NameRequiredDescription
urlYes
scoreYes
summaryYes
findingsYes
reachableYes
structuredDataYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations include readOnlyHint and openWorldHint, but the description adds significant context: makes one outbound request, only sees what fetch can establish, refuses private/loopback/link-local addresses, and reports unreachable pages rather than scoring error bodies. This exceeds annotation coverage and provides critical behavioral details.

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, front-loaded with the core purpose and key features, each sentence adding new information: checklist, score, one outbound request, security restrictions, and unreachable behavior. No fluff or repetition.

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 single-parameter tool with output schema, the description covers purpose, usage, behavior, and security constraints comprehensively. It details limitations (no rendering) and edge cases (unreachable pages), making it complete for the agent to know what to expect.

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% with clear description for url, so the baseline is 3. However, the description adds value by specifying the URL must be absolute http(s) and gives an example, as well as implying constraints (real site, public address), compensating slightly above baseline.

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 tool audits a website for machine legibility, listing specific checks (JSON-LD, llms.txt, etc.) and outputs a 0-100 score. It distinguishes from siblings by mentioning auditing a live site, which is unique among upshift_template_match and upshift_quote.

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?

Explicitly instructs to use this tool to check a real site before recommending changes, which contrasts with the sibling tools' likely non-audit purposes. It also explains when it's appropriate (real site) and what it does not do (no rendering or browser metrics), providing clear context for selection.

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

upshift_template_matchFind the website template for a tradeA
Read-only
Inspect

Given an industry or trade (and optionally what the business needs), rank Upshift's 14 website template lines and return the best three, each with a live demo link, the store link, real prices, and the words that made it match. Use when someone asks what a website for a given trade should look like or cost. Answers from a catalog held in the server, so it makes no network call and returns no matches — rather than a forced one — when the trade is outside the 14 lines.

ParametersJSON Schema
NameRequiredDescriptionDefault
needsNoOptional: what the business needs, e.g. "online booking, before/after photos".
industryYesThe trade or industry, e.g. "roofing", "collision repair", "med spa".

Output Schema

ParametersJSON Schema
NameRequiredDescription
queryYes
matchesYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=false. The description adds behavioral context: it operates from a server-held catalog, makes no network call, and returns no matches (rather than forced) for out-of-scope trades. This reinforces and complements the annotations without contradiction.

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, consisting of three sentences that efficiently convey purpose, usage, and limitations without redundancy. Every sentence adds value.

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?

Given that there is an output schema (the context indicates 'Has output schema: true'), the description does not need to detail return values. It adequately covers the tool's purpose, usage context, limitations (no forced matches), and the fact that it uses a local catalog. For a tool with two well-documented parameters and a closed set of templates, this is fully complete.

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% with both parameters documented. The description adds meaning by explaining that 'industry' is the trade and 'needs' is optional, and it describes the output parameters (demo link, store link, prices, match words). This provides additional context beyond the schema's property 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 clearly states the verb 'rank' and the resource 'Upshift's 14 website template lines'. It specifies the output (best three with demo link, store link, prices, match words) and distinguishes from sibling tools like site_audit and quote which serve different purposes.

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 says 'Use when someone asks what a website for a given trade should look like or cost.' It also notes that it returns no matches for trades outside the 14 lines, providing context for when the tool is appropriate. However, it does not explicitly mention when not to use it or alternatives, though siblings are different enough that exclusion is implied.

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. 3 tool updatesv1.0.3
    • First observedupshift_quote
    • First observedupshift_site_audit
    • First observedupshift_template_match

TDQS

A4.6/5.0
Disambiguation5/5

Each tool targets a completely distinct purpose: site audit checks existing websites, template match recommends templates by trade, and quote provides pricing. There is no overlap in functionality or output.

Naming Consistency4/5

All tools use the 'upshift_' prefix and then a clear noun: 'site_audit', 'template_match', 'quote'. The pattern is consistent, though 'quote' is a single word while the others are verb_noun compound.

Tool Count5/5

Three tools is an ideal scope for a narrow commercial service. Each tool is necessary for the core workflow (audit, recommend, quote), and there is no room for bloat.

Completeness4/5

The set covers the essential sales workflow: audit existing site, recommend a template, and provide pricing. A minor gap is lack of a tool to get detailed information about a specific template, but the match tool returns demo links and prices.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Point it at your site, get a whole-site AEO/GEO audit plus a ready-to-run plan your agent can execute. Orchestrates the ai-seo and citation-intelligence MCPs. Ships as a Claude skill, Claude plugin, and MCP server. No API keys required.
    13
    2
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Open-source MCP server that audits websites for AI search readiness, providing deterministic scoring (0-100) and prioritized fix lists for metrics like JSON-LD, llms.txt, heading hierarchy, and AI crawler access.
    1
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Checks whether a website is readable and citable by AI search engines — llms.txt, Schema.org structured data, AI-bot access in robots.txt, content freshness, answer directness, E-E-A-T signals, plus a LocalBusiness Rich Results validator. Free, no API key, remote Streamable HTTP.
    1
    MIT

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/samerdwykat-cmyk/upshift-mcp'

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