@striderlabs/mcp-poshmark
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@@striderlabs/mcp-poshmarksearch for vintage Levi's jeans under $50"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
@striderlabs/mcp-poshmark
MCP server for automating Poshmark fashion resale marketplace using Playwright and Browserbase.
Tools
Tool | Description |
| Search fashion items by brand, category, size, price |
| Get full details of a specific listing |
| List items in a user's closet |
| Create a new listing with photos and description |
| View offers received or sent |
| 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=trueInstallation
npm install -g @striderlabs/mcp-poshmarkMCP 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-poshmarkTool 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=falseto watch the browser.
License
MIT
Available Tools
6 toolsaccept_offerA
Accept an offer received on one of your Poshmark listings
| Name | Required | Description | Default |
|---|---|---|---|
| offer_id | Yes | The offer ID to accept | |
| listing_id | No | The listing ID (used if offer_id is not sufficient) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| size | Yes | Size of the item | |
| brand | Yes | Brand name | |
| color | No | Primary color | |
| title | Yes | Listing title (max 80 chars) | |
| category | Yes | Category path (e.g. Women > Tops > Blouses) | |
| condition | Yes | Item condition: NWT=New with tags, NWOT=New without tags, EUC=Excellent used, GUC=Good used, Fair, Poor | |
| description | Yes | Item description | |
| image_paths | No | Local file paths to images to upload | |
| listing_price | Yes | Your asking price in USD | |
| original_price | Yes | Original retail price in USD |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| listing_id | Yes | Listing ID or full Poshmark listing URL |
TDQS
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.
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.
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.
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.
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.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Number of items to return (default: 50) | |
| status | No | Filter by status: available, sold, all | |
| username | No | Poshmark username (omit to use logged-in user) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Type of offers to retrieve (default: received) | |
| limit | No | Number of offers to return (default: 20) |
TDQS
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.
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.
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.
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.
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.
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
| Name | Required | Description | Default |
|---|---|---|---|
| size | No | Size (e.g. S, M, L, XL, 8, 10) | |
| sort | No | Sort order: relevance, price_asc, price_desc, newest | |
| brand | No | Brand name (e.g. Nike, Zara, Gucci) | |
| limit | No | Number of results to return (default: 20, max: 50) | |
| query | No | Search query / keywords | |
| category | No | Category (e.g. Women, Men, Kids, Home) | |
| max_price | No | Maximum price in USD | |
| min_price | No | Minimum price in USD |
TDQS
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.
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.
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.
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.
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.
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.
6 tool updates
v1.0.0- First observed
accept_offer - First observed
create_listing - First observed
get_listing_details - First observed
get_my_closet - First observed
get_offers - First observed
search_listings
TDQS
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.
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.
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.
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
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
MCP server for Mint — AI-powered QA that runs your app in a real browser on every PR.
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
MCP server for Boson Protocol — on-chain agentic commerce for physical & digital goods.
Hosted Amazon Seller and Vendor MCP server for Claude, ChatGPT, Cursor, Codex, Gemini, Copilot.
Related MCP Servers
- AlicenseBqualityNot gradedmaintenanceA MCP server that provides browser automation tools, allowing users to navigate websites, take screenshots, click elements, fill forms, and execute JavaScript through Playwright.82-
- FlicenseNot gradedqualityNot gradedmaintenanceAn MCP server that provides browser automation capabilities via Playwright using Server-Sent Events (SSE). It enables clients to perform web operations and scraping through a containerized Docker environment.-
- FlicenseNot gradedqualityCmaintenanceMCP server for grocery-related web automation using Playwright, enabling AI assistants to interact with grocery websites.-
- AlicenseAqualityDmaintenanceAn MCP server that integrates with CarMax to search inventory, get vehicle details, schedule test drives, and get instant offers using Playwright and Browserbase.417MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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