protogrid

Search / io.github.aar-ont/soldstack

SoldStack

R1· needs a key

Real Poshmark sold prices for secondhand clothing, shoes and bags, split by condition.

v1.1.0 · active · website · descriptor JSON · versions

An agent can connect on its own if it already holds X_API_KEY, X_API_KEY.Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.
Quality87good
Trust80of 100
Uptime, 30 days100%
Latency p50274 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "soldstack": {
      "type": "http",
      "url": "https://soldstack.dev/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}",
        "Authorization": "${X_API_KEY}"
      }
    }
  }
}
claude mcp add --transport http soldstack https://soldstack.dev/mcp --header "X-API-Key: ${X_API_KEY}" --header "Authorization: ${X_API_KEY}"
[mcp_servers.soldstack]
url = "https://soldstack.dev/mcp"
env_http_headers = { "X-API-Key" = "X_API_KEY", "Authorization" = "X_API_KEY" }
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "soldstack": {
      "type": "remote",
      "url": "https://soldstack.dev/mcp",
      "enabled": true,
      "headers": {
        "X-API-Key": "{env:X_API_KEY}",
        "Authorization": "{env:X_API_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "soldstack": {
      "type": "http",
      "url": "https://soldstack.dev/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}",
        "Authorization": "${X_API_KEY}"
      }
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=soldstack&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vc29sZHN0YWNrLmRldi9tY3AiLCJoZWFkZXJzIjp7IlgtQVBJLUtleSI6IiR7WF9BUElfS0VZfSIsIkF1dGhvcml6YXRpb24iOiIke1hfQVBJX0tFWX0ifX0%3D"
}
{
  "servers": {
    "soldstack": {
      "type": "http",
      "url": "https://soldstack.dev/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}",
        "Authorization": "${X_API_KEY}"
      }
    }
  }
}
{
  "mcpServers": {
    "soldstack": {
      "httpUrl": "https://soldstack.dev/mcp",
      "headers": {
        "X-API-Key": "${X_API_KEY}",
        "Authorization": "${X_API_KEY}"
      }
    }
  }
}
extensions:
  "soldstack":
    enabled: true
    name: "soldstack"
    type: streamable_http
    uri: "https://soldstack.dev/mcp"
    headers:
      "X-API-Key": "${X_API_KEY}"
      "Authorization": "${X_API_KEY}"
    timeout: 300

Placeholders to fill from your own secret store: ${X_API_KEY}, ${X_API_KEY}. The registry never accepts secret values.

Quality 87 / 100good

protocol88 · weight 25
  • pass
    protocol.modernsupports 2026-07-28 (server/discover)
  • pass
    protocol.statelessanswers without a session
  • pass
    protocol.transportstreamable HTTP
  • warn
    protocol.list_ttltools/list declares ttlMs 0, so clients re-fetch it on every use
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene93 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • warn
    tools.description_length2 tools have descriptions over 1,024 characters, which crowds the context
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations3 of 3 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 2,159 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
stability75 · weight 15
  • warn
    stability.changes13 tool changes in 30 days
  • pass
    stability.rug_pullno tool changed its meaning under the same name
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

3 tools, about 2,159 tokens to load them all · tool set 979f6cb75e03 · tools last changed 2026-10-19 · checked 2026-10-19 13:37 UTC

