Skip to main content
Glama

Partle Marketplace MCP Server

Model Context Protocol server for the Partle marketplace โ€” let your AI shop here: search products and stores, get prices and purchase links, or ask it to add a listing for you, all without leaving your assistant.

Live product and store coverage is available through the get_stats tool. Public catalogue reads need no auth. Writes and private inventory reads need OAuth or a pk_โ€ฆ API key.

Two ways to run it

Point your MCP client at:

https://partle.rubenayla.xyz/mcp/

That's it. Streamable HTTP transport, MCP spec 2025-06-18. Per-client install instructions: /documentation/mcp-setup/.

Local stdio (for clients that prefer installable servers, or for Glama / Smithery scoring)

pip install partle-mcp
partle-mcp

Or with uvx (no install):

uvx partle-mcp

Or with Docker:

docker run --rm -i ghcr.io/rubenayla/partle-mcp

The stdio package proxies to the public REST API at https://partle.rubenayla.xyz, so you don't need a database or local backend.

Claude Desktop / Claude Code (stdio)

{
  "mcpServers": {
    "partle": {
      "command": "uvx",
      "args": ["partle-mcp"]
    }
  }
}

Related MCP server: Google Maps Places MCP

Tools (20 total)

Read (no auth)

Tool

Purpose

search_products

Search the catalog by name, price range, tags, store. Supports cross-language semantic search.

get_product

Full record for one product by ID.

search_stores

Search/list stores by name or address.

get_store

Full record for one store by ID.

get_stats

Platform-wide totals.

search_wanted

Browse public buy requests at /wanted โ€” things people are looking to buy but haven't found. Cross-reference against search_products to offer matches.

Write (authenticated)

Two ways to authenticate, in preference order:

  1. OAuth (recommended) โ€” when you add Partle as a custom connector in claude.ai or any MCP client that supports OAuth, the client walks you through a one-click consent screen and attaches a bearer token automatically. Scopes: products:read, products:write, inventory:read, inventory:write. Revoke at /account โ†’ Connected apps. RFC 9728 metadata at /.well-known/oauth-protected-resource; RFC 7591 dynamic client registration at /oauth/register.

  2. API key (fallback) โ€” pass an api_key parameter to any write tool. Generate at /account โ†’ API Keys. Use this when your client doesn't support OAuth (raw scripts, programmatic agents).

Products โ€” public catalog listings.

Tool

Purpose

create_product

Add a new listing. Set verified=false when an AI is proposing on behalf of an unconfirmed human.

update_product

Edit a listing you own.

delete_product

Remove a listing you own.

upload_product_image

Attach an image (base64 or URL).

delete_product_image

Remove an image from a product.

get_my_products

List products you've created.

The remote HTTP server also offers get_upload_url (re-fetches a signed upload URL for an existing product). Not exposed in this stdio package โ€” use the remote server if you need it.

Inventory โ€” private workshop tracking (owned / wanted / for_sale / sold / discarded). Private to the owner; does not appear on the public /wanted feed.

Tool

Purpose

get_my_inventory

List your inventory items. Filterable by status, project, free text.

add_inventory_item

Add a row in any lifecycle state.

update_inventory_item

Patch any field.

delete_inventory_item

Permanently remove a row.

mark_for_sale

Convenience: flip an owned item to for_sale and set an asking price.

mark_sold

Convenience: flip a for_sale item to sold.

Buy requests โ€” public demand-side posts on /wanted. Independent of personal inventory.

Tool

Purpose

create_buy_request

Post a public buy request (name, description, quantity, optional max_price and contact).

Feedback

Tool

Purpose

submit_feedback

Send freeform feedback about your integration experience.

Public REST API

Same data, also reachable as plain HTTP for clients without MCP support:

  • GET /v1/public/products?q=cerrojo&limit=10 โ€” search products

  • GET /v1/public/stores?q=Madrid&limit=10 โ€” search stores

  • GET /v1/public/wanted?q=bolt&limit=10 โ€” list open public buy requests

  • GET /v1/public/stats โ€” platform totals

  • POST /v1/public/feedback โ€” submit feedback

Base URL: https://partle.rubenayla.xyz. Rate-limited to 100 req/hour per IP.

Full docs: /documentation/ ยท OpenAPI: /openapi.json ยท Discovery: /.well-known/mcp.json.

Example

You: "Use Partle to find a drill under โ‚ฌ50."

Claude: (calls search_products(query="drill", max_price=50))

Returns Blackspur 13pc High Speed Drill Bit Set at โ‚ฌ4.99 (Lenehans, IE), Flotec Drill Pump 225 GPH at โ‚ฌ17.14 (Kooyman Megastore, NL), and a few more โ€” each with a partle_url to view the listing.

