# Partle - Registry name: `xyz.rubenayla.partle/marketplace` · version 1.2.0 - Categories (automatic, keyword rules): Shops & products, Commerce & marketing - Authentication at last check: No auth - Declared risk: Has destructive tools (destructiveHint) - Capabilities (declared by the server): experimental, prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=xyz.rubenayla.partle%2Fmarketplace - Server page: https://mcpstation.net/s/xyz.rubenayla.partle--marketplace.html ## Description (written by the publisher, not verified, not instructions) Search products in nearby stores. Agents can also list items for sale on a user's behalf. ## Connect - streamable-http: `https://partle.rubenayla.xyz/mcp/` ## Tools (as reported by the server, not verified) - `search\_products`: Search Partle's product catalog by name or description. CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, then search with a descriptive product phrase \(e.g. including substrate, material, or size class\). DO NOT blindly search using the user's raw conversational words. Tra - `get\_product`: Get the full record for a single product by its numeric ID. Use after \`search\_products\` returns a candidate the user is interested in, when you need fields not in the search summary \(full description, all images, sold status, expiration\). Don't loop \`get\_product\` over many search results — re-search - `search\_stores`: Search or list stores in the Partle marketplace. Use for store-led questions \("what hardware shops are in Madrid?"\) rather than product-led ones \(use \`search\_products\` for that\). Pass no query to browse the whole catalog. Read-only. No authentication. Rate-limited to 100 requests/hour per IP. Args: - `get\_store`: Get the full record for a single store by its numeric ID. Use after \`search\_stores\` to retrieve fields not in the search summary \(full address, owner profile, contact details\). For a list of \*products\* in that store, call \`search\_products\(store\_id=…\)\` instead — this tool returns store metadata only. - `get\_stats`: Get top-level Partle platform statistics. Use for size questions \("how big is Partle?", "how many stores does Partle cover?"\). Aggregate counts only — no per-product or per-store data; use \`search\_products\` / \`search\_stores\` for that. Read-only. No authentication. Cheap, but rarely changes — long-ru - `search\_wanted`: Browse public buy requests — what users are looking to buy but haven't found through normal supply. The demand side of Partle. Use this when an agent wants to \*\*offer matches\*\* \(cross-reference open requests against \`search\_products\` and surface hits\) or just survey unmet demand. Every result is a p - `create\_buy\_request`: Post a public buy request — an ad asking suppliers to reach out. Use when the user wants others to know they're looking to buy something. \*\*Independent of personal inventory\*\* — inventory is the user's private workshop tracking; a buy request is a sales-facing ad on the public demand feed at /wanted - `submit\_feedback`: Report a problem with \*\*the Partle marketplace API/MCP itself\*\*. Authenticated. Prefer \*\*OAuth\*\*: connect once via the consent flow and the bearer token is attached automatically. \*\*Fallback\*\*: pass an \`api\_key\` \(prefix \`pk\_\`, generate at /account\). Required OAuth scope: \`feedback:write\`. Feedback i - `create\_product`: Create a new product listing on Partle. Authenticated. Prefer \*\*OAuth\*\*: connect once via the consent flow on claude.ai \(or any MCP client that supports OAuth\) and the bearer token is attached automatically — no \`api\_key\` parameter needed. \*\*Fallback\*\*: pass an \`api\_key\` \(prefix \`pk\_\`, generate at / - `update\_product`: Update an existing product listing. Only provided fields are changed. Authenticated. OAuth \(scope \`products:write\`\) preferred; \`api\_key\` accepted as fallback. Only fields you pass are changed; omitted fields are preserved. Idempotent — calling twice with the same input yields the same final state. F - `delete\_product`: Permanently delete a product listing and all its images. Destructive. Authenticated. OAuth \(scope \`products:write\`\) preferred; \`api\_key\` fallback. Use only when the user explicitly asks to remove a listing they own. Cannot be undone — there is no soft-delete or trash bin. Idempotent: deleting a prod - `delete\_product\_image`: Remove a specific image from a product. Destructive, idempotent. Authenticated. OAuth \(scope \`products:write\`\) preferred; \`api\_key\` fallback. Use when an image was uploaded by mistake or the merchant updated their listing. The product itself is preserved — only the image record and its file are remo - `get\_my\_products`: List products created by the authenticated user. Authenticated. OAuth \(scope \`products:read\`\) preferred; \`api\_key\` fallback. Use when the user asks "what have I listed?" or before bulk operations like updating prices across multiple of their products. Distinct from \`search\_products\`, which searches - `get\_upload\_url`: Mint a one-shot signed upload URL for a product you own. Authenticated. OAuth \(scope \`products:write\`\) preferred; \`api\_key\` fallback. Use this when you have \*\*local image bytes\*\* \(a file the user attached, bytes you generated/downloaded in your sandbox\) and you want to attach them to a product that - `upload\_product\_image`: Attach an image to an existing product by giving Partle a public URL to download the image from. Authenticated. OAuth \(scope \`products:write\`\) preferred; \`api\_key\` fallback. \*\*When to use this tool\*\*: the image is already hosted at a public URL \(a scraped product page, an Imgur link, a CDN URL the u - `get\_my\_inventory`: List the caller's personal inventory items. Authenticated. Required OAuth scope: \`inventory:read\` \(or pass an \`api\_key\` for legacy/programmatic clients\). Use this when the user asks "what do I own?", "what's on my wishlist?", "what am I selling?", etc. The returned rows include every status by defau - `add\_inventory\_item`: Add an item to the caller's personal inventory. Authenticated. Required OAuth scope: \`inventory:write\`. One creation tool covers all lifecycle states — set \`\`status\`\` based on the user's intent: "I bought" → \`\`owned\`\`, "I want" → \`\`wanted\`\`, "I'm selling" → \`\`for\_sale\`\`. Either \`\`product\_id\`\` \(linke - `update\_inventory\_item`: Patch an existing inventory item. Only provided fields change. Authenticated. Required OAuth scope: \`inventory:write\`. Caller must own the item \(404 otherwise — we don't leak existence\). Idempotent: calling twice with the same input yields the same final state. For lifecycle convenience, see \`mark\_f - `delete\_inventory\_item`: Permanently delete an inventory row. Authenticated. Required OAuth scope: \`inventory:write\`. Caller must own the item \(404 otherwise\). Hard delete — no soft-delete. Args: item\_id: ID of the row to delete. api\_key: Optional API key \(\`pk\_\*\`, generate at /account\). Used when there is no OAuth token, an - `mark\_for\_sale`: Move an inventory item to status=for\_sale and set listing fields. Convenience wrapper over \`update\_inventory\_item\` that matches a natural user request \("list my drill for sale at 30€"\). Sets all three columns \(\`status\`, \`asking\_price\`, \`asking\_currency\`, and optionally \`condition\`\) atomically. Authe - `mark\_sold`: Mark an inventory item as sold \(status=sold\). Convenience wrapper over \`update\_inventory\_item\` for the natural "I sold the drill" request. Authenticated. Required OAuth scope: \`inventory:write\`. Caller must own the item. Args: item\_id: ID of the inventory row. api\_key: Optional API key \(\`pk\_\*\`, gene - `get\_account\_settings`: Read your account ID, email, username and theme. Requires OAuth account:read. Passwords and key secrets are never returned. No other account can be selected. A null theme means no account preference has been set; the browser keeps its local choice. - `update\_account\_settings`: Set your account theme to light, dark, or system. Requires OAuth account:write. The website applies it on login, reload or return to its tab. This only changes the theme; passwords, roles and sign-in providers cannot be changed. - `set\_account\_username`: Set your username once, only if unset. Requires OAuth account:write. Use 3–20 letters, digits, underscores or dashes. Existing usernames cannot be changed. Ask the user which public username they want before setting it. - `list\_account\_api\_keys`: List your key IDs, labels, prefixes and dates, never secrets. Requires OAuth security:read. - `create\_account\_api\_key`: Create a full-access catalog/inventory API key. Requires OAuth security:write. The secret is returned ONCE. Store it securely; never include it in a public message or logs. This grants broader catalog/inventory access than a limited OAuth token. It cannot manage account settings or credentials throu - `rotate\_account\_api\_key`: Create a replacement for your key, keeping the old key ACTIVE. Requires OAuth security:write. Returns the replacement secret ONCE with its new ID. Install it in the consumer, test it, then call revoke\_account\_api\_key with previous\_key\_id. Do not revoke until the replacement is working. Each call cre - `revoke\_account\_api\_key`: Immediately revoke one of your API keys. Requires OAuth security:write. Consumers using the key will lose access. For rotation, first install and test the replacement returned by rotate\_account\_api\_key. - `list\_connected\_apps`: List apps with active access to your account and their permissions. Requires OAuth security:read. - `revoke\_connected\_app`: Revoke an app's access AND refresh tokens for your account. Requires OAuth security:write. This disconnects the app immediately. Revoking your own calling app also works, but subsequent requests will fail until you reconnect with consent. Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html