# Sorsa (remote · sorsa.app)

Amazon FBA arbitrage toolkit: product analysis, deal feeds, price alerts and sourcing management.

- Trust score: 59/100 (low)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `sorsa.app`: 59/100 (this document), [markdown](https://verifymcp.io/servers/app-sorsa-sorsa/sorsa.md), [page](https://verifymcp.io/servers/app-sorsa-sorsa/sorsa)

## Channel facts

- Endpoint: `https://sorsa.app/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `1.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-03.

- **Endpoint Security**: 46/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 52 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - HTTPS not yet verified: we couldn't determine whether a plaintext access path exists.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 75/100
  - AI-judged instruction clarity (good).
  - Tool/resource definitions use about 4139 tokens (~79/item across 52 items; 52 tools + 0 resources), lean.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 67/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 0% of tool parameters carry a description.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http app-sorsa-sorsa https://sorsa.app/mcp
```

### Codex

```toml
[mcp_servers.app-sorsa-sorsa]
url = "https://sorsa.app/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "app-sorsa-sorsa": {
      "type": "remote",
      "url": "https://sorsa.app/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add app-sorsa-sorsa --url https://sorsa.app/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  app-sorsa-sorsa:
    url: "https://sorsa.app/mcp"
```

### Other

```json
{
  "mcpServers": {
    "app-sorsa-sorsa": {
      "type": "http",
      "url": "https://sorsa.app/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-02 (score 59, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 58, 0)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 58, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-28 (score 57, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 56, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 55)

First indexed and scored.

## MCP tools (52)

### `analyse_product` (~103 tokens)

Quick analysis of an Amazon product by ASIN: title, brand, current/90-day
    pricing, sales rank and estimated monthly sales, FBA fees and profit basics.
    Call this first whenever the user asks about a specific ASIN. Costs the user
    1 analyse credit unless cached. Domain is the Amazon marketplace: GB, US,
    DE, FR, ES or IT.

Input parameters:

- `asin` (string, required)
- `domain` (string)

### `analyse_product_full` (~97 tokens)

Full analysis of an Amazon product by ASIN — everything in analyse_product
    plus seller/stock breakdown, buy-box history and variations. Slower and
    heavier than analyse_product; use when the user wants seller-level or
    historical detail in one shot. Costs 1 analyse credit unless the ASIN was
    analysed in the last 24 hours.

Input parameters:

- `asin` (string, required)
- `domain` (string)

### `get_product_sellers` (~84 tokens)

Current sellers and their stock levels for an Amazon ASIN. Call when the
    user asks who is selling a product, how many sellers there are, or how much
    stock competitors hold. Costs 1 analyse credit unless the ASIN was analysed
    in the last 24 hours.

Input parameters:

- `asin` (string, required)
- `domain` (string)

### `get_international_prices` (~78 tokens)

Prices for the same ASIN across international Amazon marketplaces. Call
    when the user asks about cross-market price differences or EU arbitrage
    opportunities for a product. Costs 1 analyse credit unless the ASIN was
    analysed in the last 24 hours.

Input parameters:

- `asin` (string, required)
- `domain` (string)

### `calculate_profit` (~126 tokens)

Calculate Amazon FBA profit and ROI for given sell/cost prices using the
    full fee engine (tiered referral fees, digital services tax, VAT on fees).
    Call for what-if questions like 'what would I make selling at £24.99 if I
    buy at £12?'. Prices are in the marketplace currency.

Input parameters:

- `category` (string)
- `cost_price` (number, required)
- `domain` (string)
- `pick_and_pack_fee` (number)
- `referral_fee_pct` (number)
- `sell_price` (number, required)

### `lookup_by_ean` (~71 tokens)

Resolve a barcode (EAN/UPC, 8-14 digits) to an Amazon ASIN. Call when the
    user gives a barcode instead of an ASIN, then feed the returned ASIN into
    analyse_product.

Input parameters:

- `code` (string, required)
- `domain` (string)

### `search_by_title` (~85 tokens)

Search Amazon by product title via Keepa and return the top matching
    ASINs with thumbnails. Call when the user names a product without an ASIN
    or barcode; present the candidates and let them pick before analysing.
    limit is 1-10.

Input parameters:

- `domain` (string)
- `limit` (integer)
- `title` (string, required)

### `get_credits` (~46 tokens)

The user's remaining monthly analyse and AI credits and the reset date.
    Call when the user asks about their usage limits, or after a credit-limit
    error from an analysis tool.

### `get_deal_results` (~169 tokens)

Search Sorsa's Amazon-to-Amazon (A2A) deal database — products found by
    the deal monitors with profit, ROI, sales rank and pricing. Call when the
    user asks for current deals, e.g. 'show me deals over £5 profit and 50%
    ROI'. Free to call. sort_field: timestamp, profit, roi_percentage,
    asin_rank or current_price.

Input parameters:

- `asin`
- `category`
- `limit` (integer)
- `max_rank`
- `min_profit`
- `min_roi`
- `min_sales`
- `offset` (integer)
- `search_title`
- `sort_direction` (string)
- `sort_field` (string)
- `source`

### `get_notifications` (~64 tokens)

The user's price-alert notifications from their A2A monitor tasks,
    grouped by task. Call when the user asks what alerts or notifications they
    have. show_checked: 'unchecked' (default), 'checked' or 'all'.

Input parameters:

- `show_checked` (string)

### `mark_notification` (~56 tokens)

Mark one of the user's notifications as checked (reviewed) or unchecked.
    Call after the user says they've dealt with an alert, or to un-mark one.

Input parameters:

- `checked` (boolean)
- `notification_id` (integer, required)

### `get_oa_deals` (~129 tokens)

Profitable online-arbitrage (OA) deals: retail products matched to Amazon
    listings with profit and ROI. Call when the user asks about OA or retail
    sourcing opportunities. sort: roi, profit, price, newest, sell, rank,
    monthly_sold or sellers.

Input parameters:

- `max_rank`
- `min_monthly_sold`
- `min_profit`
- `min_roi`
- `page` (integer)
- `per_page` (integer)
- `retailer`
- `search`
- `sort` (string)

### `get_store_results` (~53 tokens)

Products found by the user's storefront monitors (tracking other sellers'
    Amazon storefronts). Call when the user asks what their storefront monitors
    have found; optionally filter to one store_id.

Input parameters:

- `store_id`

### `get_dashboard_summary` (~45 tokens)

The user's Sorsa dashboard summary — headline stats across their
    monitors and results. Call for a general 'how's it looking' overview before
    drilling into specific feeds.

### `get_price_monitors` (~46 tokens)

List the user's ASIN price monitors (watched products with target
    prices). Call before creating one to avoid duplicates, or when the user
    asks what they're watching.

### `create_price_monitor` (~100 tokens)

Watch an ASIN and alert the user when its price drops to the target.
    Call when the user says things like 'watch this' or 'alert me if it goes
    below £20'. source is the marketplace: Amazon UK, Amazon DE, Amazon IT,
    Amazon ES, Amazon FR, Amazon US or Amazon Business UK.

Input parameters:

- `asin` (string, required)
- `source` (string)
- `target_price` (number, required)

### `get_deal_tasks` (~47 tokens)

List the user's A2A deal-monitor tasks (saved filters that generate
    notifications). Call before creating one, or when the user asks what
    monitors they have set up.

### `create_deal_task` (~116 tokens)

Create an A2A deal-monitor task: the user gets notified whenever the
    deal feed finds products matching these filters. Call when the user says
    e.g. 'notify me about deals over £5 profit and 40% ROI in Toys'.

Input parameters:

- `category`
- `keepa_drops`
- `max_asin_rank`
- `min_monthly_sales`
- `min_profit`
- `min_roi`
- `source`
- `task_name` (string, required)

### `get_storefront_monitors` (~46 tokens)

List the Amazon storefronts (competitor sellers) the user is
    monitoring. Call before adding one, or when the user asks which
    storefronts they track.

### `add_storefront_monitor` (~87 tokens)

Start monitoring another Amazon seller's storefront — new products they
    list will appear in the user's store results. storefront_id is the Amazon
    seller ID (e.g. A1B2C3D4E5F6G7, found in the seller page URL). Call when
    the user says 'track this seller'.

Input parameters:

- `storefront_id` (string, required)

### `get_storefront_stats` (~38 tokens)

Summary stats for the user's storefront monitors (stores tracked,
    result counts). Call for an overview before drilling into
    get_store_results.

