Partle
Partle connects AI assistants to a local marketplace with 130K+ products across ~16K stores. Capabilities span public search, authenticated listing management, personal inventory tracking, and feedback submission.
๐ Product & Store Search (No Auth)
Search products by name, price range, tags, store, or cross-language semantic search (e.g., "drill" finds "taladro")
Get full product details by ID
Search stores by name or address; get full store details by ID
View platform-wide stats (total products, stores, last updated)
๐ Listing Management (Requires API Key / OAuth)
Create new product listings (name, description, price, currency, URL, store)
Update existing listings (partial updates supported)
Delete listings permanently (including images)
Upload images via base64 or public URL; delete specific images
List all your own created products
๐ฆ Personal Inventory (Requires API Key)
View inventory filtered by status (
owned,wanted,for_sale,sold,discarded), project tag, or keywordAdd items with details: quantity, condition, acquisition/asking price, purchase date, notes, external links
Update or permanently delete inventory items
Convenience actions: mark item for sale (sets price + status atomically) or sold
๐ฌ Feedback
Submit freeform feedback about your integration experience
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
Remote (recommended โ zero setup)
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-mcpOr with uvx (no install):
uvx partle-mcpOr with Docker:
docker run --rm -i ghcr.io/rubenayla/partle-mcpThe 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 the catalog by name, price range, tags, store. Supports cross-language semantic search. |
| Full record for one product by ID. |
| Search/list stores by name or address. |
| Full record for one store by ID. |
| Platform-wide totals. |
| Browse public buy requests at |
Write (authenticated)
Two ways to authenticate, in preference order:
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.API key (fallback) โ pass an
api_keyparameter 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 |
| Add a new listing. Set |
| Edit a listing you own. |
| Remove a listing you own. |
| Attach an image (base64 or URL). |
| Remove an image from a product. |
| 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 |
| List your inventory items. Filterable by status, project, free text. |
| Add a row in any lifecycle state. |
| Patch any field. |
| Permanently remove a row. |
| Convenience: flip an |
| Convenience: flip a |
Buy requests โ public demand-side posts on /wanted. Independent of personal inventory.
Tool | Purpose |
| Post a public buy request (name, description, quantity, optional |
Feedback
Tool | Purpose |
| 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 productsGET /v1/public/stores?q=Madrid&limit=10โ search storesGET /v1/public/wanted?q=bolt&limit=10โ list open public buy requestsGET /v1/public/statsโ platform totalsPOST /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_urlto view the listing.
More examples in the setup guide.
License
Apache-2.0 โ see LICENSE.
Available Tools
18 toolsadd_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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| name | No | ||
| product_id | No | ||
| status | No | owned | |
| quantity | No | ||
| notes | No | ||
| acquisition_price | No | ||
| acquisition_currency | No | ||
| purchased_at | No | ||
| asking_price | No | ||
| asking_currency | No | ||
| condition | No | ||
| external_link | No | ||
| external_id | No | ||
| project | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| name | Yes | ||
| description | No | ||
| price | No | ||
| currency | No | โฌ | |
| url | No | ||
| store_id | No |
TDQS
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.
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.
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.
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.
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.
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_itemADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| item_id | Yes |
TDQS
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.
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.
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.
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.
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.
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_productADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| product_id | Yes |
TDQS
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.
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.
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.
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.
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.
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_imageADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| product_id | Yes | ||
| image_id | Yes |
TDQS
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.
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.
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.
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.
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.
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_inventoryARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| status | No | ||
| product_id | No | ||
| project | No | ||
| q | No | ||
| limit | No | ||
| offset | No |
TDQS
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.
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.
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.
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.
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.
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_productsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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_productARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| product_id | Yes |
TDQS
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.
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.
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.
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.
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.
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_statsARead-onlyInspect
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}.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
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.
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.
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.
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.
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.
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_storeARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| store_id | Yes |
TDQS
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.
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.
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.
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.
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.
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_saleAIdempotentInspect
Set status=for_sale and listing fields atomically.
Convenience wrapper for "list X for sale at Yโฌ". Caller must own the item.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| item_id | Yes | ||
| asking_price | Yes | ||
| asking_currency | No | โฌ | |
| condition | No |
TDQS
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.
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.
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.
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.
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.
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_soldAIdempotentInspect
Mark an inventory item as sold (status=sold). Caller must own it.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| item_id | Yes |
TDQS
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.
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.
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.
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.
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.
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_productsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| min_price | No | ||
| max_price | No | ||
| tags | No | ||
| store_id | No | ||
| sort_by | No | ||
| semantic | No | ||
| limit | No | ||
| offset | No |
TDQS
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.
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.
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.
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.
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.
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_storesARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| limit | No |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| feedback | Yes |
TDQS
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.
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.
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.
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.
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.
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_itemAIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| item_id | Yes | ||
| name | No | ||
| product_id | No | ||
| status | No | ||
| quantity | No | ||
| notes | No | ||
| acquisition_price | No | ||
| acquisition_currency | No | ||
| purchased_at | No | ||
| asking_price | No | ||
| asking_currency | No | ||
| condition | No | ||
| external_link | No | ||
| external_id | No | ||
| project | No |
TDQS
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.
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.
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.
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.
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.
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_productAIdempotentInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| product_id | Yes | ||
| name | No | ||
| description | No | ||
| price | No | ||
| currency | No | ||
| url | No |
TDQS
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.
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.
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.
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.
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.
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_imageADestructiveIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | ||
| product_id | Yes | ||
| image_base64 | No | ||
| content_type | No | ||
| image_url | No |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.3.0- Changed
add_inventory_item1 field changed- added
Input schema / properties / external_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "External Id" +}
- Changed
update_inventory_item1 field changed- added
Input schema / properties / external_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "External Id" +}
6 tool updates
v0.2.0- Added
add_inventory_item - Added
delete_inventory_item - Added
get_my_inventory - Added
mark_for_sale - Added
mark_sold - Added
update_inventory_item
12 tool updates
v0.1.0- First observed
create_product - First observed
delete_product - First observed
delete_product_image - First observed
get_my_products - First observed
get_product - First observed
get_stats - First observed
get_store - First observed
search_products - First observed
search_stores - First observed
submit_feedback - First observed
update_product - First observed
upload_product_image
TDQS
Scored across 18 tools
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 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.
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.
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
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
Search 100+ US retailers, 260M+ products with real-time pricing, stock, and price history. Documentation - https://www.lemmebuyit.com/developer Homepage - https://www.lemmebuyit.com
Search ~8.5M products from 2,500+ Central European e-shops. Semantic, keyword, GTIN lookup.
Read-only MCP server for Muovi, Argentina's trust-first local services marketplace (6 tools).
Discover, inspect and run 63,000+ agent tools from one balance. Pay per call, no subscriptions.
Related MCP Servers
- AlicenseAqualityDmaintenanceProvides access to Google Maps API functionality including places search, geocoding, directions, distance matrix, elevation data, and static map generation through the MCP interface.8101MIT
- AlicenseNot gradedqualityAmaintenanceSearch for places using Google Maps Places API and retrieve place photos. Supports text-based place searches with details like ratings, hours, and addresses.671MIT
- AlicenseAqualityDmaintenanceEnables 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.1616MIT
- AlicenseAqualityDmaintenanceSearch 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 IP61MIT