{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_7bs349nukgp8","handle":"partle","url":"https://wellknown.network/agents/partle","links":{"self":"https://wellknown.network/agents/partle/record.json","html":"https://wellknown.network/agents/partle","markdown":"https://wellknown.network/agents/partle/record.md","api":"https://wellknown.network/api/v1/agents/partle","status":"https://wellknown.network/api/v1/agents/partle/status","claim":"https://wellknown.network/agents/partle/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/partle/claim.json","badge":"https://wellknown.network/agents/partle/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/partle/history","tools":"https://wellknown.network/api/v1/agents/partle/tools"},"ard":{"identifier":"urn:air:partle.rubenayla.xyz:server:partle","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Partle","summary":"Search products in nearby stores. Agents can also list items for sale on a user's behalf.","description":"Search products in nearby stores. Agents can also list items for sale on a user's behalf.","publisher":{"name":"xyz.rubenayla.partle","url":null},"homepage":"https://partle.rubenayla.xyz","repository":"https://github.com/rubenayla/partle-mcp","version":"1.2.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://partle.rubenayla.xyz/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-05-10T15:39:44.735674Z","publishedAt":"2026-05-10T15:39:44.735674Z","registryName":"xyz.rubenayla.partle/marketplace"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":1,"provenance":"derived"},{"slug":"infra.devices","name":"Devices & IoT","confidence":0.525,"provenance":"derived"},{"slug":"content.writing","name":"Writing & Editing","confidence":0.51,"provenance":"derived"}],"categories":["commerce","content","infra"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-09T19:27:59.394Z","lastProbedAt":"2026-10-09T19:27:59.394Z","statusComputedAt":"2026-10-09T19:28:37.200Z","reliability30d":{"probes":107,"successRate":0.9907,"p50Ms":130,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":106,"ok":105,"authBoundaryOk":0,"serviceOk":105,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-09T19:27:59.394Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":125,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:31:33.883Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":139,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T07:26:36.676Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":134,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T01:26:38.903Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":98,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T19:24:07.834Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":228,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T13:22:13.173Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":151,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T06:23:57.961Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":128,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T00:25:05.793Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":111,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T17:30:50.750Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":102,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T10:49:32.853Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":161,"error":null,"detail":{"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"toolCount":21,"toolsHash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","serverName":"Partle Marketplace","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"1.29.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"search_products","description":"Search Partle's product catalog by name or description.\n\n    CRITICAL SEARCH INSTRUCTION: Reason from the job to the product class first, \n    then search with "},{"name":"get_product","description":"Get the full record for a single product by its numeric ID.\n\n    Use after `search_products` returns a candidate the user is interested in,\n    when you need fi"},{"name":"search_stores","description":"Search or list stores in the Partle marketplace.\n\n    Use for store-led questions (\"what hardware shops are in Madrid?\") rather\n    than product-led ones (use `"},{"name":"get_store","description":"Get the full record for a single store by its numeric ID.\n\n    Use after `search_stores` to retrieve fields not in the search summary\n    (full address, owner p"},{"name":"get_stats","description":"Get top-level Partle platform statistics.\n\n    Use for size questions (\"how big is Partle?\", \"how many stores does\n    Partle cover?\"). Aggregate counts only — "},{"name":"search_wanted","description":"Browse public buy requests — what users are looking to buy but\n    haven't found through normal supply.\n\n    The demand side of Partle. Use this when an agent w"},{"name":"create_buy_request","description":"Post a public buy request — an ad asking suppliers to reach out.\n\n    Use when the user wants others to know they're looking to buy\n    something. **Independent"},{"name":"submit_feedback","description":"Report a problem with **the Partle marketplace API/MCP itself**.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow and the\n    bearer toke"},{"name":"create_product","description":"Create a new product listing on Partle.\n\n    Authenticated. Prefer **OAuth**: connect once via the consent flow on\n    claude.ai (or any MCP client that support"},{"name":"update_product","description":"Update an existing product listing. Only provided fields are changed.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` accepted\n    as fa"},{"name":"delete_product","description":"Permanently delete a product listing and all its images. Destructive.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use"},{"name":"delete_product_image","description":"Remove a specific image from a product. Destructive, idempotent.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use when"},{"name":"get_my_products","description":"List products created by the authenticated user.\n\n    Authenticated. OAuth (scope `products:read`) preferred; `api_key` fallback.\n\n    Use when the user asks \"w"},{"name":"get_upload_url","description":"Mint a one-shot signed upload URL for a product you own.\n\n    Authenticated. OAuth (scope `products:write`) preferred; `api_key` fallback.\n\n    Use this when yo"},{"name":"upload_product_image","description":"Attach an image to an existing product by giving Partle a public URL\n    to download the image from.\n\n    Authenticated. OAuth (scope `products:write`) preferre"},{"name":"get_my_inventory","description":"List the caller's personal inventory items.\n\n    Authenticated. Required OAuth scope: `inventory:read` (or pass an\n    `api_key` for legacy/programmatic clients"},{"name":"add_inventory_item","description":"Add an item to the caller's personal inventory.\n\n    Authenticated. Required OAuth scope: `inventory:write`.\n\n    One creation tool covers all lifecycle states "},{"name":"update_inventory_item","description":"Patch an existing inventory item. Only provided fields change.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 ot"},{"name":"delete_inventory_item","description":"Permanently delete an inventory row.\n\n    Authenticated. Required OAuth scope: `inventory:write`. Caller must\n    own the item (404 otherwise). Hard delete — no"},{"name":"mark_for_sale","description":"Move an inventory item to status=for_sale and set listing fields.\n\n    Convenience wrapper over `update_inventory_item` that matches a\n    natural user request "},{"name":"mark_sold","description":"Mark an inventory item as sold (status=sold).\n\n    Convenience wrapper over `update_inventory_item` for the natural\n    \"I sold the drill\" request.\n\n    Authent"}],"package":null,"toolSurface":{"id":"ts_qd7q9q5hpuzk","endpointId":"ep_77drs99dkbe3","hash":"8b8a0b33daac9f32c30f7baf02f0c1a5582db958b7680f97232690a2153b8872","toolCount":21,"serverName":"Partle Marketplace","serverVersion":"1.29.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-12T11:27:10.100Z","lastSeenAt":"2026-10-09T19:27:59.389Z","observations":98,"toolNames":["search_products","get_product","search_stores","get_store","get_stats","search_wanted","create_buy_request","submit_feedback","create_product","update_product","delete_product","delete_product_image","get_my_products","get_upload_url","upload_product_image","get_my_inventory","add_inventory_item","update_inventory_item","delete_inventory_item","mark_for_sale","mark_sold"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_77drs99dkbe3","url":"https://partle.rubenayla.xyz/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T00:25:06.577Z","auth":{"observedAt":"2026-10-08T00:25:06.616Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-08T00:25:06.784Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"rubenayla.xyz","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-29T06:43:12.000Z","validTo":"2026-12-28T07:41:49.000Z","daysToExpiry":79,"sanCount":2,"fingerprint256":"D4:CE:2A:53:82:47:02:22:D2:F4:F6:36:E7:34:C3:A4:B3:EC:B5:8F:5E:F1:FA:41:21:02:E8:28:9F:53:C5:FB"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"xyz.rubenayla.partle/marketplace","url":"https://registry.modelcontextprotocol.io/v0/servers/xyz.rubenayla.partle%2Fmarketplace","firstSeenAt":"2026-09-07T09:23:21.357Z","fetchedAt":"2026-10-08T21:19:54.636Z","normalizedAt":"2026-10-08T21:19:54.636Z"}]},"firstSeenAt":"2026-09-07T09:23:21.357Z","updatedAt":"2026-10-09T19:29:55.672Z"}