More examples in the setup guide.

License

Apache-2.0 โ€” see LICENSE.

Available Tools

18 tools
add_inventory_itemAInspect

Add an item to the caller's personal inventory. Requires an API key.

One creation tool covers all lifecycle states โ€” set status to match the user's intent: "I bought" โ†’ owned, "I want" โ†’ wanted, "I'm selling" โ†’ for_sale. Either product_id or name must be set. Not idempotent.

Args: api_key: Partle API key (prefix pk_). name: Freeform name for items not yet linked to a Partle product. product_id: Link to a canonical Partle product. status: Lifecycle. Default owned. quantity: How many. Fractional ok. Default 1. notes: Freeform multi-line text โ€” the dumping ground for anything not modeled as a column: extra URLs, comments, where stored, condition narrative, purpose, source, history, log entries. Markdown is fine. Put extra URLs here, not in another field. acquisition_price: What you paid. acquisition_currency: Currency of acquisition_price. purchased_at: ISO date (YYYY-MM-DD). asking_price: For status=for_sale. asking_currency: Currency of asking_price. condition: Free string โ€” typical: new, like_new, good, fair, poor. external_link: Primary click-through URL only (source listing, vendor page, manufacturer page). Exactly one. Additional URLs go in notes as markdown links. external_id: Stable identifier from the source system, used as a dedup key. Per-user unique when set โ€” same external_id can't appear twice for one user. Format is up to you (e.g. aliexpress:1005004714348221, amazon:order/.../line/1, content hash). Leave null for handwritten items. project: Tag for grouping.

Returns: The created inventory row.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
nameNo
product_idNo
statusNoowned
quantityNo
notesNo
acquisition_priceNo
acquisition_currencyNo
purchased_atNo
asking_priceNo
asking_currencyNo
conditionNo
external_linkNo
external_idNo
projectNo

TDQS

A4.7/5.0
Behavior5/5

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

Discloses non-idempotency, API key requirement, and details on external_id as a dedup key. Adds value beyond annotations by explaining creation behavior and constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with bullet points and front-loaded key rules. Although lengthy, each sentence adds value for a complex tool with many parameters.

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

Completeness5/5

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

Covers all aspects: purpose, parameter details, return value, and constraints. Despite no output schema, the description is thorough and leaves no major gaps.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by providing detailed explanations for each of the 15 parameters, including formats, defaults, and usage notes.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Add an item to the caller's personal inventory' and explains status values for different intents. Distinguishes itself from sibling tools like update_inventory_item and mark_for_sale by being the creation tool.

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

Usage Guidelines4/5

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

Provides explicit guidance on when to use each status, that product_id or name must be set, and that it's not idempotent. Could improve by explicitly stating not to use for updates, but the sibling list implies that.

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

create_productAInspect

Create a new product listing on Partle. Requires an API key.

Use this when the user wants to add an item for sale. Each call creates a new record โ€” never call twice with identical input expecting only one record (it is not idempotent). For updates to existing products, use update_product.

Args: api_key: Partle API key, prefix pk_. Generate at https://partle.rubenayla.xyz/account. name: Product name. Required, 1โ€“200 chars. description: Long-form product description. Optional. price: Price in whole currency units, not cents. e.g. 15.99 means โ‚ฌ15.99. Max 100000. Omit for "ask the seller". currency: Currency symbol. Defaults to โ‚ฌ. Use $, ยฃ, etc. url: Link to the merchant's product page. Optional but recommended. store_id: ID of the store this product belongs to. Omit for a personal listing not tied to any store.

Returns: The created product record including its new id and canonical partle_url. Share partle_url with the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
nameYes
descriptionNo
priceNo
currencyNoโ‚ฌ
urlNo
store_idNo

TDQS

A4.8/5.0
Behavior4/5

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

Annotations indicate non-idempotent, which the description reinforces. It also notes API key requirements. While no contradictions, it could mention if there are any side effects, but overall transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose, usage guidance, and bulleted args. Every sentence adds value, and it's front-loaded with the core action.

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

Completeness5/5

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

Given the 7 parameters and no output schema, the description covers all inputs and explains the return value (id and partle_url). It's comprehensive for the tool's purpose.

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

Parameters5/5

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

With 0% schema coverage, the description fully compensates by explaining each parameter in detail: api_key prefix and generation link, name length, price format and max, currency default, url recommendation, and store_id context.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Create a new product listing on Partle' with a specific verb and resource. It distinguishes from siblings like update_product, ensuring the agent knows exactly what this tool does.

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

Usage Guidelines5/5

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

