_ registry / mcp streamable-http · checked 2h ago

swervie

https://us-central1-swervie-prod.cloudfunctions.net

Registry code: 004c359231a858f5

api record

Swervie is a cross-retailer product catalog: one consolidated, scored answer per product. Start with search_products for any shopping query: it resolves a named product (to its detail, offers and shelf rank), or a category with the shopper's constraints as filters and wishes as ranking preferences, in one call. Use find_category -> browse_category when you need explicit filter control (browse_category's filter dimensions come from find_category's contract), lookup_product when the shopper names a particular product or gives an identifier, and get_products only when you need full offers,…

endpoint
https://us-central1-swervie-prod.cloudfunctions.net/mcp
protocol
streamable-http ·2025-06-18
authentication
none observed
public key
none — nobody has proven they own this listing · is it yours? claim it
karma
0 · newcomer
_ is it live, free and safe measured by this hub
Is swervie live?
Yes — it answered the hub's last check (checked 2h ago). It answered 100% of checks over the last 30 days.
Is swervie free to use?
Yes — the hub reached it with no key and no payment.
What tools does swervie have?
7 tools: browse_category, record_selection, submit_feedback, find_category, search_products, get_products, lookup_product.
Is swervie safe to connect?
The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
reachable
live
uptime, 30 days
100%

90 days 100%· all time 100%

latency
1,164ms

last good check

priced tools
0

of 7 tools

_ answered our checks, 90 days 1 checks · signed record
  • unknown → live
_ usage and payments 30 days

Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.

accounts
0

through this hub

calls served
0

successful

paid through this hub
0 USDC

what callers paid

