Skip to main content
Glama
markswendsen-code

@striderlabs/mcp-poshmark

@striderlabs/mcp-poshmark

MCP server for automating Poshmark fashion resale marketplace using Playwright and Browserbase.

Tools

Tool

Description

search_listings

Search fashion items by brand, category, size, price

get_listing_details

Get full details of a specific listing

get_my_closet

List items in a user's closet

create_listing

Create a new listing with photos and description

get_offers

View offers received or sent

accept_offer

Accept an offer on a listing

Related MCP server: playwright-sse-mcp-server

Setup

Environment Variables

# Required for authenticated actions (get_my_closet, create_listing, get_offers, accept_offer)
POSHMARK_EMAIL=your@email.com
POSHMARK_PASSWORD=yourpassword

# Optional: Browserbase CDP URL for cloud browser (falls back to local Playwright)
BROWSERBASE_CDP_URL=wss://connect.browserbase.com?apiKey=YOUR_KEY

# Optional: set to "false" to show browser window during local development
HEADLESS=true

Installation

npm install -g @striderlabs/mcp-poshmark

MCP Configuration

Add to your MCP client configuration (e.g., Claude Desktop ~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "poshmark": {
      "command": "mcp-poshmark",
      "env": {
        "POSHMARK_EMAIL": "your@email.com",
        "POSHMARK_PASSWORD": "yourpassword",
        "BROWSERBASE_CDP_URL": "wss://connect.browserbase.com?apiKey=YOUR_KEY"
      }
    }
  }
}

Or run directly:

POSHMARK_EMAIL=you@example.com POSHMARK_PASSWORD=secret npx @striderlabs/mcp-poshmark

Tool Reference

search_listings

Search Poshmark for fashion items.

{
  "query": "vintage denim jacket",
  "brand": "Levi's",
  "category": "Women",
  "size": "M",
  "min_price": 20,
  "max_price": 100,
  "sort": "price_asc",
  "limit": 20
}

get_listing_details

Get full details of a listing.

{
  "listing_id": "abc123xyz"
}

Also accepts full URLs: "listing_id": "https://poshmark.com/listing/...".

get_my_closet

List items in a closet.

{
  "username": "seller_handle",
  "status": "available",
  "limit": 50
}

Omit username to use the authenticated user's closet.

create_listing

Create a new listing.

{
  "title": "Vintage Levi's 501 Jeans",
  "description": "Classic straight-leg jeans in excellent condition. Light wash with authentic wear.",
  "category": "Women > Jeans",
  "brand": "Levi's",
  "size": "28",
  "condition": "EUC",
  "original_price": 89,
  "listing_price": 35,
  "color": "Blue",
  "image_paths": ["/path/to/photo1.jpg", "/path/to/photo2.jpg"]
}

Condition options: NWT (New with tags), NWOT (New without tags), EUC (Excellent used condition), GUC (Good used condition), Fair, Poor.

get_offers

View offers.

{
  "type": "received",
  "limit": 20
}

Type options: received, sent, all.

accept_offer

Accept an offer.

{
  "offer_id": "offer_abc123",
  "listing_id": "listing_xyz789"
}

Browser Automation

This server uses Playwright for browser automation.

  • With Browserbase: Connect via CDP using BROWSERBASE_CDP_URL. Ideal for production/cloud use.

  • Without Browserbase: Falls back to local Chromium. Set HEADLESS=false to watch the browser.

License

MIT

Available Tools

6 tools
accept_offerA

Accept an offer received on one of your Poshmark listings

ParametersJSON Schema
NameRequiredDescriptionDefault
offer_idYesThe offer ID to accept
listing_idNoThe listing ID (used if offer_id is not sufficient)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden for disclosing side effects and behavior. It simply states the action without mentioning implications like irreversible acceptance, order creation, or error scenarios. This is a gap for a mutation tool.

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 a single, clear sentence that is front-loaded with the action and target. It contains no redundant or wasteful wording.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with complete schema coverage, but as a mutation with no annotations or output schema, the description could have added context about expected outcomes, prerequisites, or consequences. It is minimally viable but has clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents both parameters meaningfully. The description adds no additional parameter-specific semantics, so the baseline score of 3 is appropriate.

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 operation ('Accept') and the target resource ('an offer received on one of your Poshmark listings'). It is specific and distinct from sibling tools like get_offers and search_listings, which focus on viewing or finding listings/offers rather than accepting.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool should be used when a user wants to accept an offer on their listing, but it does not explicitly mention when not to use it or alternative tools. There is no guidance about prerequisites, such as checking offer status or using get_offers first.

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