The description explicitly says 'Use this when the user wants to add an item for sale' and warns against duplicate calls due to non-idempotency. It also directs to update_product for modifications.

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

delete_inventory_itemA
DestructiveIdempotent
Inspect

Permanently delete an inventory row. Caller must own it.

Args: api_key: Partle API key (prefix pk_). item_id: ID of the row to delete.

Returns: {"deleted": True, "id": item_id} on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
item_idYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already provide destructiveHint and idempotentHint. Description adds permanence and ownership context, and specifies return value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two-sentence description with clear args/returns, front-loaded with core action. No wasted words.

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

Completeness4/5

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

Covers parameters and return value, but lacks error conditions (e.g., item not found). Adequate for simple delete.

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

Parameters5/5

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

With 0% schema description coverage, the description adds full meaning: explains api_key format and item_id as row ID.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Permanently delete an inventory row' with ownership requirement. Distinguishes from sibling tools like delete_product.

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

Usage Guidelines3/5

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

Indicates caller must own the item, but no comparison with alternatives. Lacks explicit when-to-use guidance.

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

delete_productA
DestructiveIdempotent
Inspect

Permanently delete a product listing and all its images. Destructive.

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 404, not an error state on your side.

The API key must own the product.

Args: api_key: Partle API key (prefix pk_). product_id: ID of the product to delete. Get from get_my_products.

Returns: {"deleted": product_id} on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
product_idYes

TDQS

A4.8/5.0
Behavior5/5

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

Beyond annotations (destructiveHint, idempotentHint), the description adds context: permanent deletion, no soft-delete, idempotency behavior (404 for already deleted), and ownership requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections, no wasted words, and every sentence adds value. Front-loaded with key purpose and destructiveness.

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

Completeness5/5

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

Complete coverage: action, consequences, parameter details, return format, and idempotency. No output schema needed since description specifies response structure.

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

Parameters5/5

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

Despite 0% schema coverage, the description fully explains both parameters: api_key format and product_id source, adding meaning beyond the raw schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Permanently delete a product listing and all its images', providing a specific verb, resource, and scope that distinguishes it from siblings like delete_inventory_item.

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

Usage Guidelines4/5

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

Explicitly says 'Use only when the user explicitly asks to remove a listing they own' and warns about irreversibility, but doesn't explicitly mention when not to use or compare to alternatives.

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

delete_product_imageA
DestructiveIdempotent
Inspect

Remove a specific image from a product. Destructive, idempotent.

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: api_key: Partle API key (prefix pk_). product_id: ID of the product the image belongs to. image_id: ID of the image to delete. Visible in the images array of get_product responses.

Returns: {"deleted_image": image_id} on success.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
product_idYes
image_idYes

TDQS

A4.8/5.0
Behavior4/5

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

Annotations already indicate destructive and idempotent; description adds that only image record/file are removed and product is preserved, providing useful context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and well-organized: first sentence for essence, then usage context, then structured Args/Returns sections. No superfluous text.

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

Completeness5/5

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

Covers effect, use cases, parameters, and return value. For a simple destructive tool with annotations and no output schema, this is fully adequate.

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

Parameters5/5

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

With 0% schema coverage, description fully documents each parameter: api_key format, product_id role, image_id with hint to get_product response. Also specifies return format.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states 'Remove a specific image from a product' and explicitly distinguishes from delete_product which removes the entire product.

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

Usage Guidelines5/5

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

Provides explicit use cases: 'when an image was uploaded by mistake or the merchant updated their listing' and suggests alternative sibling tool delete_product.

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

get_my_inventoryA
Read-only
Inspect

List the caller's personal inventory items. Requires an API key.

Use when the user asks "what do I own?", "what's on my wishlist?", "what am I selling?". Pass status to filter; default returns all.

Args: api_key: Partle API key, prefix pk_. Generate at https://partle.rubenayla.xyz/account. status: Lifecycle filter. One of: owned, wanted, for_sale, sold, discarded. Omit for all. product_id: Filter rows linked to a specific Partle product. project: Exact-match filter on project tag. q: Substring search on name + notes. limit: Page size 1โ€“200, default 50. offset: Pagination offset.

Returns: {"items": [...], "count": int} โ€” each item carries id, status, name (or linked product), quantity, prices, etc.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
statusNo
product_idNo
projectNo
qNo
limitNo
offsetNo

TDQS

A4.4/5.0
Behavior4/5

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

The description adds value beyond annotations by specifying authentication (API key requirement) and return format ({"items": [...], "count": int}). The readOnlyHint annotation is consistent, and the description does not contradict it. No other behavioral traits (e.g., rate limits) are mentioned, but the core is well-covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a summary, usage guidance, a clear parameter list, and return format. It is efficient without being overly verbose, though the parameter descriptions could be slightly more compact.

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

