MercadoLibre MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MercadoLibre MCP ServerShow me my active product listings in Mexico."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MercadoLibre MCP Server
πΊπΈ English | πͺπΈ EspaΓ±ol
A Model Context Protocol (MCP) server that wraps the MercadoLibre REST API β giving AI assistants the ability to search, create, update, delete, and manage product listings, orders, shipping, questions, advertising campaigns, and more across 18 countries in Latin America.
Why?
MercadoLibre already publishes an official MCP server, but it only exposes documentation search tools β it cannot interact with the API on your behalf. This server fills that gap by wrapping 130+ REST API endpoints as MCP tools that an AI assistant can call directly.
Credentials and tokens are loaded from environment variables never passed through the LLM prompt, so your API keys stay secure.
Related MCP server: cobroya
Features
Listings (CRUD) β search, get, create, update, close, relist items
Multi-country β 18 sites: Argentina (MLA), Uruguay (MLU), Brazil (MLB), Mexico (MLM), Chile (MLC), and more
Orders β search and view seller orders
Shipping β get shipping methods, track shipments
Categories β browse, get details, predict the best category for a product
Questions β list and answer buyer questions
Advertising β list Mercado Ads campaigns
Metrics β get item visits and analytics
User profiles β get seller/buyer reputation
Sources & Documentation
This server is built against the official MercadoLibre API:
Resource | URL |
MercadoLibre Developers Portal | |
API Docs (ES) | |
API Docs (EN) | |
Authentication & OAuth | https://developers.mercadolibre.com.uy/es_ar/autenticacion-y-autorizacion |
Items & Search | https://developers.mercadolibre.com.uy/es_ar/items-y-busquedas |
Orders | https://developers.mercadolibre.com.uy/es_ar/gestiona-ventas |
Shipping | |
Mercado Ads | https://developers.mercadolibre.com.uy/es_ar/introduccion-a-mercado-ads |
Rate Limits | https://developers.mercadolibre.com.uy/es_ar/rate-limit-error-429 |
Prerequisites
Python 3.11+ with uv installed
A MercadoLible seller account (to use authenticated operations)
A MercadoLibre Application (free β created in the developer portal)
Installation
# Clone
git clone https://github.com/dedero1985/mercadolibre-mcp.git
cd mercadolibre-mcp
# Install dependencies
uv sync
# Verify everything works
uv run python -c "from mercadolibre_mcp.main import mcp; print('MCP server ready')"Credential Setup
1. Create a MercadoLibre Application
Click "Crear aplicaciΓ³n" (Create Application)
Fill in:
Application Name: e.g.,
mercadolibre-mcpDescription: Short description of your use
Redirect URI: Use the exact, static URL registered for your application. Do not assume the CLI's
http://localhost:8080/callbackdefault is registered or accepted for your app.
After creation, you'll get:
App ID(client_id) β a numeric IDSecret Key(client_secret) β a long alphanumeric string
Under "Permisos funcionales" (Functional Permissions), check at minimum:
readβ for reading items, orders, etc.writeβ for creating/updating listingsoffline_accessβ so the token keeps working after you leave
Save the changes.
2. Configure Environment Variables
Copy the example file:
umask 077
cp .env.example .env
chmod 600 .envEdit .env with your credentials:
MERCADOLIBRE_CLIENT_ID=1234567890
MERCADOLIBRE_CLIENT_SECRET=your_secret_key_here
MERCADOLIBRE_REDIRECT_URI=https://your-registered-callback.example/callback
MERCADOLIBRE_SITE_ID=MLAVariable | Required | Description |
| β Yes | Your App ID from the developer portal |
| β Yes | Your Secret Key |
| β Yes | Must match what you registered in the app |
| β No | Default/fallback site used when a tool call doesn't specify one (e.g. MLA, MLU). Not a restriction β see multi-country setup below. |
| β No |
|
The Python modules do not automatically load .env. From the repository directory, use uv run --env-file .env ... as shown below, or supply the variables through a secure process environment. For client launch commands, add --env-file and the absolute path to .env after run unless the client already inherits the variables. Never commit .env, paste credentials into chat, or put secrets in command-line arguments.
See the official OAuth documentation: authorize with the account owner/administrator, not a collaborator; the redirect URI must match exactly. Keep PKCE required in your MercadoLibre app. This CLI always uses PKCE with S256 and validates OAuth state; no additional flag or dependency is needed. Refresh tokens are single-use and tied to the issuing App ID, so do not share them with an old integration or reuse tokens from a different app.
3. Run OAuth Setup β once per country
One app, multiple tokens. The MERCADOLIBRE_CLIENT_ID / MERCADOLIBRE_CLIENT_SECRET above are shared across all 18 countries β you register the application only once, and the same .env values work everywhere. However, the access token produced by the OAuth flow belongs to one specific MercadoLibre seller account, and seller accounts are normally registered under a single home country. If you sell in both Argentina and Uruguay with two separate accounts, you must authorize each one separately β same app credentials, two different tokens.
Run the setup once per country you operate in:
# Authorize your Argentina account
uv run --env-file .env python -m mercadolibre_mcp.auth --site-id MLA
# Authorize your Uruguay account
uv run --env-file .env python -m mercadolibre_mcp.auth --site-id MLU
# ...repeat for any other country/account you haveWhen a new authorization is needed, setup will:
Generate a fresh random PKCE verifier and
state, then open your browser with theS256challenge to authorize that country's accountAsk you to paste the redirected URL into a hidden-input terminal prompt; validate its target,
state, and authorization code before exchanging the code with the verifierSave an access token to
~/.mercadolibre_mcp/profiles/<SITE_ID>.json(e.g.MLA.json,MLU.json)
Run OAuth in your own interactive terminal. Paste the redirected URL only into that terminal, never into an AI conversation. The CLI opens a browser; it does not start a callback HTTP server.
The verifier and state exist only for that setup attempt: do not close the CLI before pasting the callback. Missing, duplicate, or blank code/state, mismatched state, OAuth error replies, fragments, and unexpected redirect targets are rejected without exchanging the code. The callback must preserve any registered static query parameters; use an ASCII HTTP(S) redirect URI without fragments or reserved OAuth response parameters (code, state, error, error_description, error_uri). A registered URI with an empty path and its browser-normalized / form are treated as the same target; the exact registered string is still sent to the token endpoint.
If the browser cannot launch or hidden input is unavailable, setup stops rather than printing the authorization URL or echoing the callback. Configure a working browser in your local desktop session and rerun from a private terminal. After any rejected callback, rerun setup and use the new callback, not one from an earlier attempt. Existing token refresh and noninteractive MCP calls do not open a browser.
Tokens are saved locally on your machine, one file per country, and are never sent to the LLM. The MCP server uses them server-side to authenticate API calls, refreshing each one automatically as it expires.
Check which countries are already authorized at any time:
uv run python -m mercadolibre_mcp.auth --listOr just ask your AI assistant β "Which MercadoLibre countries am I authenticated in?" β which uses the built-in list_authenticated_sites tool.
Every tool accepts an optional site_id argument that picks which cached profile executes the call (e.g. "list my listings in Uruguay" β site_id="MLU"); if omitted, it falls back to MERCADOLIBRE_SITE_ID (or MLA).
Multiple seller accounts in the same country
A site has one default account plus any number of aliased accounts. Profiles are stored as:
~/.mercadolibre_mcp/profiles/MLA.json # default account for MLA
~/.mercadolibre_mcp/profiles/MLA__business.json # aliased account for MLAAuthorize an additional account for a country you already use by adding --account <alias>:
uv run --env-file .env python -m mercadolibre_mcp.auth --site-id MLA --account businessThen pass the same alias on tool calls (site_id="MLA", account="business"). Omit account to use the site's default account; MERCADOLIBRE_ACCOUNT sets a fallback alias for the server. Aliases are limited to 1-32 characters from A-Z, a-z, 0-9, _, - and are validated so they can never escape the profiles directory.
Writes (create_item, update_item, delete_item, relist_item) must use the alias that owns the listing. After authorizing a new alias, restart OpenCode so the in-memory client cache is rebuilt.
List what is authorized, including aliases:
uv run --env-file .env python -m mercadolibre_mcp.auth --listAdvanced / not used here: MercadoLibre also offers an official "Global Selling" cross-border program where a single approved merchant account can operate across Mexico, Brazil, Chile, Colombia, and Argentina with one token. It requires special onboarding with MercadoLibre and does not officially cover Uruguay, so it isn't used by this server β the standard per-country flow above works for any seller without special enrollment.
Client Configuration
Claude Desktop / Claude Code
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or ~/.config/Claude/claude_desktop_config.json (Linux):
{
"mcpServers": {
"mercadolibre": {
"command": "uv",
"args": [
"--directory",
"/ABSOLUTE/PATH/TO/mercadolibre-mcp",
"run",
"python",
"-m",
"mercadolibre_mcp.main"
]
}
}
}Important: Do not put your credentials in the JSON config. They go in the .env file or in your shell profile:
# Add to ~/.zshrc or ~/.bashrc
export MERCADOLIBRE_CLIENT_ID="your_app_id"
export MERCADOLIBRE_CLIENT_SECRET="your_secret"
export MERCADOLIBRE_SITE_ID="MLA"Then in your MCP config, reference the env:
{
"mcpServers": {
"mercadolibre": {
"command": "uv",
"args": ["--directory", "/path/to/mercadolibre-mcp", "run", "python", "-m", "mercadolibre_mcp.main"],
"env": {
"MERCADOLIBRE_CLIENT_ID": "${MERCADOLIBRE_CLIENT_ID}",
"MERCADOLIBRE_CLIENT_SECRET": "${MERCADOLIBRE_CLIENT_SECRET}",
"MERCADOLIBRE_SITE_ID": "${MERCADOLIBRE_SITE_ID:-MLA}"
}
}
}
}Cursor
Add to ~/.cursor/mcp_config.json:
{
"mcpServers": {
"mercadolibre": {
"command": "uv",
"args": ["--directory", "/ABSOLUTE/PATH/TO/mercadolibre-mcp", "run", "python", "-m", "mercadolibre_mcp.main"]
}
}
}Windsurf
Add to ~/.windsurf/mcp_config.json (same format as Cursor).
OpenCode
Merge the following into ~/.config/opencode/opencode.json (or opencode.jsonc) for global use, or a project-root opencode.json / opencode.jsonc for that project. Preserve unrelated settings. OpenCode uses the top-level mcp object, not .opencode/mcp_servers.json or mcpServers.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mercadolibre": {
"type": "local",
"command": [
"/ABSOLUTE/PATH/TO/uv",
"--directory", "/ABSOLUTE/PATH/TO/mercadolibre-mcp",
"run", "--env-file", "/ABSOLUTE/PATH/TO/mercadolibre-mcp/.env",
"python", "-m", "mercadolibre_mcp.main"
],
"enabled": true,
"timeout": 30000
}
}
}Replace all paths with real absolute paths; command -v uv shows the executable location. command is one array containing the executable and all arguments; there is no separate args field. The local process communicates over stdio even though OpenCode's configuration type is local. Keep credentials in the protected .env file, not this JSON. Set MERCADOLIBRE_SITE_ID=MLU there for a Uruguay default; use site_id="MLA" for Argentina. One server supports both profiles.
Quit and restart OpenCode after saving, then run opencode mcp list to verify the connection. A connected MCP server does not mean either seller account is authorized: complete the per-country OAuth steps above and check list_authenticated_sites. opencode mcp auth handles remote MCP OAuth and is not the seller authorization flow for this local server.
Reference: OpenCode MCP configuration and configuration schema.
Muster (if you use the Muster aggregator)
Create /Users/external-bruno.ponce/.config/muster/mcpservers/mercadolibre.yaml:
apiVersion: muster.giantswarm.io/v1alpha1
kind: MCPServer
metadata:
name: mercadolibre
namespace: default
spec:
autoStart: true
command: /Users/external-bruno.ponce/.local/bin/uv
args:
- --directory
- /ABSOLUTE/PATH/TO/mercadolibre-mcp
- run
- python
- -m
- mercadolibre_mcp.main
env:
PATH: /opt/homebrew/bin:/usr/local/bin:/usr/bin:/bin
MERCADOLIBRE_CLIENT_ID: your_app_id
MERCADOLIBRE_CLIENT_SECRET: your_secret
MERCADOLIBRE_SITE_ID: MLA
timeout: 120
type: stdioUsage Examples
Once the server is connected, you can ask your AI assistant to do things like:
Product Search
"Find iPhone 15 Pro Max in Argentina, under 2000 USD" "Search for zapatillas running in Uruguay, priced between 1000 and 5000 UYU" "Show me laptops available in Brazil"
Listings Management
"Create a new listing: iPhone 15, 128GB, new, 1500 ARS, category MLA1051, quantity 5" "Update the price of item MLA1234567890 to 2000" "Close listing MLB987654321" "Show all my active listings" "Relist my finished ad for item MLA1234567890"
Categories
"What categories are available in Uruguay?" "Tell me about category MLU1000" "What category should I use for 'Zapatillas Nike Running Hombre'?"
Orders & Shipping
"Show me my recent orders" "What's the status of order 1234567890?" "Track shipment 987654321" "What shipping options are available for item MLA123 to zip code 11000?"
Questions
"Show me unanswered questions for my items" "Answer question 98765 with 'Yes, we have stock'"
Advertising & Analytics
"Show my active Mercado Ads campaigns" "How many visits does item MLA1234567890 have?" "Show me last week's visits for my top item"
Multi-Country Status
"Which MercadoLibre countries am I authenticated in?" "Am I set up for Uruguay yet?" "Show me my connected MercadoLibre accounts"
Available Tools
Tool | Description |
| Search products by keyword, category, price, condition |
| Full listing details (pictures, shipping, seller) |
| Create a new listing |
| Update price, stock, title, description |
| Close/finish a listing |
| All your listings, filterable by status |
| Relist a closed item |
| Top-level categories for a site |
| Category details and attributes |
| Best category match for a product title |
| Seller orders, filterable by status |
| Full order details |
| Available shipping options for an item+zip |
| Track a shipment |
| Questions on your items |
| Answer a buyer question |
| User profile and seller reputation |
| Mercado Ads campaigns |
| Visit statistics for a listing |
| List which countries have a cached, ready-to-use token β and which don't |
All tools accept an optional site_id parameter selecting which authenticated country profile executes the call (e.g. MLA, MLU). Public read operations (search, categories) can be served by any authenticated profile; writes (update_item, delete_item, create_item, etc.) must use the profile that actually owns the account/listing.
Security
PKCE S256 and OAuth state: Every interactive authorization uses a fresh 256-bit verifier and state. The callback's target and state are checked before the verifier is sent to MercadoLibre's token endpoint. Keep PKCE enabled in the app settings.
Private authorization input: Callback paste is hidden; the CLI does not print the authorization URL, callback, verifier, or state. OAuth rejection messages do not echo provider-controlled error text.
Credentials never reach the LLM: API keys and secrets are loaded from environment variables or
.envfiles and used only in the MCP server processOAuth tokens cached locally, one file per country: Each site's access/refresh token lives in its own file under
~/.mercadolibre_mcp/profiles/<SITE_ID>.jsonwithchmod 600permissions and atomic writes (a crash mid-write never corrupts a profile)No interactive hang: If a tool is called for a country that hasn't been authorized yet, the server returns a clear error telling you which
auth --site-idcommand to run β it never blocks waiting for browser input during a live tool callAuto-refresh: Expired tokens are refreshed automatically server-side, per profile
No credential logging: Client credentials are never written to logs
Rate limited: The server respects MercadoLibre's API rate limits (1500 req/min general, 100 req/min for orders) with automatic retry on 429 responses
Project Structure
mercadolibre-mcp/
βββ README.md # This file
βββ README.es.md # Spanish version
βββ pyproject.toml # Python project config
βββ .env.example # Environment template
βββ .gitignore
βββ src/
β βββ mercadolibre_mcp/
β βββ __init__.py
β βββ main.py # FastMCP server + tool definitions
β βββ client.py # HTTP client (auth injection, rate limiting)
β βββ auth.py # OAuth2 token management
βββ .venv/ # Virtual environment (uv)Runtime data (not part of the repo, created on first use):
~/.mercadolibre_mcp/
βββ profiles/
βββ MLA.json # Argentina token (chmod 600)
βββ MLU.json # Uruguay token (chmod 600)
βββ ... # one file per authorized countryTesting
Run the offline OAuth security and regression tests from the repository directory:
uv run python -m unittest discover -s tests -vExpected result: the command exits successfully and the unittest summary ends with OK. Any failure must be investigated before using or publishing the change.
Tests cover the RFC 7636 S256 vector, fresh randomness, both Argentina and Uruguay authorization domains, a mocked code exchange, callback/state rejection (including trailing-slash normalization and value-free mismatch diagnostics), hidden input, redacted errors, browser-launcher output suppression, account-alias validation and per-alias profile isolation, and cached/refresh/noninteractive behavior. They do not access real credentials, profiles, browsers, or the MercadoLibre API; the launcher regression uses a fake browser subprocess.
To check the installed MCP separately:
Quit and restart OpenCode after configuring the server.
Run
opencode mcp list; expectmercadolibreto be connected. This checks startup, not seller authorization.Ask OpenCode to call
list_authenticated_sitesthrough MercadoLibre MCP. If using a raw MCP client, its arguments are{"input": {}}. An empty profile list is normal before OAuth.Complete the local OAuth setup above for
MLUandMLA, keeping PKCE required, then repeat the status check. Browser consent and the exact registered redirect URI are required; never paste callbacks into chat.Optionally request a read-only account operation for each country, such as listing your items. This verifies API access; do not create, edit, or close listings just to test installation.
Passing offline tests or seeing a connected server does not prove that live account authorization is complete.
License
MIT
Disclaimer
This project is not affiliated with, endorsed by, or sponsored by MercadoLibre S.R.L. It is an independent integration built on top of MercadoLibre's public REST API. Use at your own risk and in compliance with MercadoLibre's Terms & Conditions.
Available Tools
20 toolsanswer_questionAnswer QuestionC
Answer a pending question about an item.
Usage examples:
"Answer question 98765 with 'Yes, we have stock'"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It names the action but does not disclose effects such as marking the question answered, notifying the buyer, or whether the action is reversible. No authentication or rate-limit context is provided.
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 short, front-loaded, and the usage example is useful and concrete. It is efficient, though slightly informal in structure.
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?
The output schema existsheb, and the schema documents parameters and defaults. However, the description lacks usage context, exclusions, and behavioral effect details. It is minimally viable but with clear 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?
The description's example illustrates question_id and answer_text, but it adds little beyond the schema's own parameter descriptions. Given the low schema-description-coverage signal, the description should have compensated more fully, including for account and site_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?
The description clearly states the tool's action and resource: 'Answer a pending question about an item.' It is distinguishable from sibling tools like list_questions, though it does not explicitly contrast with any sibling.
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?
No guidance is given about when to use this tool versus list_questions or other alternatives. The usage example shows syntax but does not explain prerequisites, such as verifying the question is actually pending or whether the answer will be publicly posted.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_itemCreate ItemA
Create a new product listing on MercadoLibre.
Requires OAuth2 write scope on the profile matching site_id β that
profile's authenticated account is the one that will own the new listing.
Use predict_category/list_categories first to find valid category IDs.
Usage examples:
"Create a listing for an iPhone 15 at 1500 ARS in category MLA1051" β site_id="MLA"
"Publish a new running shoes product in Uruguay for 2500 UYU" β site_id="MLU"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and it discloses the key external side effect: the authenticated account matching site_id will own the new listing and OAuth2 write scope is required. The examples use 'publish,' implying a live marketplace action. It doesn't discuss reversibility, fees, or review processes, but the core write behavior and auth requirement are 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 compact and front-loaded: a one-sentence action, a bolded auth caveat, a bolded prerequisite, and two concrete examples. Every line earns its place and there is no 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?
The description covers the essential invocation context: authentication scope, account ownership, category prerequisite, and site selection via examples. An output schema exists, so return-value documentation is not required. It could mention that the listing becomes publicly visible or the defaults for site_id/account, but those are either implied or available in the schema.
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 prose adds useful semantic guidance: category_id should come from predict_category/list_categories, and site_id is mapped to countries in the examples. However, it doesn't enumerate the required fields (title, category_id, price, available_quantity) or the 'input' wrapper, so parameter understanding depends heavily on the nested schema. Given the stated 0% schema coverage, this is only partial compensation.
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 opens with a clear verb-resource pair: 'Create a new product listing on MercadoLibre.' It adds platform context and the word 'new' helps separate it from update/relist siblings, though it doesn't explicitly name an alternative for modifying existing listings.
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?
It provides concrete usage conditions: OAuth2 write scope is required, and category IDs should be obtained from predict_category/list_categories first. The natural-language examples clarify when to use the tool with specific site_id, price, and category values. It doesn't explicitly state exclusions like 'use update_item for existing listings,' so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_itemDelete ItemA
Close/finish a MercadoLibre listing. Sets status to 'closed'. Items can be relisted later.
Important: site_id must match the country whose authenticated
profile actually OWNS this item, or the API will reject the write (403).
Usage examples:
"Remove listing MLA1234567890" β site_id="MLA"
"Finish my ad for MLU987654321" β site_id="MLU"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It reveals that the operation is a write that sets status to 'closed', that items can be relisted later, and that a mismatched site_id causes a 403 rejection. This gives the agent a solid safety and reversibility picture, though it does not enumerate every possible side effect.
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 compact and front-loaded: purpose, status effect, reversibility, critical caveat, and examples. Every sentence earns its place, and the important site_id warning is bolded for prominence.
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?
The description is sufficient for an agent to invoke the tool correctly: it explains the operation, the state change, reversibility, the ownership requirement, and provides usage examples. Since an output schema exists, return-value details are not needed. Minor omissions like behavior for already-closed items do not significantly hurt completeness.
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 top-level schema description coverage is 0%, but the child schema already documents item_id, site_id, and account. The description adds significant value by explaining the critical ownership constraint for site_id and by giving real examples that map item ID prefixes to the correct site_id values.
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 action with a specific verb and resource: 'Close/finish a MercadoLibre listing.' It further clarifies the misleading tool name by noting the item is set to 'closed' and can be relisted later, distinguishing it from permanent deletion and from the sibling relist_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 gives clear context for when to use the tool: to close or finish a listing. It also provides critical operational guidance about site_id matching the owning authenticated profile, with concrete examples mapping item ID prefixes to site IDs. However, it does not explicitly name alternative tools or state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_categoryGet CategoryA
Get detailed information about a specific category, including its children and attributes.
Usage examples:
"Tell me about category MLA1051"
"What are the attributes for category MLU1000?"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states that the tool returns detailed category information including children and attributes, which implies a read-only lookup. It does not describe edge cases, site/account defaulting behavior, or failure modes, though the schema partially covers account and site selection.
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 compact and front-loaded: the main purpose appears in the first sentence, followed by two concrete usage examples. There is no filler or redundant restatement of the tool name.
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 lookup tool, the description plus the rich input schema and output schema gives an agent enough to invoke it correctly. It states what information is returned and how a category is referenced. The only notable omission is explicit routing guidance toward sibling tools for category browsing or prediction.
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 visible nested schema already documents account, site_id, and category_id with examples and defaults, so the description does not need to repeat them. The description's usage examples add practical context by showing real category IDs like MLA1051 and MLU1000. While the stated coverage signal is 0%, the actual schema text provides the needed parameter guidance.
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 identifies the tool as retrieving detailed information about a single category, including children and attributes. The phrase 'specific category' helps distinguish it from sibling tools like list_categories, though it does not explicitly name alternatives.
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 usage examples ('Tell me about category MLA1051') show the intended interaction pattern and imply the main use case: querying by a known category ID. However, the description does not explicitly say when not to use this tool or direct the agent to list_categories or predict_category for browsing or inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_itemGet ItemA
Get full details of a MercadoLibre listing by its item ID.
site_id selects which authenticated profile executes the call β since
item details are public catalog data, any authenticated country profile
can read an item regardless of which country it was published in.
Usage examples:
"Get details for MLA1234567890"
"Show me the listing information for MLB987654321"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It clarifies that the operation is a read (public catalog data) and that it uses the authenticated profile, which is useful for understanding side effects. However, it does not mention rate limits, error behavior, or whether the item might be inactive/deleted, which are minor gaps given the read-only nature is implied.
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 and front-loaded: the first sentence states the core purpose. It adds useful context about site_id and includes two usage examples, all in a compact format. No wasted words, every sentence contributes 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?
Given the tool's simplicity (single required parameter) and the presence of an output schema (which likely describes return format), the description provides sufficient context for an agent to call it correctly. It does not explain the output structure, but that is in the output schema, not the description's job. It covers essential usage nuances (site_id behavior) and examples, making it complete enough.
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 schema has 0% description coverage, meaning the description must compensate for explaining parameters. It explicitly explains the significance of site_id (selects profile, public data) and provides item_id format examples. The account parameter is not described in the description, but the schema has a detailed description for it, so the description's added value is mainly on site_id, which it handles well.
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 retrieves full details of a MercadoLibre listing by item ID, using a specific verb and resource. It distinguishes itself from siblings like search_items (which finds items) and update_item (which modifies), making its 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?
The description explains that any authenticated site profile can read any item, clarifying when site_id is relevant. It also provides usage examples that illustrate natural-language queries. However, it does not explicitly state when NOT to use this tool versus alternatives like search_items, though the purpose clarity helps fill that gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_item_visitsGet Item VisitsA
Get visit statistics for a MercadoLibre listing.
Usage examples:
"How many views does MLA1234567890 have?"
"Show me last week's visits for item MLU987654321" β last_week=true
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses that the tool returns visit statistics and that last_week=true changes the time window to 7 days instead of 24h. However, it doesn't disclose the return format, whether the tool is read-only, or any rate-limit/auth behavior. The time-window behavior is useful but the description is thin on other 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 short and front-loaded with the core purpose, followed by two illustrative examples. Every sentence earns its place. The examples are slightly redundant with the schema's last_week description, but they add practical usage context without bloat.
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?
The tool has a nested input object, an output schema, and no annotations. The description explains the main use case and the last_week toggle, but it doesn't mention the account/site_id selection behavior or any prerequisites (e.g., authenticated accounts). Given the output schema exists, return values don't need explanation, but the description could be more complete about which account/site context applies.
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. The description's examples clarify the item_id parameter ('MLA1234567890') and the last_week parameter ('last week's visits' β last_week=true). However, it doesn't explain account or site_id semantics beyond what the schema already provides, and the schema descriptions are actually quite detailed. The description adds marginal value for the two main parameters but doesn't fully compensate for the 0% coverage signal.
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 states a specific verb and resource: 'Get visit statistics for a MercadoLibre listing.' This clearly identifies what the tool does. It doesn't explicitly distinguish it from siblings, but the sibling list contains no other visit-statistics tool, so the purpose is unambiguous enough.
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 two concrete usage examples that illustrate when to use the tool ('How many views does MLA1234567890 have?') and how to select the last_week option. It doesn't explicitly state when not to use it or name alternatives, but the examples give clear context for typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_orderGet OrderC
Get detailed information about a specific order.
Usage examples:
"Show me details for order 1234567890" β site_id="MLA" (or wherever the order lives)
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It conveys read-only intent by the word 'Get', but does not state side effects, authorization needs, error behavior, or that it does not mutate the order.
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 definition is short and front-loaded with its core purpose. The usage example is compact and useful, though the parenthetical 'or wherever the order lives' is vague and could be more explicit.
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 that an output schema exists and the operation is nominally a simple getter, the definition is minimally adequate. However, it lacks usage-context information, especially whether to use search_orders when the order ID is unknown, and it does not specify how the site_id should be resolved.
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 description only gives a loose example mapping an order ID to site_id="MLA", and does not explain required order_id semantics or the optional account parameter. With schema description coverage listed at 0%, the description does very little to help an agent understand the 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 states a specific operation: it gets detailed information about a single order. It is clearly different from listing or searching, but it does not explicitly differentiate itself from sibling tools like search_orders, so it lacks the explicit sibling contrast that would earn 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?
The description provides a usage example but no guidance about when to choose get_order over search_orders or other order-related tools. There is no when-to-use, when-not-to-use, prerequisites, or fallback guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shipmentGet ShipmentB
Get tracking information for a shipment.
Usage examples:
"Track shipment 987654321"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. 'Get' strongly implies a read-only operation, which is useful. However, it does not explicitly state non-mutation, authentication assumptions, or how the optional account/site_id selection behaves at runtime.
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 short, front-loaded, and free of filler. The usage example is slightly redundant with the first sentence but still compact and harmless.
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 lookup tool with an output schema and documented parameters, this is close to sufficient. The main gaps are the lack of usage guidance around alternatives and the minimal behavioral detail beyond 'get', which matters because no annotations are present.
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 description itself adds little parameter meaning beyond the example mapping 'shipment 987654321' to shipment_id. The input schema is actually descriptive for account, site_id, and shipment_id, so the agent still has the necessary semantics even though the tool description does not enrich them.
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 a specific action and resource: 'Get tracking information for a shipment.' This is not a tautology and distinguishes the tool from obviously different siblings like get_item or get_user. However, it does not explicitly differentiate it from closely related order or shipping-method tools.
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 usage example ('Track shipment 987654321') but provides no guidance about when to prefer this tool over alternatives, when not to use it, or what context makes it appropriate. No sibling alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_shipping_methodsGet Shipping MethodsA
Get available shipping methods for an item to a destination zip code.
Usage examples:
"What shipping options are available for item MLA123 to zip 11000?"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden, and 'Get available' does convey a non-mutating lookup. It does not mention account/site selection behavior, possible errors, or any additional constraints, but for a simple read-only tool this is not a serious omission.
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?
One functional sentence plus a single illustrative example; there is no filler, redundancy, or repeated schema information. The main purpose 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?
The description is adequate for a straightforward getter, and the output schema exists to define the return shape. It lacks explicit alternative routing (get_shipment vs get_shipping_methods) and account/site profile hints, leaving some context to be inferred.
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 two required parameters are semantically covered by 'item' and 'destination zip code', and the example maps them to realistic values (MLA123, 11000). The optional account and site_id fields are documented in the nested schema, so the description does not need to repeat them, though it adds no extra selection guidance for those profiles.
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 states a specific action ('Get'), a concrete resource ('available shipping methods'), and a clear scope ('for an item to a destination zip code'). This distinguishes it from siblings like get_shipment or get_item without needing to inspect their schemas.
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 usage example signals the intended query pattern ('What shipping options are available...?'), so an agent can infer when to use it. However, it gives no explicit when-not-to-use guidance or contrast with siblings such as get_shipment for tracking an existing shipment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_userGet UserA
Get public profile and seller reputation for a MercadoLibre user.
Leave user_id empty to get the authenticated user's own profile for site_id.
Usage examples:
"What's my MercadoLibre profile in Argentina?" β site_id="MLA"
"Show seller reputation for user 123456789"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It implies a read-only operation by saying 'get' and mentions 'authenticated user' and 'public profile', suggesting authentication requirements. Yet it does not explicitly state that it makes no modifications, what happens on missing authentication, or any rate limits. The description conveys the core behavior but leaves out some transparency that a robust agent would benefit from.
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 short paragraphs: one states the core purpose and the empty-user_id behavior, the other gives two on-target examples. Every sentence earns its place, no fluff, and the most important detail (the empty-user_id behavior) is front-loaded. This is exemplary conciseness.
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?
The output schema already documents the return structure, so the description does not need to duplicate that. The description covers the two primary modes (own profile vs. specific user) and provides clear examples. It could mention that 'account' is optional, but the schema already does, and the context is sufficiently complete for a get-unified read tool. Minor extra context like error handling would be nice, but not necessary given the schema and examples.
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 description significantly adds meaning to the user_id parameter by explaining that leaving it empty returns the authenticated user's profile, which is not obvious from the schema alone. The examples also clarify the site_id argument (e.g., 'MLA' for Argentina). The account parameter is not described, but the schema handles it. Given that the schema descriptions are already present, the description's added semantic value is meaningful.
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 opens with a specific verb and resource: 'Get public profile and seller reputation for a MercadoLibre user.' It unambiguously states what the tool does and is clearly distinct from the sibling tools, which all deal with items, orders, or similar domains. This fully clarifies purpose with no ambiguity.
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 two concrete usage examples that illustrate when to call the tool (e.g., fetching one's own profile vs. another user's reputation). It also explains the behavior of leaving user_id empty, which is a critical usage rule. However, it doesn't explicitly contrast with alternative tools, but the resource distinction is strong enough that an agent can infer when this tool applies.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ads_campaignsList Ads CampaignsA
List Mercado Ads campaigns for the authenticated seller in a given country.
Requires OAuth2. Mercado Ads must be enabled for the account.
Usage examples:
"Show my active advertising campaigns" β site_id="MLA"
"List my Mercado Ads campaigns in Uruguay" β site_id="MLU"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does disclose important prerequisites: OAuth2 is required and Mercado Ads must be enabled for the account. It also clarifies the data is limited to the authenticated seller's campaigns. It doesn't discuss pagination/limits or empty-result behavior, but the output schema covers return shape.
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 compact and front-loaded: purpose, prerequisites, then concrete examples. Every line contributes to correct selection/invocation, and the examples are scannable.
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?
The prerequisites, country/site context, and natural-language examples make the tool callable for common cases, and an output schema exists so return values don't need to be restated. The main gap is that account and limit are not covered in the description, but the examples cover the most frequent invocation patterns.
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, but it only demonstrates site_id and status through examples. There is no explanation of limit or account in the description, so an agent relying solely on this description would not fully understand those 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 opens with a clear verb and resource: 'List Mercado Ads campaigns for the authenticated seller in a given country.' This distinguishes it from sibling item/order/search tools by naming 'Mercado Ads campaigns' and country scoping. It doesn't explicitly name a sibling alternative, so it stops short of 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?
The usage examples imply when to use the tool ('Show my active advertising campaigns', 'List my Mercado Ads campaigns in Uruguay') and map to site_id/status. There is no explicit guidance on when not to use it or which sibling to prefer, so usage guidance is contextual but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_authenticated_sitesList Authenticated SitesA
List which MercadoLibre country profiles are authenticated and ready to use, and which of the 18 supported sites are NOT yet authenticated.
This does not create any client or make any API call β it only inspects locally cached OAuth profiles under ~/.mercadolibre_mcp/profiles/.
Usage examples:
"Which countries am I authenticated in?"
"Show me my connected MercadoLibre accounts"
"Am I set up for Uruguay yet?"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and meets it excellently: it explicitly states the tool does NOT create a client or make an API call, and that it only inspects locally cached OAuth profiles under a specific path (~/.mercadolibre_mcp/profiles/). This removes any ambiguity about side effects or network activity without any help from 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 first sentence states the core purpose immediately, the second adds the key no-side-effect qualifier, and the final usage examples earn their place by showing the agent when to invoke it. It is slightly longer than strictly necessary, but the quoted invocation triggers add practical value for an AI caller.
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?
Since an output schema exists, the description is not required to explain return values, and it covers what, where, and side-effect profile completely. Everything an agent needs to decide to call this tool correctly is present; only minor clarity on the required empty input envelope is absent.
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 schema has a single required 'input' parameter that is an empty object with no properties, so there is essentially no semantic meaning to add; the description's omission of parameter details is not harmful because there is nothing to document. The description does not explicitly tell the caller to pass an empty input object, but the schema makes that self-evident.
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 names a specific resource (MercadoLibre authenticated country profiles) and a precise scope: it reports which of the 18 supported sites ARE authenticated and which are NOT. This is a concrete verb+resource statement that clearly distinguishes it from all item/order/category siblings, which are all domain CRUD operations.
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 gives three concrete usage example queries that define the tool's triggers ('Which countries am I authenticated in?', 'Am I set up for Uruguay yet?'). It does not name excluded alternatives, but none of the 19 siblings concern authentication, so there is no real competing tool to route away from; the examples carry the guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_categoriesList CategoriesA
Get all top-level categories available on a MercadoLibre site.
Usage examples:
"What categories are available in Argentina?" β site_id="MLA"
"List categories for Uruguay" β site_id="MLU"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must disclose behavioral traits. It indicates the tool fetches categories for a site, implying a read-only operation, but does not explicitly state that it is safe or non-destructive. It does not disclose potential rate limits, authentication requirements, or what happens if the site_id is invalid. It also does not describe the structure of the response beyond the mention of 'top-level categories'. Given zero annotations, the description carries a moderate burden but does not meet it fully, hence a 3.
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, with a single sentence stating the purpose, followed by two bullet-point usage examples. It is front-loaded with the core function and then provides concrete mappings. The structure is efficient, but the usage examples could be considered redundant with the schema's parameter descriptions. Overall, it is well-sized and structured, earning a 4.
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?
The tool is relatively simple (listing categories) with an output schema available, so the description need not detail return values. However, it lacks guidance on error scenarios (e.g., unauthenticated sites, invalid site_id) and does not mention that the account parameter is optional or how authentication factors in. Given the context signals (only 1 param, output schema exists), the description is adequate but not complete for an agent to handle edge cases, so a 3 is fair.
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 parameter descriptions in the schema are present but only the descriptions in the JSON schema are used; however, the schema does include detailed descriptions for 'account' and 'site_id', which explains their purpose and defaults. The tool description's usage examples add meaning by linking site_id to specific countries (e.g., MLA=Argentina), which is not in the schema. This compensates slightly, but the description itself does not elaborate on parameters beyond the examples. Since the schema provides decent parameter documentation via its own descriptions, a baseline 3 is appropriate.
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 states the tool's purpose clearly: 'Get all top-level categories available on a MercadoLibre site'. It identifies a specific verb ('Get'), resource ('top-level categories'), and scope ('available on a MercadoLibre site'). It distinguishes from siblings like get_category (which fetches a single category) and predict_category (which predicts a category), though it does not explicitly name these alternative sibling tools. The usage examples provide concrete mappings from natural language to the site_id parameter, which aids selection.
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 implies usage context: it is for listing top-level categories, not for searching items or predicting categories. The examples ('What categories are available in Argentina?' β site_id=MLA) show when to use it, but there are no explicit exclusions or guidance on when not to use it versus alternatives. It relies on the context signals and sibling tool names to infer the boundary, which is reasonable but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_my_itemsList My ItemsA
List all items owned by the authenticated user for a given country profile.
Usage examples:
"Show all my active listings in Argentina" β site_id="MLA"
"List my paused items in Uruguay" β site_id="MLU"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It usefully discloses that results are limited to the authenticated user's items and selected country profile, but it does not describe pagination behavior, auth side effects, or any limitation beyond the schema. For a read-only list tool, this is adequate but not rich.
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 core purpose is front-loaded in a single sentence, and the usage examples are relevant and compact. It could be slightly tightened since the title already conveys 'List My Items', but there is no meaningful 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?
Given the rich nested input schema and the presence of an output schema, the description sufficiently explains the tool's scope. It does not explicitly cover when-not-to-use or sibling tool distinctions, but those are more of a usage-guideline gap than an invocation-completeness gap.
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 nested schema already documents limit, offset, status, account, and site_id with descriptionsyb. The description adds illustrative natural-language-to-parameter mappings, especially for site_id and status, which is helpful. However, the context signal reports 0% top-level schema description coverage, and the description does not compensate for all parameters, keeping this at baseline.
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 states a specific verb ('List'), a resource ('items'), and clear scoping ('owned by the authenticated user', 'given country profile'), so an agent can distinguish it from broader search tools. It does not explicitly name sibling tools to rule out alternatives, so it falls short of 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?
The ownership scope and usage examples imply when the tool is appropriate, but there is no explicit guidance such as 'use search_items for global search' or 'use get_item for a single item'. The examples clarify site_id and status mapping but do not contrast with alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_questionsList QuestionsC
List questions asked about items, optionally filtered by item or status.
Usage examples:
"Show me unanswered questions for my items" β site_id="MLA"
"List questions about item MLU1234567890"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the full burden of behavioral disclosure. It only says 'list' and 'optionally filtered' but does not mention pagination/limit behavior, account/site resolution, or what the response contains. Important operational traits are left undocumented.
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 short and front-loaded, with usable examples that add practical value without excessive verbosity. The phrasing is efficient, though the confusing 'unanswered' example keeps it from being excellent.
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 no annotations and one nested input object, the description is incomplete: it does not explain limit/pagination behavior, output shape, how to combine filters, or account/site selection beyond the schema's own field descriptions. An agent would still have to infer several important details before calling it reliably.
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 top-level `input` parameter has no description, and the description does not compensate for that gap. It mentions item and status but omits `limit`, `account`, defaults, and status value constraints; the 'unanswered questions' example maps to `site_id`, which is misleading instead of demonstrating the `status` filter.
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 opening sentence, 'List questions asked about items, optionally filtered by item or status,' clearly states the action, resource, and key options. It is easy to distinguish from item CRUD siblings, though it never explicitly names a sibling alternative, so it stops short of 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?
The usage examples provide situational context ('Show me unanswered questions for my items', 'List questions about item MLU...'), which implies when the tool is appropriate. However, there is no explicit when-to-use/when-not-to-use guidance or mention of alternatives like answer_question.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
predict_categoryPredict CategoryA
Predict the best matching MercadoLibre category for a given product title.
Usage examples:
"Which category should I use for 'iPhone 15 Pro Max 256GB'?" β site_id="MLA"
"Predict category for 'Zapatillas Nike Running Hombre'" β site_id="MLU"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It discloses the core behavior (predicting a category from a title) and shows site_id selection in examples. However, it doesn't disclose what the output looks like, whether it returns a confidence score, or any rate limits or auth requirements beyond what the schema implies.
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 compact and front-loaded with the core purpose, followed by two illustrative examples. Every sentence earns its place. The markdown formatting with bold 'Usage examples' is clear. Slightly more detail on output could be added, but the structure is efficient.
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?
The tool has a nested input object, an output schema, and no annotations. The description explains the primary use case and gives examples, but doesn't describe the output format or any caveats (e.g., what happens if no category matches). Given the output schema exists, the return value is partially covered, but the description could still mention confidence or fallback behavior.
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. The description explains the 'input' object's purpose via the title examples and shows how site_id is used in examples. However, it doesn't explain the 'account' parameter or the defaulting behavior of site_id/account, which the schema does document. The description adds some value through examples but doesn't fully compensate for the 0% coverage.
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 states a specific verb ('Predict') and resource ('best matching MercadoLibre category for a given product title'). It clearly distinguishes this from sibling tools like list_categories or get_category, which retrieve category data rather than predict a category from a title. The usage examples reinforce the purpose with concrete queries.
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 clear usage examples showing how to phrase queries and which site_id to use. It implies this tool is for category prediction from a title, which distinguishes it from list_categories/get_category. However, it doesn't explicitly state when not to use it or name alternative tools for category lookup.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
relist_itemRelist ItemB
Relist a previously closed item as a new listing.
Usage examples:
"Relist MLA1234567890" β site_id="MLA"
"Republish my finished ad with 10 units available" β site_id="MLU"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It only says it creates a new listing from a closed item, but it does not disclose side effects (e.g., what happens to the original item), permission requirements, error states, or that it is a mutation operation. This is a significant gap for a write tool.
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 short and front-loaded with the purpose sentence, followed by clearly structured usage examples. Each example earns its place by showing parameter mappings. No unnecessary prose.
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?
The tool has an output schema, so return details are not needed. However, for a mutation tool without annotations, it should explain prerequisites, side effects, or how account/site selection interact with the relisting process. The description only mentions 'previously closed item' but not what the new listing means for the old item ID, whether the old listing is deleted, or the need for valid country authorization, making it incomplete for a tool with nested object complexity.
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% at the parameter level, so the description must compensate. The examples illuminate how site_id may be derived (M,L,A vs M,L,U) and mention '10 units available' as a clue for quantity, but they do not cover the required item_id clearly (it's only implied by the prefix) nor the account param. The nested schema has descriptions for all fields, but the top-level 'input' object lacks a description, and the description itself adds only partial guidance.
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 states a clear verb ('relist') and resource ('a previously closed item') and explains it is now a new listing. This distinguishes it from create_item, update_item, and delete_item without tautology.
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 implies when to use the tool by referencing 'previously closed item', but does not explicitly compare with sibling tools or state when not to use them. The usage examples show how to map user expressions to parameters, but not when to select this tool over alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_itemsSearch ItemsA
Search for products on MercadoLibre across a site (public data β any authenticated profile can read it, regardless of which country it belongs to).
Usage examples:
"Find iPhone 15 in Argentina" β query="iPhone 15", site_id="MLA"
"Search for zapatillas running under 5000 pesos in Uruguay" β query="zapatillas running", price_max=5000, site_id="MLU"
"Find laptops in Brazil" β query="notebook", site_id="MLB"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden, and it meets it well by disclosing that this is a read-only operation on public data accessible to any authenticated profile across countries. It does not mention pagination behavior or rate limits, but the presence of an output schema covers return structure. This is solid disclosure given zero annotation support.
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?
One compact purpose sentence followed by three scannable examples. No filler, no repetition of schema content, and the most important semantic (scope + public data) is front-loaded. Each of the three examples earns its place by demonstrating a distinct filter scenario (basic, price-filtered, different site).
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?
Purpose and common usage patterns are well covered, and the output schema covers return shape. However, the description never flags that all parameters must be wrapped in a nested 'input' object β the examples show flat parameter names, which could lead an agent to pass them at top level. No guidance on combining filters or on the offset/limit pagination workflow is given beyond what the schema states.
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% for the counted top-level parameter, so the description must compensate β and it does, with three worked examples that show precisely how to populate query, site_id, and price_max from colloquial user requests. This adds practical meaning far beyond the schema's bare type definitions, teaching the agent to transform intent into parameter values.
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?
States a specific verb and resource ('Search for products on MercadoLibre across a site') and immediately clarifies scope ('public data... regardless of which country'). This clearly distinguishes it from siblings like list_my_items (own items), get_item (single item), and create_item (write operation). The three usage examples reinforce the exact purpose.
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 usage examples map natural-language user intents to concrete parameter values (query, site_id, price_max), which teaches an agent when and how to invoke this tool. However, it never explicitly excludes alternatives (e.g., no 'use get_item when you need a single product' or 'use list_my_items for seller's own items'), leaving sibling differentiation to inference from the purpose statement.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_ordersSearch OrdersA
Search orders for the authenticated seller in a given country.
Requires OAuth2 with read scope.
Usage examples:
"Show me my recent orders in Argentina" β site_id="MLA"
"List my paid orders in Uruguay" β site_id="MLU"
"Get orders that are pending shipment"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations are absent, so the description carries the full burden. It discloses the OAuth2 read scope requirement, which is useful, but it does not mention that this is a read-only operation, pagination behavior, response structure, error handling, or any side effects. For a search tool, these omissions leave behavioral expectations underspecified.
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 minimal and well-organized: a single-sentence purpose, an authentication note, and three concise usage examples. It front-loads the core action and avoids redundant prose. Every element earns its place.
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?
The tool has an output schema, so return values need no explanation. The description covers the core purpose and gives practical examples for site_id and status. While it lacks explicit guidance on account selection and pagination, the schema descriptions for those parameters fill the gaps. Overall, sufficient for a search tool given the structured schema.
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% per the signal, so the description must compensate. It adds value by showing how natural language maps to site_id (e.g., 'Argentina' β 'MLA') and status (via 'paid orders', 'pending shipment'), but it does not explain limit, offset, or account beyond what the schema already describes. The examples are partial compensation, resulting in a modest score.
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 action ('Search orders') and the target resource ('orders for the authenticated seller in a given country'). This distinguishes it from siblings like search_items (items) and get_order (single order), and the usage examples reinforce the scope by mapping natural language queries to site IDs.
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 examples imply when to use the tool (e.g., 'Show me my recent orders' suggests searching by criteria), but there is no explicit guidance on when to prefer this over get_order (specific order ID) or how to combine with account filtering. The OAuth scope requirement is a prerequisite, not usage routing. No exclusion conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_itemUpdate ItemA
Update an existing MercadoLibre listing. Only provided fields are changed.
Important: site_id must match the country whose authenticated
profile actually OWNS this item, or the API will reject the write (403).
Usage examples:
"Update the price of MLA1234567890 to 2000" β site_id="MLA"
"Change stock of item MLU987654321 to 50 units" β site_id="MLU"
| Name | Required | Description | Default |
|---|---|---|---|
| input | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and it discloses key behavior: only supplied fields are changed, and site_id must match the owning country profile or the write is rejected with 403. It does not cover every side effect, but the critical failure mode and patch semantics are explicitly stated.
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 compact, front-loaded with the operation, and uses a bolded warning plus two minimal examples. Every sentence contributes operational 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?
For a write operation with no annotations and a nested input object, the description addresses the most likely failure (site_id ownership) and partial-update behavior. Since an output schema exists, the lack of return-value detail is acceptable, though the description could mention item-not-found behavior.
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 description adds concrete usage meaning for site_id, price, and stock through examples and the ownership rule, but context indicates 0% schema description coverage. It does not compensate for all nested fields, leaving most field semantics to the schema's property descriptions.
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 states a specific action ('Update an existing MercadoLibre listing') and immediately clarifies partial-update semantics ('Only provided fields are changed'). This differentiates it from create_item, delete_item, and relist_item even without naming them.
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?
Using the word 'existing' establishes when the tool applies, and the two usage examples show concrete invocation patterns for price and stock updates. It does not explicitly list alternative tools or when-not-to conditions, but the context is clear enough for selection among the update/create/delete siblings.
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.
20 tool updates
v0.1.0- First observed
answer_question - First observed
create_item - First observed
delete_item - First observed
get_category - First observed
get_item - First observed
get_item_visits - First observed
get_order - First observed
get_shipment - First observed
get_shipping_methods - First observed
get_user - First observed
list_ads_campaigns - First observed
list_authenticated_sites - First observed
list_categories - First observed
list_my_items - First observed
list_questions - First observed
predict_category - First observed
relist_item - First observed
search_items - First observed
search_orders - First observed
update_item
TDQS
Scored across 20 tools
Each tool pairs a clear verb with a distinct resource (item, category, order, shipment, question, user, ads, visits, auth profiles), so there is no functional overlap between tools. Even similar-looking names like get_item_visits and get_item describe different data and purposes.
All tools follow a consistent snake_case verb_noun pattern, using singular nouns for single-object operations and plural nouns for list/search operations. The verbs are uniform and predictable across the entire set.
20 tools is on the higher end, but the breadth is justified by the many distinct MercadoLibre domains covered: listings, categories, orders, shipping, questions, ads, analytics, and auth. Each tool covers a distinct operation, so the set does not feel bloated or redundant.
Listing and category workflows are well covered, but order management is read-only: there is no update/cancel/ship order tool. Ads also only support listing campaigns, not creating or modifying them, which leaves notable lifecycle gaps for seller operations.
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
Mercado Libre keyword & competitor intelligence for AI agents across all 18 ML markets.
Connect your Mercado Pago account to AI via Brazil's Open Finance: balances, statements, cards, inve
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Mercado Livre (Latin America's largest marketplace) via the official API, seller profile and reputat
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables interaction with MercadoLibre's API for product search, reviews, descriptions, and seller reputation insights.43147MIT
- AlicenseAqualityDmaintenanceConnects AI agents to Mercado Pago, the leading payment platform in Latin America. Create payment links, search payments, get payment details, issue refunds, and retrieve merchant info.5513MIT
- AlicenseAqualityCmaintenanceConnects AI agents to MercadoLibre, the largest e-commerce marketplace in Latin America. Search products, get item details, browse categories, track trends, and convert currencies.68153MIT
- AlicenseCqualityDmaintenanceEnables AI to process payments, manage subscriptions, detect fraud, and generate analytics through Mercado Pago API.27MIT