Partle
Search products in nearby stores. Agents can also list items for sale on a user's behalf.
Connect it
Settings → Connectors → Add custom connector
URL: https://partle.rubenayla.xyz/mcp/Settings → Apps & Connectors → Advanced → Developer mode
Create connector with URL: https://partle.rubenayla.xyz/mcp/{
"mcpServers": {
"marketplace": {
"url": "https://partle.rubenayla.xyz/mcp/"
}
}
}claude mcp add --transport http marketplace https://partle.rubenayla.xyz/mcp/{
"servers": {
"marketplace": {
"type": "http",
"url": "https://partle.rubenayla.xyz/mcp/"
}
}
}21 tools, verified live
search_productsread-onlySearch 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. Transform questions like 'what do I need to attach a mirror to a brick wall?'
get_productread-onlyGet 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 with tighter filters instead. Read-only. No authentication. Args:
search_storesread-onlySearch 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: query: Free-text search over store name and address. Omit to list
get_storeread-onlyGet 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. Read-only. No authentication. Args: store_id: Integer `id` f
get_statsread-onlyGet 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-running agents should cache the result. Returns: ``{"total_prod
search_wantedread-onlyBrowse 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 public posting â users put these up specifically so suppliers can reach
create_buy_requestPost 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. Authenticated. Required OAuth scope: ``inventory:write``. **Not idem
submit_feedbackReport 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 is attributed to your account so reports are trustworthy and the channel can't b
create_productCreate 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 /account) for programmatic or non-OAuth clients. Required OAuth scope: `p
update_productUpdate 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. For creating a new listing, use `create_product` instead. Caller must ow
delete_productcan modifyPermanently 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 product that no longer exists returns an error, not duplicate side effects.
delete_product_imagecan modifyRemove 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 removed. To remove the product entirely use `delete_product`. Args: pro
get_my_productsread-onlyList 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 the public catalog without owner scoping. Read-only. Args: l
get_upload_urlMint 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 already exists. Common cases: - `create_product` returned 409 (duplicate name
upload_product_imageAttach 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 user provided). Partle's server fetches it and stores it. **When NOT to us
get_my_inventoryread-onlyList 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 default; pass `status` to filter. Args: status: Filter by lifecycle. O
add_inventory_itemAdd 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`` (linked to an existing Partle product) or ``name`` (freeform) must be set.
update_inventory_itemPatch 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_for_sale` and `mark_sold` which set the right combination of fields atomicall
delete_inventory_itemcan modifyPermanently 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, and also when the OAuth token lacks the requir
mark_for_saleMove 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. Authenticated. Required OAuth scope: `inventory:write`. Caller must own the i
mark_soldMark 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_*`, generate at /account). Used when there is no OAuth to
Alternatives in Search & Research
Compare →PMPubmed MCP ServerA
Search PubMed/Europe PMC, fetch articles and full text (PMC/EPMC/Unpaywall), citations, MeSH terms.
Google Ads + Meta Ads + SEO/GEO MCPA
Google Ads, Meta Ads, Google Analytics (GA4) & Search Console MCP server by Ryze AI
MFmcp.film directoryA
Search the curated directory of MCP servers for AI filmmaking and plan a full production stack.
ESExa SearchA
Search the live web and fetch clean content from source pages.
CAConnected AppsA
Read Gmail, search GitHub, update Sheets, and post to Slack through Composio.
FLflightclawA
Search ~300 airlines and book flights with a checkout link. OAuth sign-in by email code.