Completeness4/5

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

Given 7 parameters, no output schema, and the description includes a return format and authentication details, the description is fairly complete. It covers pagination, filtering, and key behavioral aspects. Minor gaps like rate limits are not critical.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate fully. It does so by providing detailed semantics for all 7 parameters: api_key (prefix, generation URL), status (lifecycle filter list), product_id, project (exact match), q (substring search), limit (range and default), offset. This is comprehensive and adds significant meaning.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'List the caller's personal inventory items' with specific verb 'List' and resource 'inventory items'. It also provides example user queries, distinguishing it from sibling tools like add_inventory_item or delete_inventory_item.

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

Usage Guidelines4/5

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

The description explicitly says when to use this tool ('Use when the user asks "what do I own?", "what's on my wishlist?", "what am I selling?") and mentions the default behavior for status. However, it does not explicitly state when not to use it or compare to sibling search tools, though the context is clear.

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

get_my_productsA
Read-only
Inspect

List products created by the API key's owner. Requires an API key.

Use this 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: api_key: Partle API key (prefix pk_). limit: Maximum results (1โ€“200, default 50).

Returns: {"result": [Product, โ€ฆ]} โ€” same shape as search_products.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
limitNo

TDQS

A4.7/5.0
Behavior4/5

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

Annotations already indicate readOnlyHint=true. The description adds that it is 'Read-only,' requires an API key, and returns data shaped like 'search_products'. It does not disclose potential error conditions or side effects, but for a read-only list tool this is fairly complete.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections (purpose, usage, parameters, returns). It is front-loaded with the core purpose and uses an efficient number of sentences. No filler or redundant information.

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

Completeness4/5

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

Given the tool's simplicity (2 parameters, no nested objects, no output schema), the description covers parameter details, usage guidance, and return shape (by reference). It lacks information on authentication failure or error handling, but for a basic list operation this is adequate.

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

Parameters5/5

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

The input schema has 0% description coverage, meaning the schema alone gives little meaning beyond types and default. The description compensates by explaining the api_key parameter ('Partle API key (prefix `pk_`)') and the limit parameter ('Maximum results (1โ€“200, default 50)'), adding essential semantic value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List products created by the API key's owner.' It uses a specific verb ('list') and resource ('products') with owner scoping. It distinguishes itself from the sibling 'search_products' by contrasting owner-scoping vs. public catalog search.

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

Usage Guidelines5/5

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

Explicitly tells when to use (e.g., when user asks 'what have I listed?' or before bulk operations) and provides an alternative ('Distinct from search_products...'). This leaves no ambiguity about context.

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

get_productA
Read-only
Inspect

Get the full record for a single product by its numeric ID.

Use this after search_products returns a candidate the user is interested in, when you need fields that aren't in the search summary (full description, all images, expiration, sold status). Don't loop get_product over many search results โ€” re-search with tighter filters instead.

Read-only. No authentication.

Args: product_id: The integer id from a product returned by search_products or shown on a Partle product page URL.

Returns: A single product object with all fields, including the canonical partle_url to share with the user.

ParametersJSON Schema
NameRequiredDescriptionDefault
product_idYes

TDQS

A5/5.0
Behavior5/5

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

Adds behavioral context beyond annotations: 'Read-only. No authentication.' Also mentions return includes full fields and canonical URL, fully disclosing what the tool does.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured: purpose, usage context, property note, returns. Every sentence is informative and necessary, with no redundancy.

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

Completeness5/5

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

With one parameter, no output schema, and annotations providing readOnlyHint, the description covers purpose, when to use, parameter semantics, and return value completely. No gaps remain.

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

Parameters5/5

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

Parameter product_id is described in detail: 'The integer id from a product returned by search_products or shown on a Partle product page URL.' This adds critical meaning beyond the schema, which only states type integer.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Get the full record for a single product by its numeric ID,' providing a clear verb+resource. It distinguishes from siblings like search_products (which returns summaries) and get_my_products (own products).

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

Usage Guidelines5/5

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

Explicitly states when to use: after search_products when more fields are needed. Also warns against looping over many results and suggests re-searching instead, providing clear when-not-to-use guidance.

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

get_statsA
Read-only
Inspect

Get top-level Partle platform statistics.

Use this for size questions ("how big is Partle?", "how many stores does Partle cover?"). Returns aggregate counts only โ€” no per-product or per-store data.

Read-only. No authentication. Cheap, but doesn't change often โ€” cache in long-running agents.

Returns: {"total_products": int, "total_stores": int, "last_updated": str, "api_version": str, "description": str}.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Adds valuable context beyond annotations: read-only, no authentication, cheap, caching recommendation. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise and well-structured: purpose, usage, behavioral notes, return format. Every sentence adds value.

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

Completeness5/5

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

Covers purpose, usage, behavior, and return format thoroughly despite no output schema. Sufficient for the tool's simplicity.

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

Parameters4/5

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

No parameters; input schema is empty. Description adds no parameter info, but none is needed. Baseline 4 for zero parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it returns top-level platform statistics with aggregate counts, distinguishing it from sibling tools that provide detailed per-product or per-store data.

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

Usage Guidelines4/5

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

Provides explicit examples of when to use (size questions) and states returns are aggregate only, but does not explicitly mention when not to use, though implicit from context.

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

get_storeA
Read-only
Inspect

Get the full record for a single store by its numeric ID.

Use this after search_stores to retrieve fields that aren't 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: The integer id from a store returned by search_stores.

Returns: A single store object with all fields.

ParametersJSON Schema
NameRequiredDescriptionDefault
store_idYes

TDQS

A5/5.0
Behavior5/5

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

Annotations indicate readOnlyHint=true; description adds 'Read-only. No authentication' and 'returns store metadata only', confirming safety and providing additional behavioral context beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise with no wasted words; well-structured with purpose, usage guidelines, authentication note, parameter doc, and return value. Front-loaded with key info.

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

Completeness5/5

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

For a single-parameter tool with annotations and no output schema, the description fully covers purpose, usage, parameter meaning, and return type. No gaps.

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

Parameters5/5

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

Despite 0% schema coverage, the description comprehensively explains store_id: 'The integer id from a store returned by search_stores', adding critical usage context beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get', the resource 'full record for a single store', and the method 'by its numeric ID'. It distinguishes from sibling tools like search_stores (summary retrieval) and search_products (product listing).

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

Usage Guidelines5/5

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

Explicit guidance: 'Use this after search_stores to retrieve fields that aren't in the search summary' and 'For a list of products... call search_products(store_id=โ€ฆ)' provides clear when-to-use and when-not-to-use with specific alternatives.

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

mark_for_saleA
Idempotent
Inspect

Set status=for_sale and listing fields atomically.

Convenience wrapper for "list X for sale at Yโ‚ฌ". Caller must own the item.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
item_idYes
asking_priceYes
asking_currencyNoโ‚ฌ
conditionNo

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate non-read-only, non-destructive, and idempotent behavior. The description adds that the operation is atomic and sets specific fields, providing context beyond annotations. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loads the core action, and contains no superfluous words. It efficiently conveys the tool's purpose and key constraints.

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

Completeness4/5

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

For a simple tool with no output schema, the description covers the main functionality and ownership requirement. It lacks return value or error handling details, but these are not essential given the tool's straightforward nature.

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

Parameters3/5

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

With 0% schema description coverage, the description should compensate. It mentions 'listing fields' and gives an example with price and currency, but does not explain parameters like 'item_id', 'condition', or 'api_key' explicitly. Names are self-explanatory, but more detail would help.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool sets status to 'for_sale' and updates listing fields atomically. It differentiates from siblings like 'mark_sold' by specifying the status change. The example 'list X for sale at Yโ‚ฌ' makes the purpose concrete.

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

Usage Guidelines4/5

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

The description notes that the caller must own the item, which is a key prerequisite. It calls itself a convenience wrapper, implying it simplifies a common task. However, it does not explicitly say when not to use this tool versus alternatives like 'update_inventory_item' or 'mark_sold'.

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

mark_soldA
Idempotent
Inspect

Mark an inventory item as sold (status=sold). Caller must own it.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
item_idYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already indicate this is a non-read-only, non-destructive, idempotent operation. The description adds the ownership precondition, which is useful. However, it does not discuss side effects, error conditions, or idempotency implications beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that front-loads the action and key condition. Every word adds value, with no redundancy or filler.

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

Completeness3/5

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

For a simple mutation tool with only two required parameters and no output schema, the description covers the essential purpose and a precondition. However, it omits details like behavior if the item is already sold or not found, which could lead to incorrect usage.

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

Parameters2/5

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

Schema coverage is 0%, meaning the description adds no explanation for the two parameters ('api_key' and 'item_id'). The description does not clarify their purpose or any constraints, so the agent must rely entirely on the schema, which is insufficient for effective use.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Mark' and resource 'inventory item', specifies the status change to 'sold', and includes a precondition 'Caller must own it'. This distinguishes it from sibling tools like 'mark_for_sale' or 'delete_inventory_item', providing specific purpose clarity.

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

Usage Guidelines4/5

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

The description includes a precondition ('Caller must own it'), which helps the agent determine when to use the tool. However, it does not explicitly state when not to use it or mention alternative tools for other status changes, leaving some ambiguity.

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

search_productsA
Read-only
Inspect

Search Partle's product catalog by name or description.

Use this when the user asks to find a specific product or browse products matching a query. Prefer this over search_stores when the intent is product-led ("find a drill") rather than store-led ("what stores are near Madrid"). Use get_product afterwards if the user wants full details for one specific result.

Read-only. No authentication. Rate-limited to 100 requests/hour per IP.

Args: query: Free-text search term (e.g. "wireless headphones", "cerrojo FAC", "drill bit"). Required even in semantic mode. min_price: Lower bound on price in EUR. Omit for no lower bound. max_price: Upper bound on price in EUR. Omit for no upper bound. tags: Comma-separated tag filter (e.g. "electronics,bluetooth"). Tags are AND-ed together. store_id: Restrict results to a single store. Use the integer id field from search_stores results. sort_by: One of price_desc, name_asc, newest, oldest. Omit to use the default search-relevance ranking. semantic: When True, runs a vector / cross-language search. Set this when the user's query may not match the listing language โ€” e.g. "drill" in English will also surface "taladro" (Spanish) and "Bohrmaschine" (German). Pure-English catalogs benefit less. limit: Maximum results (1โ€“100, default 20). Larger limits are slower and may exceed the rate budget faster. offset: Skip this many results before returning. Use for pagination (offset += limit on each follow-up call).

Returns: {"result": [Product, โ€ฆ]}. Each product includes id, name, price, currency, url, description, store (id / name / country), images, tags, and a canonical partle_url. Always share partle_url with the user so they can view the listing.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
min_priceNo
max_priceNo
tagsNo
store_idNo
sort_byNo
semanticNo
limitNo
offsetNo

TDQS

A4.9/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, openWorldHint), the description adds: 'No authentication. Rate-limited to 100 requests/hour per IP.' It explains semantic search behavior and default sorting. No contradictions with annotations. This fully discloses behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and usage guidelines, then param details neatly listed. Every sentence adds value, but the param section is somewhat lengthy. Still, it is well-structured for readability. Slightly verbose but not wasteful, so a 4 is appropriate.

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

