For AI agents and integrators
7 toolsMCP and REST, no key · catalogue, quotes, order requests
Connect your assistant to the agrodiler.com catalogue: it finds a bearing by designation, GOST number or size, works out the total with delivery and sends an order request for the buyer. No key, no sign-up. The API takes no money: the buyer confirms the request with a code from an email, and then a manager gets in touch.
Connect— one address, no key
https://www.agrodiler.com/mcpNo session, no login: add the address as a remote MCP server in your client settings. Protocol revision 2026-07-28; clients on 2025 revisions work too. The server is listed in the official MCP registry as com.agrodiler/catalog.
https://www.agrodiler.com/api/agent/v1/The same tools: POST with a JSON body, JSON in reply. openapi.yaml describes every field, error and limit.
https://www.agrodiler.com/llms.txtSite sections, page address patterns and markets in a few lines, so the assistant does not have to crawl the whole site.
Search for bearing 6205 2RS · EU market (lang en), three itemscurllines scroll sideways
curl -X POST https://www.agrodiler.com/mcp \
-H 'content-type: application/json' \
-H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
"params":{"name":"search_products",
"arguments":{"query":"6205 2RS","lang":"en","limit":3}}}' curl -X POST https://www.agrodiler.com/api/agent/v1/search-products \
-H 'content-type: application/json' \
-d '{"query":"6205 2RS","lang":"en","limit":3}' Reply · 14/11/2026, shortenedover MCP: inside result.structuredContentresponse body
{
"query": "6205 2RS",
"match": "all_words",
"total": 28,
"items": [
{
"handle": "ct-6205-2rs",
"section": "bearing",
"title": "Bearing CT 6205 2RS",
"brand": "CT",
"in_stock": true,
"stock_qty": 15762,
"price_hint": { "amount": 0.82, "currency": "eur" },
"url": "https://www.agrodiler.com/bearing/ct-6205-2rs/"
},
{ "handle": "ct-6205-2rs-c3", … "price_hint": { "amount": 0.86, … } },
{ "handle": "nte-6205-2rs", … "price_hint": { "amount": 0.98, … } }
],
"note": "price_hint is the catalog price in EUR at site build time including VAT at the default display country rate …"
} - total: 28 is how many items matched. The reply holds the first 3, as asked in limit (up to 20).
- Pass handle on to get_product, quote, cart_link and place_order.
- price_hint is the catalogue price when the site was built. The total we stand by comes from quote.
What the API does— REST uses the same names with hyphens
search_productsThe same search as on the site: part number, bearing designation, GOST number (180205 becomes 6205-2RS), size 25x52x15, brand or name.REST: search-productsget_productOne item: number, brand, size, stock, minimum order quantity and price. No price means the manager quotes it.REST: get-productquoteThe total by the site cart rules: prices, minimum order, delivery; for the EU, delivery and VAT on separate lines. Creates no order.REST: quotecart_linkA link to the site with the cart filled in and the order form open, for a buyer who prefers to finish there.REST: cart-linkplace_orderSends the request once the buyer has agreed to the items and the total. The buyer gets a 6-digit code by email.REST: place-orderconfirm_orderConfirms the request with the code the buyer gives you. Never guess it: 8 attempts per request.REST: confirm-orderresend_codeA new code when the email did not arrive or the code expired (it lasts 30 minutes). At most 2 times per request.REST: resend-codeHow an order goes through— it is a request, not a purchase: the API takes no payment
search_productsAgentFinds the items and takes their handle.
quoteAgentWorks out the total. The buyer sees it and agrees; total_minor from the reply goes forward.
place_orderAgentSends the items, the buyer’s name and email, expected_total_minor and a new idempotency_key. Gets order_number and order_secret.
- Emailed codeBuyer
Receives a 6-digit code valid for 30 minutes. Tells it to the agent or confirms with the link in the email.
confirm_orderAgentSends the code with order_number and order_secret. The request goes to a manager.
- ManagerAgrodiler
Checks stock and price and contacts the buyer. A contract and an invoice follow.
- If the total changed after quote, you get the error price_changed and the new total in new_total. Show it to the buyer and send the request with it.
- Connection dropped during place_order: retry with the same idempotency_key. You get the same request back, never a second one.
- order_secret is only for confirm_order and resend_code. Keep it out of the chat and out of public logs.
- A large request comes back with needs_phone_check: the manager calls the buyer before confirming.
- Left unconfirmed for 48 hours, a request has the buyer’s contact details anonymised and its code cancelled; the request record itself stays.
- If the buyer wants to finish alone, cart_link gives a link to the site with the cart and order form filled in.
Markets, languages, currencies— chosen with the lang parameter
EU, prices in euros, delivery to EU countries. get_product returns the price excluding VAT; quote adds the VAT of the delivery country.
ship_to.country is required, as a country code: DE, PL, FR. Minimum order €49.00 excluding VAT.
Ukraine, prices in hryvnias including VAT, delivery by Nova Poshta. Do not send ship_to. Without lang, uk is used.
Minimum order UAH 1,000.
Fields ending in _minor are in cents or kopiyky: 3300 means 33.00. price_hint comes in hryvnias or euros. Product names follow lang; API service messages are in English.
Limits— per network address; for IPv6, per /64 network
In total, across all tools.
place_order.
confirm_order.
Per mailbox: code emails, first and resent. Further caps per hour: 5 emails per address, 10 per subnet (IPv4 /24, IPv6 /48).
Per request. A new code does not reset them.
resend_code per request; the previous code stops working.
Over a limit you get HTTP 429 with a Retry-After header: the number of seconds to wait.
If something goes wrong— Mon–Fri 8:00–17:00, Madrid time (CET/CEST)
Send us the request, the full reply and the time you sent it. The error code is in the error field, the explanation in message. Email: info@agrodiler.com