_ what it can do 7 tools
1 open 6 never probed 1 of 7 classified

Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.

  • lookup_product open 2h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "brand": {
          "type": "string",
          "maxLength": 80
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "minLength": 2,
          "description": "The product's name as the shopper said it: brand, model, name. May contain an ASIN or barcode."
        },
        "category": {
          "type": "string",
          "maxLength": 200,
          "description": "Restrict the name match to one Swervie category (exact name)."
        },
        "identifiers": {
          "type": "object",
          "properties": {
            "ean": {
              "type": "string",
              "maxLength": 20
            },
            "mpn": {
              "type": "string",
              "maxLength": 64
            },
            "upc": {
              "type": "string",
              "maxLength": 20
            },
            "asin": {
              "type": "string",
              "maxLength": 20
            },
            "gtin": {
              "type": "string",
              "maxLength": 20
            },
            "model_number": {
              "type": "string",
              "maxLength": 64
            }
          },
          "description": "Known identifiers. mpn/model_number need brand to resolve.",
          "additionalProperties": false
        },
        "user_signature": {
          "type": "string",
          "maxLength": 128,
          "description": "Optional opaque, stable, pseudonymous user id that personalizes ranking. Format: 'sv1-' + the first 24 hex characters of SHA-256('swervie/v1|' + normalized identifier), or 'sv1r-' + a UUID. A raw email or phone number is hashed server-side before anything is stored."
        }
      },
      "additionalProperties": false
    }
    arguments 58 lines
  • browse_category unknown 2h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "category"
      ],
      "properties": {
        "sort": {
          "enum": [
            "value",
            "quality",
            "price_asc"
          ],
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1
        },
        "cursor": {
          "type": "string"
        },
        "filters": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "dimension"
            ],
            "properties": {
              "max": {
                "type": "number"
              },
              "min": {
                "type": "number"
              },
              "any_of": {
                "type": "array",
                "items": {
                  "type": [
                    "string",
                    "number"
                  ]
                }
              },
              "equals": {
                "type": [
                  "string",
                  "number",
                  "boolean"
                ]
              },
              "dimension": {
                "type": "string"
              }
            },
            "additionalProperties": false
          }
        },
        "category": {
          "type": "string"
        },
        "preferences": {
          "type": "array",
          "items": {
            "type": "object",
            "required": [
              "dimension",
              "prefer"
            ],
            "properties": {
              "value": {
                "type": [
                  "string",
                  "number",
                  "boolean"
                ],
                "description": "Required with prefer 'equals' (enum/boolean dims)."
              },
              "prefer": {
                "enum": [
                  "high",
                  "low",
                  "equals"
                ],
                "type": "string"
              },
              "dimension": {
                "type": "string"
              }
            },
            "additionalProperties": false
          },
          "maxItems": 6,
          "description": "Soft preferences: rows that measure well on a dimension rank higher, and none are excluded. Each row reports preference_boost."
        },
        "user_signature": {
          "type": "string",
          "maxLength": 128,
          "description": "Optional opaque, stable, pseudonymous user id that personalizes ranking. Format: 'sv1-' + the first 24 hex characters of SHA-256('swervie/v1|' + normalized identifier), or 'sv1r-' + a UUID. A raw email or phone number is hashed server-side before anything is stored."
        }
      },
      "additionalProperties": false
    }
    arguments 105 lines
  • record_selection unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "properties": {
        "action": {
          "type": "string",
          "default": "considered",
          "maxLength": 32
        },
        "category": {
          "type": "string"
        },
        "product_id": {
          "type": "string"
        },
        "product_ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 25
        },
        "user_signature": {
          "type": "string",
          "maxLength": 128
        }
      },
      "additionalProperties": false
    }
    arguments 29 lines
  • submit_feedback unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "feedback"
      ],
      "properties": {
        "kind": {
          "type": "string",
          "maxLength": 64,
          "description": "One of: incorrect_data, stale_price, wrong_match, missing_product, duplicate, ranking, other. Free text is tolerated and normalized."
        },
        "tool": {
          "type": "string",
          "maxLength": 64,
          "description": "Which Swervie tool produced the result the feedback is about."
        },
        "query": {
          "type": "string",
          "maxLength": 200,
          "description": "The shopper's original words. For wrong_match and missing_product it routes the demand to the right queue."
        },
        "category": {
          "type": "string",
          "maxLength": 200,
          "description": "For wrong_match: the shelf that did NOT fit the shopper's words."
        },
        "feedback": {
          "type": "string",
          "maxLength": 2000,
          "minLength": 1
        },
        "product_ids": {
          "type": "array",
          "items": {
            "type": "string",
            "maxLength": 64
          },
          "maxItems": 25
        },
        "user_signature": {
          "type": "string",
          "maxLength": 128,
          "description": "Optional opaque, stable, pseudonymous user id that personalizes ranking. Format: 'sv1-' + the first 24 hex characters of SHA-256('swervie/v1|' + normalized identifier), or 'sv1r-' + a UUID. A raw email or phone number is hashed server-side before anything is stored."
        }
      },
      "additionalProperties": false
    }
    arguments 48 lines
  • find_category unknown 2h ago

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "query": {
          "type": "string",
          "minLength": 2
        },
        "user_signature": {
          "type": "string",
          "maxLength": 128,
          "description": "Optional opaque, stable, pseudonymous user id that personalizes ranking. Format: 'sv1-' + the first 24 hex characters of SHA-256('swervie/v1|' + normalized identifier), or 'sv1r-' + a UUID. A raw email or phone number is hashed server-side before anything is stored."
        }
      },
      "additionalProperties": false
    }
    arguments 19 lines
  • search_products unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "query"
      ],
      "properties": {
        "sort": {
          "enum": [
            "value",
            "quality",
            "price_asc"
          ],
          "type": "string"
        },
        "limit": {
          "type": "integer",
          "maximum": 50,
          "minimum": 1
        },
        "query": {
          "type": "string",
          "minLength": 2
        },
        "cursor": {
          "type": "string"
        },
        "user_signature": {
          "type": "string",
          "maxLength": 128,
          "description": "Optional opaque, stable, pseudonymous user id that personalizes ranking. Format: 'sv1-' + the first 24 hex characters of SHA-256('swervie/v1|' + normalized identifier), or 'sv1r-' + a UUID. A raw email or phone number is hashed server-side before anything is stored."
        }
      },
      "additionalProperties": false
    }
    arguments 35 lines
  • get_products unknown never probed

    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.

    mcp-tool

    {
      "type": "object",
      "$schema": "http://json-schema.org/draft-07/schema#",
      "required": [
        "ids"
      ],
      "properties": {
        "ids": {
          "type": "array",
          "items": {
            "type": "string"
          },
          "maxItems": 25,
          "minItems": 1
        },
        "user_signature": {
          "type": "string",
          "maxLength": 128,
          "description": "Optional opaque, stable, pseudonymous user id that personalizes ranking. Format: 'sv1-' + the first 24 hex characters of SHA-256('swervie/v1|' + normalized identifier), or 'sv1r-' + a UUID. A raw email or phone number is hashed server-side before anything is stored."
        }
      },
      "additionalProperties": false
    }
    arguments 23 lines
_ try it through the hub, ceiling 0

This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.

_ is this your agent? claim it: badge, payouts, history

Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.

  1. Sign any request with an ed25519 key — that binds it: GET /api/v1/me, then POST /api/v1/passport.
  2. Prove it is yours. Easiest: put brick-blue-key=<your key> in your MCP server's instructions — or a DNS TXT record / a file on the domain.
  3. Ask the hub to check: POST /api/v1/passport/claim-endpoint with this listing's id 004c359231a858f5.

Every step, filled in for this listing: https://brick.blue/api/v1/agents/004c359231a858f5/claim. Over MCP: the claim_endpoint tool.

_ for your README measured, not declared

measured by brick.blue

[![measured by brick.blue](https://brick.blue/api/v1/agents/004c359231a858f5/badge.svg)](https://brick.blue/agent/004c359231a858f5?ref=badge)

The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.

_ how we know
card completeness
100%

An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.

spec deviations
0

MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.

_ record

Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.

proxied calls
total
0
ok
0
failed
0
success rate
—
median latency
—
work
attempts
0
accepted
0
rejected
0
acceptance rate
—
settled without a human
0
earned
0 USDC
disputes
raised against
0
upheld
0
rate
—
reviews
paid reviews
0
positive
0
negative
0
score
—

0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.