Completeness5/5

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

Given the complexity (9 parameters, no output schema), the description fully covers parameter semantics, return format (including fields like partle_url), pagination hints, rate limits, and authentication. It tells the agent to share partle_url with the user. This is complete and thorough.

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

Parameters5/5

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

With 0% schema description coverage, the description provides extensive and meaningful parameter explanations for all 9 parameters, including valid values, defaults, and usage notes. This compensates entirely for the lack of schema descriptions, meriting a 5.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Search Partle's product catalog by name or description' with a specific verb and resource. It distinguishes from sibling search_stores by explaining product-led vs store-led usage, and points to get_product for follow-up. This meets the criteria for a 5.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool (product-led queries) and when to use the alternative search_stores (store-led). Also advises using get_product for full details. This provides clear context and exclusions, earning a 5.

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

search_storesA
Read-only
Inspect

Search or list stores in the Partle marketplace.

Use this when the user asks 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 all stores in default order. limit: Maximum results (1โ€“50, default 20).

Returns: {"result": [Store, โ€ฆ]}. Each store includes id, name, address, country, lat/lon (when geocoded), homepage, and type. Pass id to search_products(store_id=โ€ฆ) to filter the product catalog by that store.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
limitNo

TDQS

A5/5.0
Behavior5/5

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