Tool changes

  • value_donation_listadded

    Fair-market values for a whole donation list (clothing, shoes and bags), each item with the Poshmark sales behind it, a list total and a dated method paragraph the donor can keep with their records. One call values up to 100 items and costs one lookup per item. Call it once with the whole list, not once per item. items: a list of objects, one per item. Only description is required. description: what it is, as the donor would say it: "womens handbag", "mens suit", "kids snow pants", "Levi's 501 jeans". Put brand and model in brand or description. brand: optional, e.g. "Coach". With a brand the item is priced from that brand's own sales when enough are saved, else from its category. condition: optional. new_with_tags, used_like_new, used_excellent, used_good, used_fair, a plain word (like new, good, fair), or new or used. Default used, which is right for most donations. category, department, size: optional; read from the description when left out. A kids' size such as "4T" marks the item as kids'. quantity: optional, default 1. total is value times quantity. source: "poshmark" (US, USD, default) or "poshmark_ca" (Poshmark Canada, CAD). examples_per_item: how many of the sales behind each value to include (0-5, default 2). Each has a title, price, sold date and link. Each item gets value (the median sold price), low and high (the 25th and 75th percentiles), sales_used, basis ("brand + item", or "category + department + condition" or "category + condition" when there is no brand match), a confidence rating and a reason. An item with nothing to go on has value null and a reason; never guess a value for it. The list has total, items_valued, method and disclaimer. This is resale market data, not tax or legal advice; appraisal_may_be_needed is true when the total is over $5,000.

  • buy_or_passchangedtitle, annotations
  • sold_compschangedtitle, annotations
  • buy_or_passchangeddescription
    before

    Whether an item is worth buying at a given cost to resell on Poshmark: BUY, MAYBE or PASS with the reason, judged from its clean sold comps after Poshmark's fee. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "patagonia better sweater". cost: what you'd pay, e.g. the thrift-store tag price in USD. min_profit: smallest profit after fees worth the effort (default 10). size / condition: same filters as sold_comps. source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).

    after · 100% of words in common

    Whether an item is worth buying at a given cost to resell on Poshmark: buy, maybe or pass with the reason, judged from its clean sold comps after Poshmark's fee. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "patagonia better sweater". cost: what you'd pay, e.g. the thrift-store tag price in USD. min_profit: smallest profit after fees worth the effort (default 10). size / condition: same filters as sold_comps. source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).

  • sold_compschangeddescription
    before

    What an item actually sold for on Poshmark: median sold price, typical range (p10-p90), days to sell, what the seller keeps after fees, price by condition, a confidence rating, and the matching sales. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "coach tabby 26" or "lululemon align leggings", or a plain item type like "womens jeans". For kids' clothing put girls, boys, kids, toddler or youth in the query ("girls jeans"); otherwise kids' sizes are removed. size: only this size, e.g. "8", "M" or "10.5". Leave it out unless the user named a size: it can leave very few sales. condition: "new", "used", or an exact grade: new_with_tags, not_new_with_tags, used_like_new, used_excellent, used_good, used_fair (comma-separated for several). days: only sales from the last N days (1-365). limit: how many individual sales to include (0-50). exclude_seller: comma-separated seller usernames to leave out (case-insensitive). sort: order of the included sales: "recent" (newest first), "price_asc" or "price_desc". Stats are unaffected. department: comma-separated: Women, Men, Kids, Home, Pets, Electronics. "Kids" also keeps kids' sizes. category: comma-separated Poshmark categories, e.g. "Jeans". include_removed: true also returns removed_items, the sales cleaning dropped, each with a removed_reason. deep: true reads up to ~190 recent sales instead of 48 (slower when not cached, about 10s; one lookup). source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).

    after · 88% of words in common

    What an item actually sold for on Poshmark: median sold price, typical range (p10-p90), days to sell, what the seller keeps after fees, price by condition, a confidence rating, and the matching sales. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "coach tabby 26" or "lululemon align leggings", or a plain item type like "womens jeans". For kids' clothing put girls, boys, kids, toddler or youth in the query ("girls jeans"); otherwise kids' sizes are removed. size: only this size, e.g. "8", "M" or "10.5". Leave it out unless the user named a size: it can leave very few sales. condition: "new", "used", a plain word (nwt, like new, excellent, very good, good, fair, poor), or an exact grade: new_with_tags, not_new_with_tags, used_like_new, used_excellent, used_good, used_fair (comma-separated for several). days: only sales from the last N days (1-365). Poshmark lists sold results by relevance, not date, so without it the sales can be years old; days=365 (or 90) keeps prices recent. limit: how many individual sales to include in `sales` (default 10, 0-50). Each sale has the same fields as a /v1/sold item. exclude_seller: comma-separated seller usernames to leave out (case-insensitive). sort: order of the included sales: "recent" (newest first), "price_asc" or "price_desc". Stats are unaffected. department: comma-separated: Women, Men, Kids, Home, Pets, Electronics. "Kids" also keeps kids' sizes. category: comma-separated Poshmark categories, e.g. "Jeans". include_removed: true also returns removed_items, the sales cleaning dropped, each with a removed_reason. deep: true reads up to ~190 sales (4 pages of up to 48, in Poshmark's relevance order) instead of one page (slower when not cached, about 10s; one lookup). source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).

  • sold_compschangeddescription, input schema
    before

    What an item actually sold for on Poshmark: median sold price, typical range (p10-p90), days to sell, what the seller keeps after fees, price by condition, a confidence rating, and the matching sales. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "coach tabby 26" or "lululemon align leggings", or a plain item type like "womens jeans". For kids' clothing put girls, boys, kids, toddler or youth in the query ("girls jeans"); otherwise kids' sizes are removed. size: only this size, e.g. "8", "M" or "10.5". Leave it out unless the user named a size: it can leave very few sales. condition: "new", "used", or an exact grade: new_with_tags, not_new_with_tags, used_like_new, used_excellent, used_good, used_fair (comma-separated for several). days: only sales from the last N days (1-365). limit: how many individual sales to include (0-50). deep: true reads up to ~190 recent sales instead of 48 (slower when not cached, about 10s; one lookup). source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).

    after · 83% of words in common

    What an item actually sold for on Poshmark: median sold price, typical range (p10-p90), days to sell, what the seller keeps after fees, price by condition, a confidence rating, and the matching sales. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "coach tabby 26" or "lululemon align leggings", or a plain item type like "womens jeans". For kids' clothing put girls, boys, kids, toddler or youth in the query ("girls jeans"); otherwise kids' sizes are removed. size: only this size, e.g. "8", "M" or "10.5". Leave it out unless the user named a size: it can leave very few sales. condition: "new", "used", or an exact grade: new_with_tags, not_new_with_tags, used_like_new, used_excellent, used_good, used_fair (comma-separated for several). days: only sales from the last N days (1-365). limit: how many individual sales to include (0-50). exclude_seller: comma-separated seller usernames to leave out (case-insensitive). sort: order of the included sales: "recent" (newest first), "price_asc" or "price_desc". Stats are unaffected. department: comma-separated: Women, Men, Kids, Home, Pets, Electronics. "Kids" also keeps kids' sizes. category: comma-separated Poshmark categories, e.g. "Jeans". include_removed: true also returns removed_items, the sales cleaning dropped, each with a removed_reason. deep: true reads up to ~190 recent sales instead of 48 (slower when not cached, about 10s; one lookup). source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).

  • buy_or_passchangeddescription
    before

    Whether an item is worth buying at a given cost to resell on Poshmark: BUY, MAYBE or PASS with the reason, judged from its clean sold comps after Poshmark's fee. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "patagonia better sweater". cost: what you'd pay, e.g. the thrift-store tag price in USD. min_profit: smallest profit after fees worth the effort (default 10). size / condition: same filters as sold_comps. source: "poshmark" (the only live marketplace today).

    after · 89% of words in common

    Whether an item is worth buying at a given cost to resell on Poshmark: BUY, MAYBE or PASS with the reason, judged from its clean sold comps after Poshmark's fee. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "patagonia better sweater". cost: what you'd pay, e.g. the thrift-store tag price in USD. min_profit: smallest profit after fees worth the effort (default 10). size / condition: same filters as sold_comps. source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).

  • sold_compschangeddescription
    before

    What an item actually sold for on Poshmark: median sold price, typical range (p10-p90), days to sell, what the seller keeps after fees, price by condition, a confidence rating, and the matching sales. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "coach tabby 26" or "lululemon align leggings", or a plain item type like "womens jeans". For kids' clothing put girls, boys, kids, toddler or youth in the query ("girls jeans"); otherwise kids' sizes are removed. size: only this size, e.g. "8", "M" or "10.5". Leave it out unless the user named a size: it can leave very few sales. condition: "new", "used", or an exact grade: new_with_tags, not_new_with_tags, used_like_new, used_excellent, used_good, used_fair (comma-separated for several). days: only sales from the last N days (1-365). limit: how many individual sales to include (0-50). deep: true reads up to ~190 recent sales instead of 48 (slower when not cached, about 10s; one lookup). source: "poshmark" (the only live marketplace today).

    after · 93% of words in common

    What an item actually sold for on Poshmark: median sold price, typical range (p10-p90), days to sell, what the seller keeps after fees, price by condition, a confidence rating, and the matching sales. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "coach tabby 26" or "lululemon align leggings", or a plain item type like "womens jeans". For kids' clothing put girls, boys, kids, toddler or youth in the query ("girls jeans"); otherwise kids' sizes are removed. size: only this size, e.g. "8", "M" or "10.5". Leave it out unless the user named a size: it can leave very few sales. condition: "new", "used", or an exact grade: new_with_tags, not_new_with_tags, used_like_new, used_excellent, used_good, used_fair (comma-separated for several). days: only sales from the last N days (1-365). limit: how many individual sales to include (0-50). deep: true reads up to ~190 recent sales instead of 48 (slower when not cached, about 10s; one lookup). source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).

  • sold_compschangeddescription, input schema
    before

    What an item actually sold for on Poshmark: median sold price, typical range (p10-p90), days to sell, what the seller keeps after fees, price by condition, a confidence rating, and the matching sales. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "coach tabby 26" or "lululemon align leggings". size: only this size, e.g. "8", "M" or "10.5". condition: "new", "used", or an exact grade: new_with_tags, not_new_with_tags, used_like_new, used_excellent, used_good, used_fair (comma-separated for several). days: only sales from the last N days (1-365). limit: how many individual sales to include (0-50). source: "poshmark" (the only live marketplace today).

    after · 71% of words in common

    What an item actually sold for on Poshmark: median sold price, typical range (p10-p90), days to sell, what the seller keeps after fees, price by condition, a confidence rating, and the matching sales. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "coach tabby 26" or "lululemon align leggings", or a plain item type like "womens jeans". For kids' clothing put girls, boys, kids, toddler or youth in the query ("girls jeans"); otherwise kids' sizes are removed. size: only this size, e.g. "8", "M" or "10.5". Leave it out unless the user named a size: it can leave very few sales. condition: "new", "used", or an exact grade: new_with_tags, not_new_with_tags, used_like_new, used_excellent, used_good, used_fair (comma-separated for several). days: only sales from the last N days (1-365). limit: how many individual sales to include (0-50). deep: true reads up to ~190 recent sales instead of 48 (slower when not cached, about 10s; one lookup). source: "poshmark" (the only live marketplace today).

  • buy_or_passchangeddescription
    before

    Whether an item is worth buying at a given cost to resell on Poshmark: BUY, MAYBE or PASS with the reason, judged from its clean sold comps after Poshmark's fee. query: brand + item, e.g. "patagonia better sweater". cost: what you'd pay, e.g. the thrift-store tag price in USD. min_profit: smallest profit after fees worth the effort (default 10). size / condition: same filters as sold_comps. source: "poshmark" (the only live marketplace today).

    after · 82% of words in common

    Whether an item is worth buying at a given cost to resell on Poshmark: BUY, MAYBE or PASS with the reason, judged from its clean sold comps after Poshmark's fee. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "patagonia better sweater". cost: what you'd pay, e.g. the thrift-store tag price in USD. min_profit: smallest profit after fees worth the effort (default 10). size / condition: same filters as sold_comps. source: "poshmark" (the only live marketplace today).