create_listingB

Create a new listing in the authenticated user's Poshmark closet

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeYesSize of the item
brandYesBrand name
colorNoPrimary color
titleYesListing title (max 80 chars)
categoryYesCategory path (e.g. Women > Tops > Blouses)
conditionYesItem condition: NWT=New with tags, NWOT=New without tags, EUC=Excellent used, GUC=Good used, Fair, Poor
descriptionYesItem description
image_pathsNoLocal file paths to images to upload
listing_priceYesYour asking price in USD
original_priceYesOriginal retail price in USD

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It only mentions 'authenticated user' but does not disclose behavior like mutating state, auth requirements beyond basic ownership, possible validation errors, or effects on existing data. For a create tool, this is minimal.

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?

One sentence, front-loaded with the main action, no unnecessary words. It is concise and to the point.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a mutation tool with 10 parameters, no output schema, and no annotations. The description is extremely brief and does not explain return values, success/failure behavior, or prerequisites beyond 'authenticated user'. For a tool of this complexity, more context is needed for safe and effective use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides detailed descriptions for all 10 parameters (100% coverage), so the description adds no extra meaning. The baseline of 3 applies because the schema does the heavy lifting; the description doesn't clarify any parameter-specific semantics beyond what the schema already states.

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 a specific verb ('Create') with a clear resource ('a new listing') and scope ('in the authenticated user's Poshmark closet'). This fully distinguishes it from sibling tools, which are read/list/search/accept operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage: when you want to add a new listing to your closet. However, it does not explicitly state when not to use it or mention alternatives (e.g., 'use search_listings to find existing listings'). Context from siblings is clear, but no direct guidance is provided.

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

get_listing_detailsA

Get full details of a specific Poshmark listing by ID or URL

ParametersJSON Schema
NameRequiredDescriptionDefault
listing_idYesListing ID or full Poshmark listing URL

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries full responsibility. The 'get' verb implies a read operation, but it does not disclose auth needs, rate limits, or error behavior. The phrase 'full details' is vague about the response structure or contents.

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?

One sentence, front-loaded with the action, zero filler. It efficiently conveys the core purpose and input method without any unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter lookup tool with no output schema, the description covers the essential scenario: what to expect (full details) and how to specify the target (ID or URL). It could be improved by stating the return format or not-found behavior, but these are minor gaps for a low-complexity read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%: the parameter is fully described as 'Listing ID or full Poshmark listing URL'. The tool description merely repeats this ('by ID or URL') and adds no extra meaning, so the baseline score of 3 for high coverage applies.

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 ('Get'), the resource ('full details of a specific Poshmark listing'), and the input method ('by ID or URL'). It is distinct from siblings like search_listings or get_my_closet, which serve different lookup purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: call this when you have a listing ID or URL and need full details. However, there is no explicit guidance about when to choose this over sibling tools such as search_listings or get_my_closet, nor any when-not-to-use exclusions.

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

get_my_closetA

List items in a Poshmark closet (defaults to authenticated user)

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoNumber of items to return (default: 50)
statusNoFilter by status: available, sold, all
usernameNoPoshmark username (omit to use logged-in user)

TDQS

A3.5/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It states the default behavior (authenticated user) but does not disclose read-only nature, authentication requirements, rate limits, or potential side effects. There is no mention of what happens if the user is not authenticated or if the username is invalid.

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 a single sentence with no wasted words. It front-loads the action and resource, making it easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool, the description is adequate but lacks details about the return format, default limit/status behavior, and how it relates to searching all listings. However, given the schema includes limit and status, and the complexity is low, this is a minor gap.

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?

The input schema covers all parameters with descriptions (100% coverage), but the description adds meaning by clarifying that the tool operates on the authenticated user's closet by default and that username can be used to view other closets. This complements the schema's bare 'omit to use logged-in user'.

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 a specific verb 'List' and specifies the resource 'items in a Poshmark closet', with a note about defaulting to the authenticated user. This distinguishes it from sibling tools like search_listings (which searches all listings) and get_listing_details (which gets a single listing).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. It does not mention when to prefer this over search_listings, nor does it specify exclusions (e.g., when you need sold items, use a different approach). The context is implied but not explicit.

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

get_offersB

View offers received or sent on Poshmark listings

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoType of offers to retrieve (default: received)
limitNoNumber of offers to return (default: 20)

TDQS

B3.3/5.0
Behavior2/5

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

No annotations are provided, so the description must disclose behavioral traits. The verb 'View' indicates a read-only operation, but no additional context is given such as auth requirements, pagination behavior, or side effects. The description is minimal and does not fully carry the burden of transparency.

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 a single, concise sentence that immediately states the tool's purpose. There is no wasted wording, and the key elements (view offers, received/sent, on Poshmark listings) are all included in a well-structured format.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple with only two parameters and no output schema, but the description lacks usage context such as when to review offers before accepting or how to interpret results. It is sufficient for a basic understanding but does not provide the full context needed for an agent to decide between this tool and accept_offer effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters (type and limit) thoroughly. The description does not add meaningful parameter semantics beyond what the schema provides, so a baseline score of 3 is appropriate.

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 'View' with the resource 'offers' and clarifies direction ('received or sent'), clearly distinguishing it from sibling tools like accept_offer which modifies offers. It accurately describes the tool's function in a concise manner.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description states what the tool does but provides no explicit guidance on when to use it versus alternatives. It does not mention that this is the appropriate tool for reviewing offers before accepting, nor does it exclude use cases. The context is implied but not elaborated.

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

search_listingsA

Search Poshmark for fashion listings by keyword, brand, category, size, and price range

ParametersJSON Schema
NameRequiredDescriptionDefault
sizeNoSize (e.g. S, M, L, XL, 8, 10)
sortNoSort order: relevance, price_asc, price_desc, newest
brandNoBrand name (e.g. Nike, Zara, Gucci)
limitNoNumber of results to return (default: 20, max: 50)
queryNoSearch query / keywords
categoryNoCategory (e.g. Women, Men, Kids, Home)
max_priceNoMaximum price in USD
min_priceNoMinimum price in USD

TDQS

A3.6/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full disclosure burden. It states the search action but does not disclose the return format (list vs count), pagination behavior, or any limitations. It also doesn't explicitly confirm this is a read-only operation beyond the verb 'Search'.

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 a single, front-loaded sentence that is efficient and free of filler. Every word contributes to defining the tool's scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite having 8 parameters and no output schema, the description provides only a high-level summary. It fails to explain what the response contains, how filters combine, or any search behavior details. A more complete description would mention result lists, defaults, or limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all 8 parameters are already documented in the input schema. The tool description adds no additional parameter semantics; it merely summarizes a subset of the filters (keyword, brand, category, size, price range) and omits sort and limit.

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 'Search', identifies the resource as 'Poshmark fashion listings', and lists the filter dimensions (keyword, brand, category, size, price range). This clearly differentiates it from siblings like create_listing or get_offers.

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 makes clear it is for searching/finding listings, which implies use in discovery scenarios. It doesn't explicitly state when not to use it or reference alternatives, but the context is unambiguous given the sibling tool names.

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. 6 tool updatesv1.0.0
    • First observedaccept_offer
    • First observedcreate_listing
    • First observedget_listing_details
    • First observedget_my_closet
    • First observedget_offers
    • First observedsearch_listings

TDQS

A3.7/5.0
Disambiguation5/5

Each tool has a distinct purpose: searching, viewing details, listing closet items, creating listings, viewing offers, and accepting offers. There is no overlap or ambiguity among them.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (search_listings, get_listing_details, get_my_closet, create_listing, get_offers, accept_offer). The naming is uniform and predictable.

Tool Count5/5

The server has 6 tools, which is well-scoped for a Poshmark integration covering search, listing management, and offer handling. Each tool serves a clear purpose without redundancy.

Completeness3/5

The tool set covers core operations like search, get details, list closet, create listing, and manage offers, but lacks update/delete for listings and decline/counter for offers. These are notable gaps in the full lifecycle.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/markswendsen-code/mcp-poshmark'

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