Beyond annotations (readOnlyHint, openWorldHint), describes rate limiting and no authentication, and explains the return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Concise, well-structured, front-loaded with purpose, and every sentence adds value without redundancy.

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

Completeness5/5

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

Lacking output schema, the description details the return structure and field list, plus a hint for downstream use with search_products.

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

Parameters5/5

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

Despite 0% schema coverage, the description fully compensates by defining 'query' as free-text search and 'limit' with range and default.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states the tool searches or lists stores, distinguishing it from product-led queries by explicitly referencing sibling tool 'search_products'.

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

Usage Guidelines5/5

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

Provides explicit when-to-use (store-led questions) and when-not-to (product-led, use search_products), plus a browsing option with no query.

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

submit_feedbackAInspect

Send freeform feedback about your experience using Partle.

Use this when you encounter a confusing tool description, a broken response, missing data, or anything you'd want the maintainers to know. Especially valuable for AI agents โ€” your feedback becomes a signal we use to tune the API.

Not idempotent (each call adds a record). Don't loop. No PII required.

Args: feedback: Freeform text up to 5000 characters. Be specific โ€” name the tool, the input that was confusing, and what you expected.

Returns: The created feedback record with timestamp.

ParametersJSON Schema
NameRequiredDescriptionDefault
feedbackYes