### `get_items_sourced` (~48 tokens)

The user's sourcing list — products they've found and are considering
    buying, with cost/profit projections and status. Call when the user asks
    about their buy list or sourcing pipeline.

### `add_to_sourcing_list` (~133 tokens)

Add a product to the user's sourcing list (their buy list). Call when
    the user says 'add this to my buy list' — typically after analysing a
    product, passing through the numbers from the analysis. sourced_from is
    where they'd buy it (retailer/site).

Input parameters:

- `asin`
- `company`
- `cost`
- `monthly_sales`
- `notes`
- `projected_profit`
- `projected_sale_price`
- `roi`
- `sales_rank`
- `sourced_from`
- `title` (string, required)

### `get_items_purchased` (~46 tokens)

Items the user has actually purchased from their sourcing list,
    including listing status (SKU, listing errors). Call when the user asks
    what they've bought or about listing progress.

### `get_purchases` (~46 tokens)

The user's logged purchase history. timeframe: all, day, week, month
    or year. Call when the user asks what they've bought recently.

Input parameters:

- `timeframe` (string)

### `get_purchase_stats` (~54 tokens)

Purchase statistics: total spent, projected profit, items bought and
    ROI, broken down daily/monthly/yearly and by category and source. Call
    for questions like 'how much have I spent this month?'.