Showing the latest 10. Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 80 / 100

no-repository
provenance45
liveness100
freshness100
hygiene80

+website +reachable +uptime-100% +updated-6d-ago -no-repository

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://soldstack.dev/mcp streamable-httpapi_key ${X_API_KEY}yes100%274 ms2026-07-282026-10-19

Tools (3)

buy_or_passread-onlyWhether an item is worth buying at a given cost to resell on Poshmark: buy, maybe or pass with the reason, judged from its clean sold comps after Poshmark's fee. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "patagonia better sweater". cost: what you'd pay, e.g. the thrift-store tag price in USD. min_profit: smallest profit after fees worth the effort (default 10). size / condition: same filters as sold_comps. source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).
sold_compsread-onlyWhat an item actually sold for on Poshmark: median sold price, typical range (p10-p90), days to sell, what the seller keeps after fees, price by condition, a confidence rating, and the matching sales. Call it for one item at a time; if it reports busy, wait the given number of seconds and call again. query: brand + item, e.g. "coach tabby 26" or "lululemon align leggings", or a plain item type like "womens jeans". For kids' clothing put girls, boys, kids, toddler or youth in the query ("girls jeans"); otherwise kids' sizes are removed. size: only this size, e.g. "8", "M" or "10.5". Leave it out unless the user named a size: it can leave very few sales. condition: "new", "used", a plain word (nwt, like new, excellent, very good, good, fair, poor), or an exact grade: new_with_tags, not_new_with_tags, used_like_new, used_excellent, used_good, used_fair (comma-separated for several). days: only sales from the last N days (1-365). Poshmark lists sold results by relevance, not date, so without it the sales can be years old; days=365 (or 90) keeps prices recent. limit: how many individual sales to include in `sales` (default 10, 0-50). Each sale has the same fields as a /v1/sold item. exclude_seller: comma-separated seller usernames to leave out (case-insensitive). sort: order of the included sales: "recent" (newest first), "price_asc" or "price_desc". Stats are unaffected. department: comma-separated: Women, Men, Kids, Home, Pets, Electronics. "Kids" also keeps kids' sizes. category: comma-separated Poshmark categories, e.g. "Jeans". include_removed: true also returns removed_items, the sales cleaning dropped, each with a removed_reason. deep: true reads up to ~190 sales (4 pages of up to 48, in Poshmark's relevance order) instead of one page (slower when not cached, about 10s; one lookup). source: "poshmark" (US, default) or "poshmark_ca" (Poshmark Canada; prices and fees in CAD).
value_donation_listread-onlyFair-market values for a whole donation list (clothing, shoes and bags), each item with the Poshmark sales behind it, a list total and a dated method paragraph the donor can keep with their records. One call values up to 100 items and costs one lookup per item. Call it once with the whole list, not once per item. items: a list of objects, one per item. Only description is required. description: what it is, as the donor would say it: "womens handbag", "mens suit", "kids snow pants", "Levi's 501 jeans". Put brand and model in brand or description. brand: optional, e.g. "Coach". With a brand the item is priced from that brand's own sales when enough are saved, else from its category. condition: optional. new_with_tags, used_like_new, used_excellent, used_good, used_fair, a plain word (like new, good, fair), or new or used. Default used, which is right for most donations. category, department, size: optional; read from the description when left out. A kids' size such as "4T" marks the item as kids'. quantity: optional, default 1. total is value times quantity. source: "poshmark" (US, USD, default) or "poshmark_ca" (Poshmark Canada, CAD). examples_per_item: how many of the sales behind each value to include (0-5, default 2). Each has a title, price, sold date and link. Each item gets value (the median sold price), low and high (the 25th and 75th percentiles), sales_used, basis ("brand + item", or "category + department + condition" or "category + condition" when there is no brand match), a confidence rating and a reason. An item with nothing to go on has value null and a reason; never guess a value for it. The list has total, items_valued, method and disclaimer. This is resale market data, not tax or legal advice; appraisal_may_be_needed is true when the total is over $5,000.

Schemas: list_tools.

Similar MCP servers

Official server.json
{
  "name": "io.github.aar-ont/soldstack",
  "title": "SoldStack",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://soldstack.dev/mcp",
      "type": "streamable-http",
      "headers": [
        {
          "name": "X-API-Key",
          "isSecret": true,
          "isRequired": true,
          "description": "Your SoldStack API key (free at https://soldstack.dev, 100 lookups a month)"
        }
      ]
    }
  ],
  "version": "1.1.0",
  "websiteUrl": "https://soldstack.dev",
  "description": "Real Poshmark sold prices for secondhand clothing, shoes and bags, split by condition."
}