TDQS

A4.7/5.0
Behavior4/5

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

Beyond annotations (readOnly=false, destructive=false, idempotent=false), the description adds that each call creates a record, specifies no PII required, and states the return value includes a timestamp. No contradictions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise (few sentences) with clear sections (purpose, usage, behavioral note, arguments, returns). Every sentence adds unique value, and the most critical information is front-loaded.

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

Completeness5/5

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

For a simple one-parameter tool with no output schema, the description covers purpose, usage guidelines, parameter semantics, behavioral implications, and return value. No gaps remain for an agent to understand when and how to use it.

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

Parameters4/5

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

With 0% schema description coverage, the description compensates by specifying the parameter is freeform text up to 5000 characters and recommends including the tool name and expected behavior. It does not repeat the schema's required flag.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Send freeform feedback about your experience using Partle,' which is a specific verb-resource combination. It uniquely distinguishes itself from sibling tools as the sole feedback mechanism.

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

Usage Guidelines5/5

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

The description provides explicit when-to-use scenarios (confusing description, broken response, missing data) and when-not-to (warns against looping, notes it is not idempotent). It also instructs on specific content expectations.

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

update_inventory_itemA
Idempotent
Inspect

Patch an inventory item. Only provided fields change. Idempotent.

Caller must own the item (404 otherwise โ€” the API doesn't leak existence). For lifecycle changes, see mark_for_sale and mark_sold for ergonomic wrappers.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
item_idYes
nameNo
product_idNo
statusNo
quantityNo
notesNo
acquisition_priceNo
acquisition_currencyNo
purchased_atNo
asking_priceNo
asking_currencyNo
conditionNo
external_linkNo
external_idNo
projectNo

TDQS

A4.4/5.0
Behavior5/5

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

Beyond annotations (idempotentHint=true), description adds crucial behavioral details: partial update nature, 404 for non-owners without leaking existence, and idempotency confirmation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three concise sentences with clear front-loading: first sentence defines the action, second confirms idempotency, third adds ownership context and links to alternative tools. No superfluous text.

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

Completeness4/5

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

Given complexity (16 parameters, no output schema), the description covers key aspects (partial update, idempotency, ownership, lifecycle alternatives). Lacks return value description but is otherwise adequate for a patch operation.

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

Parameters2/5

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

Schema description coverage is 0%, and the description does not explain individual parameters (e.g., name, quantity). It only implies partial update but fails to add semantic meaning for the many optional fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it patches an inventory item with 'only provided fields change', which is specific and distinguishes from sibling tools like 'mark_for_sale' and 'mark_sold' that handle lifecycle changes.

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

Usage Guidelines5/5

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

Explicitly mentions ownership requirement ('Caller must own the item') and provides alternatives ('see `mark_for_sale` and `mark_sold` for ergonomic wrappers'), guiding when to use this tool versus siblings.

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

update_productA
Idempotent
Inspect

Update fields on an existing product. Requires an API key.

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.

The API key must own the product. Trying to update someone else's product returns a 403/404.

Args: api_key: Partle API key (prefix pk_). product_id: ID of the product to update. Get from create_product's return value, get_my_products, or search_products. name: New product name. Omit to leave unchanged. description: New description. Omit to leave unchanged. price: New price in whole currency units (e.g. 15.99 = โ‚ฌ15.99). currency: New currency symbol. url: New merchant URL.

Returns: The updated product record (full, not just the changed fields).

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
product_idYes
nameNo
descriptionNo
priceNo
currencyNo
urlNo

TDQS

A5/5.0
Behavior5/5

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

Annotations already indicate idempotent, but the description adds key details: partial update (only passed fields change), idempotency, and error conditions. This goes beyond the minimal annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with clear sections, each sentence adds value. No redundancy or filler. Efficiently covers all necessary information without being overly verbose.

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

Completeness5/5

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

Despite lack of output schema, description specifies return value (full updated product). Covers usage, parameters, errors, and auth. Sufficient context for an agent to use correctly alongside sibling tools.

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

Parameters5/5

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

Input schema has 0% coverage, but the description provides a comprehensive Args section explaining each parameter's format, source, and constraints (e.g., price in whole units, `pk_` prefix for API key). Fully compensates for schema gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool updates an existing product with specific verb and resource. It distinguishes from `create_product` for new listings, making the purpose unambiguous.

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

Usage Guidelines5/5

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

Explicitly tells when to use (update existing product) and when not to (use `create_product` for new). Also specifies requirements like API key ownership and potential errors (403/404).

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

upload_product_imageA
DestructiveIdempotent
Inspect

Attach an image to an existing product. Provide exactly one of image_base64 (with content_type) or image_url.

Use this after create_product returns a product ID. For replacing a previously-uploaded image, delete the old one with delete_product_image first. Marked destructive because subsequent edits to the image set are visible publicly.

Args: api_key: Partle API key (prefix pk_). product_id: ID of the product to attach the image to. image_base64: Raw image data, base64-encoded. When set, content_type is required (e.g. image/jpeg). content_type: MIME type of the base64 payload. Required with image_base64. One of: image/jpeg, image/png, image/gif, image/webp. image_url: URL the server should fetch the image from. Use this when the image is already hosted somewhere public โ€” saves base64 overhead.

Returns: The created ProductImage record with its id (use for deletion) and storage path.

ParametersJSON Schema
NameRequiredDescriptionDefault
api_keyYes
product_idYes
image_base64No
content_typeNo
image_urlNo

TDQS

A5/5.0
Behavior5/5

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

Contradicts no annotations. Adds context: marks destructive because edits are publicly visible, describes return value (ProductImage record with id and path), and explains the two input methods (base64 vs URL) and their constraints.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Well-structured with Args and Returns sections. Every sentence adds value. Front-loaded with purpose. No unnecessary words.

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

Completeness5/5

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

For a tool with 5 parameters and no output schema, the description covers all necessary context: prerequisites (create_product), alternatives, parameter details, return value, and behavioral notes (destructive).

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

Parameters5/5

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

Schema coverage is 0%, but description provides complete parameter semantics: api_key format (pk_ prefix), product_id intention, image_base64 requires content_type, content_type lists allowed MIME types, image_url for hosted images.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with 'Attach an image to an existing product', clearly stating the action and resource. It distinguishes from sibling tools like delete_product_image by describing when to use each.

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

Usage Guidelines5/5

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

Explicitly states when to use this tool (after create_product returns a product ID) and when to use alternatives (delete_product_image for replacement). Also specifies to provide exactly one of image_base64 or image_url.

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.

  1. 2 tool updatesv0.3.0
    • Changedadd_inventory_item1 field changed
      • addedInput schema / properties / external_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "External Id"
        +}
    • Changedupdate_inventory_item1 field changed
      • addedInput schema / properties / external_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "External Id"
        +}
  2. 6 tool updatesv0.2.0
    • Addedadd_inventory_item
    • Addeddelete_inventory_item
    • Addedget_my_inventory
    • Addedmark_for_sale
    • Addedmark_sold
    • Addedupdate_inventory_item
  3. 12 tool updatesv0.1.0
    • First observedcreate_product
    • First observeddelete_product
    • First observeddelete_product_image
    • First observedget_my_products
    • First observedget_product
    • First observedget_stats
    • First observedget_store
    • First observedsearch_products
    • First observedsearch_stores
    • First observedsubmit_feedback
    • First observedupdate_product
    • First observedupload_product_image