### `get_amazon_inventory` (~82 tokens)

The user's live FBA inventory: SKUs, quantities, conditions. Call when
    the user asks what stock they have or about a specific SKU/product they
    sell. Requires their Amazon account to be connected (closed beta).

Input parameters:

- `limit` (integer)
- `min_quantity`
- `page` (integer)
- `search`

### `get_amazon_orders` (~117 tokens)

The user's Amazon orders with fees and COGS-based profit. Call for
    questions like 'how are sales today?' or 'show orders for this SKU'.
    timeframe: today, yesterday, week, month; or use date_from/date_to
    (YYYY-MM-DD). Requires a connected Amazon account (closed beta).

Input parameters:

- `date_from`
- `date_to`
- `limit` (integer)
- `page` (integer)
- `search`
- `status`
- `timeframe`

### `get_fba_shipments` (~70 tokens)

The user's inbound FBA shipments with summary stats. Call when the
    user asks about shipments they've sent to Amazon. Requires a connected
    Amazon account (closed beta).

Input parameters:

- `limit` (integer)
- `page` (integer)
- `search`
- `status`

### `get_fba_shipment_items` (~61 tokens)

The line items inside one FBA shipment (expected vs received
    quantities). Call after get_fba_shipments when the user asks what was in
    a specific shipment or whether everything was received.

Input parameters:

- `shipment_id` (string, required)

### `get_fba_returns` (~70 tokens)

The user's FBA customer returns with dispositions (sellable, damaged,
    etc). Call when the user asks about returns. Requires a connected Amazon
    account (closed beta).

Input parameters:

- `disposition`
- `limit` (integer)
- `page` (integer)
- `search`

### `get_fba_refunds` (~64 tokens)

Refunds issued to the user's customers. Call when the user asks about
    refunds or money returned to buyers. Requires a connected Amazon account
    (closed beta).

Input parameters:

- `limit` (integer)
- `page` (integer)
- `search`

### `get_fba_reimbursements` (~75 tokens)

Reimbursements Amazon has paid the user (lost/damaged stock etc).
    Call when the user asks what Amazon has paid them back. Requires a
    connected Amazon account (closed beta).

Input parameters:

- `limit` (integer)
- `page` (integer)
- `reason`
- `search`

### `get_reconciliation_summary` (~67 tokens)

Totals of reclaimable money Sorsa has detected the user is owed by
    Amazon, broken down by claim type (shipment shortages, lost inventory,
    unreturned refunds...). Call for 'how much does Amazon owe me?'.
    Requires a connected Amazon account (closed beta).

### `get_reconciliation_claims` (~91 tokens)

Individual reclaim opportunities with evidence — what to claim from
    Amazon and why. Call after get_reconciliation_summary to list the actual
    claims. status: open, dismissed, filed or all. Requires a connected
    Amazon account (closed beta).

Input parameters:

- `claim_type` (string)
- `limit` (integer)
- `page` (integer)
- `status` (string)

### `get_analyse_history` (~61 tokens)

The user's recent product analyses (ASIN, title, when). Call when the
    user asks what they looked at recently, or to re-find a product they
    mention having analysed. limit max 50.

Input parameters:

- `limit` (integer)

### `get_oa_retailers` (~40 tokens)

List the retailers available in the OA deals feed. Call to know which
    retailer names are valid filters for get_oa_deals.

### `get_restock_suggestions` (~113 tokens)

What the user should reorder now. Per-SKU sales velocity vs stock on
    hand -> days of cover left, a suggested reorder quantity and its potential
    profit. Call for 'what should I restock?' or 'what's running low?'.
    lead_time_days = how long a resupply takes to land; cover_days = days of
    stock the reorder should provide. Requires a connected Amazon account.

Input parameters:

- `cover_days` (integer)
- `lead_time_days` (integer)

### `get_aged_stock` (~109 tokens)

Age profile of the user's on-hand FBA stock, bucketed by days on shelf
    (0-30, 31-90, 91-180, 181-365, 365+), with capital tied up and how much is
    aged 90+ days (long-term storage-fee risk). Call for 'what stock is old or
    at risk?' or 'how much capital is stuck in aged inventory?'. Requires a
    connected Amazon account.

### `get_monthly_pnl` (~93 tokens)

Per-SKU profit & loss for one calendar month: revenue, Amazon fees,
    COGS, refunds and net profit, plus account totals. Call for 'what was my
    profit in <month>?' or 'break down last month's P&L'. month is 'YYYY-MM'.
    Requires a connected Amazon account.

