Swervie
io.github.Swervie/swervieSwerviestreamable-httpv1.5.2Scanned
Cross-retailer product catalog: one scored answer per product with live prices and buy links.
7 tools: 2 change things and 5 only read.
- Reads private data · 1
- Reads text others write · 7
- Can send data out · 0
- No findings
Anlyon alternative
2 of these tools change something. Run those as governed actions.
Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.
Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.
Import an OpenAPI spec →Tools
Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.
7 tools
Changes things 2Claude Code: ask
record_selectionRecord which product the user considered or chose.Reads text others writeNo findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Record which product the user considered or chose. Selections improve future ranking, especially for a returning user_signature. Each call appends one event per product id and changes nothing else.
Annotations the server declares
- title: Record a product selection
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
submit_feedbackReport a problem or observation about Swervie results for human review: wrong or missing specs, a stale price, a bad category match, duplicate listings that were not merged, a prod…Reads text others writeNo findings
Why it is in this group
- The name "submit_feedback" says "submit": a word for a change.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Report a problem or observation about Swervie results for human review: wrong or missing specs, a stale price, a bad category match, duplicate listings that were not merged, a product the catalog lacks, or a ranking that looks off. Plain text, at most 2000 characters. Longer submissions are rejected with an error, not truncated. Each call holds one issue, optionally tied to product_ids or a category.
Annotations the server declares
- title: Send feedback on results
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Only reads 5Show 5 read-only tools
browse_categoryReturn a category's consolidated, ranked shelf: one row per product, with duplicate seller listings already collapsed.Reads text others writeNo findings
Why it is in this group
- The name "browse_category" says "browse": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe name "browse_category" says "browse": it reads web pages, which anyone can write.
Description, as the server wrote it Return a category's consolidated, ranked shelf: one row per product, with duplicate seller listings already collapsed. Each row carries price, price_band, buy_url and buy_seller (the retailer behind the link), image_url, star ratings, and the category's required and top-weighted spec values. card_specs gives the specs every product card shows, in display order. Filters are hard: a row missing the attribute is excluded. Preferences are soft: rows that measure well on them rank higher and none are excluded (for example Rated Noise, prefer low, or a pet-hair rating, prefer high). Sort by value (default), quality, or price_asc. A filter on the Price dimension applies min/max to the live offer price in cents. Responses that carry buy_url links also carry a disclosure field: the commission disclosure for those links.
Annotations the server declares
- title: Browse a category shelf
- readOnlyHint: true
- openWorldHint: true
find_categoryFind the Swervie product category that matches a shopping intent and return its filter contract: every filterable specification with its type, units, allowed values, and importance…Reads text others writeNo findings
Why it is in this group
- The name "find_category" says "find": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Find the Swervie product category that matches a shopping intent and return its filter contract: every filterable specification with its type, units, allowed values, and importance, plus budget, mid, and premium price bands.
Annotations the server declares
- title: Find a product category
- readOnlyHint: true
- openWorldHint: true
get_productsFull detail for up to 25 products: all specifications in the category's standard order (card_specs first), review-derived ratings with verbatim evidence quotes, every seller offer …Reads private dataReads text others writeNo findings
Why it is in this group
- The name "get_products" says "get": a word for reading.
What it can reach
- private-dataThe description's first sentence says "table": it reads databases.
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
- untrusted-inputThe description's first sentence says "review": it reads comments, which other people can write.
Description, as the server wrote it Full detail for up to 25 products: all specifications in the category's standard order (card_specs first), review-derived ratings with verbatim evidence quotes, every seller offer with price and buy_url, and attribute_provenance recording where each spec value came from (manufacturer page, retailer listing, spec table). ids accepts product ids and shelf row ids alike: a group row's id resolves to the product the row is named after (its top_pick_id), and resolved_groups reports each substitution. Responses that carry buy_url links also carry a disclosure field: the commission disclosure for those links.
Annotations the server declares
- title: Get product details
- readOnlyHint: true
- openWorldHint: true
lookup_productLook up one specific product by name or identifier: a product name such as 'Sony WH-1000XM5' or 'Ninja AF101 air fryer', an ASIN, a UPC/EAN/GTIN, or brand plus model number.Reads text others writeNo findings
Why it is in this group
- The name "lookup_product" says "lookup": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Look up one specific product by name or identifier: a product name such as 'Sony WH-1000XM5' or 'Ninja AF101 air fryer', an ASIN, a UPC/EAN/GTIN, or brand plus model number. match reports the result: 'exact' (identifier hit), 'likely' (one clear name match; interpretation.runner_up names the next best), 'ambiguous' (several fit; rows lists the candidates, best first), or 'none' (not carried; the miss is recorded as demand). On exact or likely, products[0] is the full detail (all specs, review-derived ratings with evidence quotes, every seller offer with buy_url), and shelf_context gives its rank on its category shelf by value and quality, its variants (colorways, sizes), and up to three higher-scoring alternatives in the same price band. A product with no live price or image is still returned, flagged under readiness; its price is not current. Responses that carry buy_url links also carry a disclosure field: the commission disclosure for those links.
Annotations the server declares
- title: Look up a specific product
- readOnlyHint: true
- openWorldHint: true
search_productsAnswer one free-text shopping query, such as 'TVs under $500 with 120hz refresh rate', 'quiet dishwasher for a small kitchen', 'robot vacuum for pet hair under $600', or 'Sony WH-1…Reads text others writeNo findings
Why it is in this group
- The name "search_products" says "search": a word for reading.
What it can reach
- untrusted-inputThe server marks it openWorldHint: true: it reaches things outside the server's own data.
Description, as the server wrote it Answer one free-text shopping query, such as 'TVs under $500 with 120hz refresh rate', 'quiet dishwasher for a small kitchen', 'robot vacuum for pet hair under $600', or 'Sony WH-1000XM5 lowest price'. A query naming one specific product resolves to that product (interpretation.mode 'product'): products[0] holds every seller offer, and shelf_context gives its shelf rank and higher-scoring alternatives. 'A vs B' returns both products with specs in one shared order (mode 'comparison'). Otherwise the category is resolved, hard constraints such as price and specs become filters, and soft wishes such as 'quiet' or 'for pet hair' become ranking preferences that exclude nothing; interpretation.preferences lists them with reasons, and each row's preference_boost shows the effect. The interpretation object records how the query was read: method (deterministic parser or query-understanding model), fit_note (a one-line judgment of the category fit), and match_quality. 'strong' means the shelf plainly fits. 'partial' means either rows are served with some shopper words unexplained (listed in unparsed_tokens and unsupported_terms), or no rows are served because the closest shelf was only a medium-confidence fit (named in interpretation.llm_category). 'weak' and 'none' return no rows and queue the request as demand (queued_for_creation for a missing category, queued_product_request for a missing product). card_specs gives the specs every product card shows, in display order. Responses that carry buy_url links also carry a disclosure field: the commission disclosure for those links.
Annotations the server declares
- title: Search products
- readOnlyHint: true
- openWorldHint: true
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Exfil surface
Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.
No private-data, untrusted-input, outbound path in this server alone: no tool is tagged outbound.
- Reads private data1
- Reads files, mail, messages, databases, secrets, calendars or repositories.
- Reads text others write7
- Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
- Can send data out0
- Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.
Findings
Matches of fixed checks, with the text they matched.
No check matched anything in these tool definitions. That is not a safety guarantee.
History
Changes to its tool definitions and to its remote endpoint, newest first.
No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.
Install
Pinned to version 1.5.2. Values in angle brackets are yours to fill in.
claude mcp add --transport http swervie https://us-central1-swervie-prod.cloudfunctions.net/mcpclaude mcp add --transport http swervie https://us-central1-swervie-prod.cloudfunctions.net/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__swervie__find_category",
"mcp__swervie__browse_category",
"mcp__swervie__search_products",
"mcp__swervie__lookup_product",
"mcp__swervie__get_products"
],
"ask": [
"mcp__swervie__record_selection",
"mcp__swervie__submit_feedback"
],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as swervie. Review it before you use it.
Capability tags behind 7 rules
- mcp__swervie__find_category untrusted-input
- mcp__swervie__browse_category untrusted-input
- mcp__swervie__search_products untrusted-input
- mcp__swervie__lookup_product untrusted-input
- mcp__swervie__get_products private-data, untrusted-input
- mcp__swervie__record_selection untrusted-input
- mcp__swervie__submit_feedback untrusted-input
Pin
Keep the decision: fail CI when the tools change, follow every change, or show a badge.
Pin in CI
Fail a build when the tools you reviewed are not the tools the server serves today.
curl -s "https://anlyon.dev/api/v1/servers/io.github.Swervie/swervie/verify?hash=ef81f084c29315423a4de247b232182c2b24622f880eb30a05787c70810c96de" | jq -e '.changed == false'Pinned hash ef81f084c293, from Oct 28, 2026, 16:18 UTC.
Watch
Get told when its tools change: a new tool, a new description, a new class.
https://anlyon.dev/servers/io.github.Swervie/swervie/changes.xmlAn Atom feed. Works in any feed reader or Slack's RSS app.
Badge
[](https://anlyon.dev/servers/io.github.Swervie/swervie)Source: MCP Registry · repository. Synced Oct 28, 2026, 16:17 UTC.