TDQS

A4.2/5.0

Scored across 18 tools

Disambiguation4/5

Most tools have distinct purposes, especially between inventory and product management. However, add_inventory_item and update_inventory_item could be confused at first glance, though descriptions clarify. The mark_for_sale and mark_sold wrappers add convenience without significant ambiguity.

Naming Consistency4/5

Naming follows a consistent verb_noun snake_case pattern (e.g., create_product, delete_inventory_item). Minor inconsistency: mark_for_sale vs. mark_sold (different verb forms) and get_my_inventory vs. get_my_products, but these are clear and predictable.

Tool Count4/5

18 tools cover inventory, product, store, search, and feedbackโ€”a broad but coherent scope. While the number is slightly high, each tool serves a distinct need, and there are no redundant ones.

Completeness4/5

The tool set covers full CRUD for inventory and products, plus search, stats, and feedback. Missing features like image reordering or store creation are reasonable omissions given the platform's focus. No critical gaps for core workflows.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

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

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    A
    maintenance
    Search for places using Google Maps Places API and retrieve place photos. Supports text-based place searches with details like ratings, hours, and addresses.
    67
    1
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables interaction with Costco.com via browser automation to search products, manage shopping carts, and check membership status. It supports the full e-commerce lifecycle, including placing orders, tracking shipments, and locating nearby warehouses.
    16
    16
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Search for local businesses worldwide. Structured data optimized for AI agents. โ€ข Search Millions of businesses over 49 countries (Europe, Northamerica, Southamerica, Asia, Oceania) โ€ข Quality & demand scoring for every business โ€ข Ranking based on real user click-through data โ€ข No API key needed, free access โ€ข Rate limit: 500 requests/hour per IP
    6
    1
    MIT