Input parameters:

- `month` (string, required)
- `vat_registered` (boolean)

### `get_product_performance` (~89 tokens)

Per-SKU profitability over the last N days: units, revenue, profit, ROI,
    return rate, current price vs break-even and a selling-at-a-loss flag. Call
    for 'which products make or lose me money?' or 'what's selling below
    break-even?'. days 7-365. Requires a connected Amazon account.

Input parameters:

- `days` (integer)

### `get_best_sellers` (~90 tokens)

The user's own top-selling ASINs by net profit for each of the last N
    months, derived from their sales. Call for 'what are my best sellers?' or
    'top products this year'. months up to 24, top_n up to 50. Requires a
    connected Amazon account.

Input parameters:

- `months` (integer)
- `top_n` (integer)

### `check_eligibility` (~117 tokens)

Check whether the user is allowed to sell (ungated for) one or more
    ASINs on their Amazon account. Call for 'am I ungated for this?' or 'can I
    sell these ASINs?'. Returns per-ASIN {state, gated, apply_link}. Uncached
    ASINs are queued for a fresh check, so re-call shortly for any still
    pending. Requires a connected Amazon account.

Input parameters:

- `asins` (array, required)
- `condition` (string)

### `start_a2a_finder_scan` (~142 tokens)

Start an A2A Finder scan: check a list of ASINs for profitable
    Amazon-to-Amazon flips across marketplaces (buy on one Amazon country, sell
    on another). Up to 100 ASINs. Optional `countries` = list of country codes
    to compare (e.g. ["UK","DE","FR"]); defaults to all. Uses the shared Keepa
    scan key (counts against the user's daily scan credits). Returns a job_id —
    poll get_a2a_finder_status(job_id) for results. Premium feature.

Input parameters:

- `asins` (array, required)
- `countries`

### `get_a2a_finder_status` (~68 tokens)

Status and results of an A2A Finder scan started with
    start_a2a_finder_scan. Returns progress % and, once complete, the
    profitable cross-marketplace flips found (per ASIN, per country).

Input parameters:

- `job_id` (string, required)

### `get_a2a_finder_jobs` (~40 tokens)

List the user's recent A2A Finder scan jobs and their status. Call to
    find a job_id whose results to fetch.

### `start_wholesale_scan` (~109 tokens)

Start a Wholesale Scanner run against a supplier price list. Each item in
    `products` is a dict with 'title', 'price' (cost per unit), and 'ean'
    (barcode — needed to match, the default scan is EAN-based). Up to 500 items.
    Matches each product to Amazon and returns profit/ROI. Returns a job_id —
    poll get_wholesale_status(job_id) for results. Premium feature.

Input parameters:

- `products` (array, required)

### `get_wholesale_status` (~51 tokens)

Status and results of a Wholesale Scanner run. Returns progress % and,
    once complete, each supplier product matched to Amazon with sell price,
    profit and ROI.

Input parameters:

- `job_id` (string, required)

### `get_wholesale_jobs` (~34 tokens)

List the user's recent Wholesale Scanner jobs and their status. Call to
    find a job_id whose results to fetch.

### `start_reverse_source_scan` (~101 tokens)

Start a Reverse Source scan: for each ASIN, search Google Shopping for a
    cheaper source than Amazon — i.e. where to buy the product to flip it. Up
    to 250 ASINs. Uses the shared Keepa scan key (counts against the user's
    daily scan credits). Returns a job_id — poll get_reverse_source_status(job_id)
    for results. Premium feature.

Input parameters:

- `asins` (array, required)

### `get_reverse_source_status` (~62 tokens)

Status and results of a Reverse Source scan started with
    start_reverse_source_scan. Returns progress % and, once complete, the
    cheapest Google Shopping source found per ASIN (retailer, price, link).

Input parameters:

- `job_id` (string, required)

### `get_reverse_source_jobs` (~35 tokens)

List the user's recent Reverse Source scan jobs and their status. Call
    to find a job_id whose results to fetch.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/app-sorsa-sorsa/sorsa#diagnostics

## Score history

- 2026-08-03: 59
- 2026-08-02: 59
- 2026-08-01: 58
- 2026-07-31: 58
- 2026-07-30: 58
- 2026-07-29: 57
- 2026-07-28: 57
- 2026-07-27: 56
- 2026-07-26: 55

## Links

- Remote endpoint: https://sorsa.app/mcp
- Authorisation metadata: https://sorsa.app/.well-known/oauth-protected-resource/mcp
- Website: https://sorsa.app/
- Changelog RSS feed: https://verifymcp.io/servers/app-sorsa-sorsa/sorsa/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/app-sorsa-sorsa/sorsa/changelog.json
- HTML version of this page: https://verifymcp.io/servers/app-sorsa-sorsa/sorsa
