t00my-mcp
Click on "Deploy 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., "@t00my-mcpsearch cordless drills under €100 in stock near Berlin"
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.
t00my-mcp 🔨
EN · DE
⚠️ Unofficial. This is an independent community project. It is not made, endorsed, sponsored or supported by toom Baumarkt GmbH or any company behind toom, and it has no access to any internal toom system. "toom" and "toom.de" are names of their respective owners and are used here only to say which website this tool works with. It talks to the same public web pages and endpoints a browser uses on toom.de, which toom may change or block at any time. See Disclaimer.
An MCP server (Python, FastMCP) that lets an AI assistant work with the toom.de DIY online shop: search articles (offers, filters, ratings), keep a basket per market, see which market really has an article in stock, search within a radius around a place, compare articles, check whether something fits into your car or doorway, and plan where to pick up what. It reads and prepares; it does not check out, pay or send inquiries for you.
Why "t00my"? A playful spelling of the name of the shop it talks to. It does not imply any affiliation.
What it does
Tool | What it does |
| Find a toom market ("Markt") by city, name, postal code or id and select it |
| Search for articles, optionally narrowed down: |
| Which filters toom offers for a search term (brand, cordless/corded, battery included, ...) with hit counts, to narrow a broad search down |
| A basket per market; pickup (reserve and collect) or delivery |
| Details of one article by number: brand, price, EAN, characteristics (dimensions, scope of delivery, ...), categories, images, manufacturer, plus stock in one or more markets |
| toom markets within a radius of a place (straight-line distance, nearest first) |
| Where within a radius can an article (or several) be picked up right now? Real stock per market, nearest first, with phone numbers |
| Open now?, opening hours, upcoming closed days (holidays), services (rental van, trailer, wood cutting, ...), where the pickup point is, phone |
| 2–6 articles side by side: price, dimensions in cm/kg, stock, and every characteristic with what differs first |
| Does an article fit into a space (car load area, doorway)? Honest: fits, does not fit or unclear when toom does not state a dimension. A side you leave out is unlimited (a door goes through a narrow opening edge-on), so give all three for a car |
| Pick up or delivery? Stock, lead time and the shipping cost actually charged side by side (toom's free-shipping limit is for parcels; bulky goods ship as freight and always pay). Uses a throw-away basket, yours is untouched |
| toom's own accessory and alternative suggestions: "Häufig dazu gekauft" (from purchases) and "Ähnliche Produkte" |
| Real stock per article in several markets, no basket needed |
| Write a market's session cookies to a local file (mode 0600) so you can look at that basket in your own browser: import it with a cookie manager extension (e.g. Cookie-Editor), then open toom.de/warenkorb. Asks for confirmation first: importing replaces the browser's toom.de cookies |
| For an article that is not in stock in a market ("Auf Anfrage bestellbar"): stock, product link, the market's phone number and a ready-made text for "Artikel anfragen" or a call. Sends nothing |
| Build a basket anew in another market and report per article what is available there |
| Pickup plan: your primary market first, fallback markets only for what it lacks and what is small enough to transport; says when everything is at the primary market |
Prices and availability depend on the market, so every basket belongs to one market. A market switch means a new
basket there: copy_basket does that for you and the report shows what the other market has, in what quantity,
and price changes. compare_markets and plan_pickup only read stock (toom's stock endpoint) and never touch a basket;
plan_pickup(apply=True) can also build the planned baskets.
plan_pickup priorities: 1) everything the primary market has is picked up there; 2) only what it lacks comes
from a fallback market, and only if it is not in bulky_skus (articles that do not fit your transport are never
taken from a fallback); fallbacks are chosen for as few stops as possible. If all_at_primary_market is true, one
stop covers everything. Stock is live and can change between planning and pickup, so re-check before you go.
Related MCP server: Toolzy MCP Server
Install
git clone https://github.com/tronicum/t00my-mcp && cd t00my-mcp
claude mcp add t00my-mcp -- uv --directory "$(pwd)" run t00my-mcpstdio transport, no port. Any MCP client can launch uv run t00my-mcp the same way.
Configuration (optional)
Variable | Meaning |
| Market used when none is selected (name or id), so |
| Your markets, separated by |
With these set, markets_nearby and find_article_nearby also work without near (around the default market).
Examples
"Find the toom markets in Berlin." →
find_markets("berlin")"Which drills are on offer?" →
search_products("bohrmaschine", offers_only=True, sort="price_asc")"Cordless screwdrivers from Bosch or Makita, under 150 €, in stock in Prenzlau." →
search_products("akkuschrauber", brands=["Bosch","Makita"], max_price=150, availability="in_market")"Where within 50 km of Cologne can I pick up this article right now?" →
find_article_nearby(near="Köln", sku="<article number>", radius_km=50)"What are the dimensions and what is in the box?" →
get_article("<article number>")"Search for cordless drills in Prenzlau." →
set_market("Prenzlau"),search_products("akkuschrauber")"Which of these has all three articles in stock: Friedrichshain, Weißensee, Prenzlau?" →
compare_markets(["Friedrichshain", "Weißensee", "Prenzlau"], items=[{"sku": "1490300", "quantity": 2}, ...])"Copy my basket from Friedrichshain to Weißensee." →
copy_basket(from_market="Friedrichshain", to_market="Weißensee")"Pick everything up in market X; only if something is not there and fits my car, use another market." →
plan_pickup(primary_market="X", fallback_markets=[...], bulky_skus=["<sku of what does not fit>"], items=[...])
Limits (please read)
No checkout. The basket is an anonymous session held by the server process, not your toom account, so it does not show up in your browser. Reserving and paying happens on toom.de; the tools give you the article numbers, quantities and product links to do that.
Article inquiries are yours to send. For articles that are only "Auf Anfrage bestellbar" in a market, toom.de offers "Artikel anfragen" on the product page. The form carries your contact data and sits behind a captcha, so
t00my-mcpprepares everything (prepare_article_request) but does not send it and does not try to get past the captcha.Distances are straight-line, not driving distances, and no geocoder is used:
nearis a market name or id, a postal code, words in a market's name or city, or coordinateslat,lon. Stock is live and can change; the phone number of each market is included so you can call before a long drive.Prices:
price_euris what you pay. For struck-through prices toom shows,was_price_eurandsavinggive the old price and the saving. Offers (Aktion) carry no old price; their offer period is inget_related.Accessories are toom's suggestions, not a catalogue: "Häufig dazu gekauft" comes from purchase data, so it can contain other sizes of the same article (marked
same_category) and unrelated things.Unofficial and undocumented. toom.de can change its endpoints any time; the live contract tests (
T00MY_LIVE=1 uv run pytest -m live) are there to notice that.Polite by design: requests are throttled (0.5 s apart), search reads only the first result page (toom's
robots.txtdisallows?page=; filters and sorting narrow a search down instead, and no+is ever put in a URL), and the client identifies itself. Personal use, please.Search results decode toom's
availability_codethe way the product page does:market_reservable(reserve for pickup),market_orderable("Bestellbar in ": not in stock, but on the product page toom offers "Artikel anfragen" and the market orders it for you, possibly plus transport costs; this server does not send that inquiry, do it on toom.de) andhome_delivery. For real stock quantities usecompare_markets(capped at the quantity you ask for). Search by words: toom redirects an exact article number to its product page.
Planned tools and decisions are in TODOs.md.
Development
uv run pytest # mocked tests against recorded real response shapes, no network
T00MY_LIVE=1 uv run pytest -m live # contract tests against toom.de (anonymous session, orders nothing)The recorded responses in tests/fixtures/ are short snapshots of public toom.de pages with contact data replaced by
placeholders (see tests/fixtures/README.md); toom's content stays with its owners.
tests/conftest.py is a fake toom.de (httpx.MockTransport) with per-market baskets and stock; its fixtures are
recorded from the real site. Behaviour that was not verified against the real site is marked ASSUMPTION there.
Disclaimer
Unofficial and independent. No affiliation with, or approval by, toom Baumarkt GmbH or its parent companies. Names and marks belong to their owners.
Use at your own risk, no warranty (see LICENSE). Prices, offers and stock are what toom's pages show at that moment and can be wrong or outdated; check with the market before a long drive or a purchase.
You are responsible for how you use it. Please respect toom's terms of use and applicable law. The tool is built to be a polite guest (throttled requests, first result page only, honest user agent) and does not try to get around captchas or other protections, and neither should you. It is meant for personal use, not for bulk collection or monitoring at scale.
It reads and prepares. It does not log in, check out, pay or send contact forms for you. Baskets exist only in an anonymous session held by the running server process.
Privacy. The project collects nothing and sends nothing anywhere except to toom.de. It writes to disk only when you ask for a session export (
export_session, after confirmation; the file is readable only by you).
License
AGPL-3.0-or-later, see LICENSE. Not affiliated with toom Baumarkt GmbH.
Deutsch
⚠️ Inoffiziell. Dies ist ein unabhängiges Community-Projekt. Es wird nicht von der toom Baumarkt GmbH oder einem Unternehmen hinter toom hergestellt, unterstützt, gefördert oder betreut und hat keinen Zugriff auf interne toom-Systeme. „toom“ und „toom.de“ sind Namen ihrer jeweiligen Inhaber und werden hier nur genannt, um zu sagen, mit welcher Website das Werkzeug arbeitet. Es nutzt dieselben öffentlichen Seiten und Endpunkte wie ein Browser auf toom.de, die toom jederzeit ändern oder sperren kann. Siehe Haftungsausschluss.
Ein MCP-Server (Python, FastMCP) für den toom.de-Onlineshop: Artikel suchen, pro Markt einen Warenkorb füllen, sehen, welcher Markt was wirklich auf Lager hat, und einen Warenkorb von einem Markt in einen anderen kopieren, im Umkreis suchen, Artikel vergleichen, prüfen ob etwas ins Auto passt und die Abholung planen. Er liest und bereitet vor; bestellen, bezahlen und Anfragen abschicken tut er nicht.
Tools
Tool | Funktion |
| Markt per Stadt, Name, PLZ oder ID finden und auswählen |
| Artikel suchen, optional eingegrenzt: |
| Welche Filter toom für einen Suchbegriff anbietet (Marke, Akku/Netz, Akku inklusive, ...) mit Trefferzahlen, um eine breite Suche einzugrenzen |
| Ein Warenkorb pro Markt; Abholung (reservieren) oder Lieferung |
| Details zu einem Artikel per Nummer: Marke, Preis, EAN, Merkmale (Maße, Lieferumfang, ...), Kategorien, Bilder, Hersteller, dazu der Bestand in einem oder mehreren Märkten |
| toom-Märkte im Umkreis eines Ortes (Luftlinie, nächster zuerst) |
| Wo im Umkreis gibt es einen Artikel (oder mehrere) jetzt zum Abholen? Echter Bestand je Markt, nächster zuerst, mit Telefonnummer |
| Jetzt geöffnet?, Öffnungszeiten, kommende Schließtage (Feiertage), Services (Miettransporter, Anhänger, Holzzuschnitt, ...), wo die Abholstation ist, Telefon |
| 2–6 Artikel nebeneinander: Preis, Maße in cm/kg, Bestand und alle Merkmale, Unterschiede zuerst |
| Passt ein Artikel in einen Raum (Laderaum, Durchgang)? Ehrlich: passt, passt nicht oder unklar, wenn toom ein Maß nicht nennt. Eine weggelassene Seite gilt als unbegrenzt (eine Tür geht hochkant durch eine schmale Öffnung), für ein Auto also alle drei angeben |
| Abholen oder liefern lassen? Bestand, Lieferzeit und die tatsächlich berechneten Versandkosten nebeneinander (die Freigrenze von toom gilt für Pakete; Sperrgut geht per Spedition und zahlt immer). Wegwerf-Warenkorb, deiner bleibt unberührt |
| toom's eigene Zubehör- und Alternativvorschläge: „Häufig dazu gekauft“ (aus Käufen) und „Ähnliche Produkte“ |
| Echter Bestand pro Artikel in mehreren Märkten, ohne Warenkorb |
| Schreibt die Session-Cookies eines Marktes in eine lokale Datei (Rechte 0600), damit du den Warenkorb im eigenen Browser ansehen kannst: mit einer Cookie-Erweiterung (z. B. Cookie-Editor) importieren, dann toom.de/warenkorb öffnen. Fragt vorher nach: der Import ersetzt die toom.de-Cookies des Browsers |
| Für Artikel, die im Markt nicht vorrätig sind („Auf Anfrage bestellbar“): Bestand, Produktlink, Telefonnummer des Marktes und ein fertiger Text für „Artikel anfragen“ oder einen Anruf. Sendet nichts |
| Warenkorb in einem anderen Markt neu aufbauen und pro Artikel berichten, was dort verfügbar ist |
| Abholplan: zuerst der Hauptmarkt, Ausweichmärkte nur für Fehlendes, das klein genug zum Transport ist; meldet, wenn alles im Hauptmarkt liegt |
Preise und Verfügbarkeit hängen vom Markt ab, deshalb gehört jeder Warenkorb zu genau einem Markt. Ein Marktwechsel
heißt: neuer Warenkorb dort. copy_basket macht das und zeigt, was der andere Markt hat, in welcher Menge, und
Preisänderungen. compare_markets und plan_pickup lesen nur den Bestand und fassen keinen Warenkorb an;
plan_pickup(apply=True) kann die geplanten Warenkörbe auch aufbauen.
Prioritäten von plan_pickup: 1) Alles, was der Hauptmarkt hat, wird dort abgeholt; 2) nur Fehlendes kommt aus einem
Ausweichmarkt, und nur wenn es nicht in bulky_skus steht (Artikel, die nicht ins Transportmittel passen, werden nie
aus einem Ausweichmarkt genommen); Ausweichmärkte werden mit möglichst wenigen Stopps gewählt. Ist
all_at_primary_market wahr, deckt ein Stopp alles ab. Der Bestand ist live und kann sich zwischen Planung und
Abholung ändern, bitte vor der Fahrt noch einmal prüfen.
Installation
git clone https://github.com/tronicum/t00my-mcp && cd t00my-mcp
claude mcp add t00my-mcp -- uv --directory "$(pwd)" run t00my-mcpstdio, kein Port. Andere MCP-Clients starten einfach uv run t00my-mcp.
Konfiguration (optional)
Variable | Bedeutung |
| Markt, der gilt, wenn keiner gewählt ist (Name oder ID); |
| Deine Märkte, getrennt mit |
Mit beiden gesetzt funktionieren markets_nearby und find_article_nearby auch ohne near (um den Standardmarkt).
Grenzen (bitte lesen)
Kein Checkout. Der Warenkorb ist eine anonyme Session im Serverprozess, nicht dein toom-Konto, und taucht daher nicht in deinem Browser auf. Reservieren und Bezahlen passiert auf toom.de; die Tools liefern dir Artikelnummern, Mengen und Produktlinks dafür.
Artikelanfragen schickst du selbst ab. Für Artikel, die in einem Markt nur „Auf Anfrage bestellbar“ sind, bietet toom.de auf der Produktseite „Artikel anfragen“ an. Das Formular enthält deine Kontaktdaten und liegt hinter einem Captcha;
t00my-mcpbereitet alles vor (prepare_article_request), schickt es aber nicht ab und umgeht das Captcha nicht.Entfernungen sind Luftlinie, keine Fahrstrecke, und es wird kein Geocoder benutzt:
nearist ein Marktname oder eine ID, eine PLZ, Wörter aus Name oder Stadt eines Marktes oder Koordinatenlat,lon. Der Bestand ist live und kann sich ändern; die Telefonnummer jedes Marktes steht dabei, damit du vor einer langen Fahrt anrufen kannst.Preise:
price_eurist, was du zahlst. Bei durchgestrichenen Preisen stehenwas_price_eurundsavingfür den alten Preis und die Ersparnis. Angebote (Aktion) haben keinen alten Preis; ihr Zeitraum steht inget_related.Zubehör sind Vorschläge von toom, kein Katalog: „Häufig dazu gekauft“ stammt aus Kaufdaten und kann andere Größen desselben Artikels (
same_category) oder Unzusammenhängendes enthalten.Inoffiziell und undokumentiert. toom.de kann die Endpunkte jederzeit ändern; die Live-Tests (
T00MY_LIVE=1 uv run pytest -m live) sind dafür da, das zu bemerken.Höflich gebaut: gedrosselte Requests (0,5 s Abstand), die Suche liest nur die erste Ergebnisseite (die
robots.txtvon toom sperrt?page=), und der Client gibt sich zu erkennen. Bitte nur persönliche Nutzung.Suchergebnisse entschlüsseln toom's
availability_codewie die Produktseite:market_reservable(zur Abholung reservierbar),market_orderable(„Bestellbar in “: nicht vorrätig, aber toom bietet auf der Produktseite „Artikel anfragen“ an und der Markt bestellt es für dich, ggf. zzgl. Transportkosten; diese Anfrage sendet der Server nicht, bitte auf toom.de machen) undhome_delivery. Echte Bestandsmengen liefertcompare_markets(gedeckelt auf die angefragte Menge). Mit Wörtern suchen: toom leitet eine exakte Artikelnummer auf die Produktseite um.
Entwicklung
uv run pytest # Mock-Tests gegen aufgezeichnete echte Antwortformate, ohne Netzwerk
T00MY_LIVE=1 uv run pytest -m live # Contract-Tests gegen toom.de (anonyme Session, bestellt nichts)Haftungsausschluss
Inoffiziell und unabhängig. Keine Verbindung zur toom Baumarkt GmbH oder deren Muttergesellschaften und keine Billigung durch sie. Namen und Marken gehören ihren Inhabern.
Nutzung auf eigene Gefahr, keine Gewähr (siehe LICENSE). Preise, Angebote und Bestände sind das, was die toom-Seiten in dem Moment zeigen, und können falsch oder veraltet sein; vor einer langen Fahrt oder einem Kauf im Markt nachfragen.
Du verantwortest, wie du es benutzt. Bitte die Nutzungsbedingungen von toom und geltendes Recht beachten. Das Werkzeug ist ein höflicher Gast (gedrosselte Anfragen, nur die erste Ergebnisseite, ehrlicher User-Agent) und versucht nicht, Captchas oder andere Schutzmaßnahmen zu umgehen, und du solltest das auch nicht tun. Gedacht ist es für den persönlichen Gebrauch, nicht für Massenabfragen oder Dauerüberwachung.
Es liest und bereitet vor. Es meldet sich nicht an, bestellt nicht, bezahlt nicht und schickt keine Kontaktformulare für dich ab. Warenkörbe gibt es nur in einer anonymen Sitzung im laufenden Serverprozess.
Datenschutz. Das Projekt sammelt nichts und sendet nichts außer an toom.de. Auf die Platte schreibt es nur, wenn du einen Sitzungsexport verlangst (
export_session, nach Rückfrage; die Datei ist nur für dich lesbar).
Lizenz
AGPL-3.0-or-later, siehe LICENSE. Nicht mit der toom Baumarkt GmbH verbunden.
Available Tools
22 toolsadd_to_basketAdd To BasketB
Add an article (sku from search_products) to the basket of a market.
delivery: "pickup" (reserve and collect in the market, default) or "delivery" (parcel to your door). Adding an article that is already in the basket increases its quantity.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | ||
| market | No | ||
| delivery | No | pickup | |
| quantity | No |
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, and it does disclose one important non-obvious behavior: adding a duplicate article increments quantity rather than erroring. That is genuinely valuable. It still omits permission/auth needs, what happens when no market is supplied (schema shows market is nullable/default null), and what the call returns.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with no filler; the core action and its target lead, with the delivery and duplicate-quantity details following. Slightly fragmented formatting (the delivery line dangles without a lead-in) but efficient overall.
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?
An output schema exists, so return values need not be explained, and the quantity accumulation note covers the main side effect. But for a mutation tool with zero annotations and 0% schema coverage, the missing market-parameter semantics and any auth/prerequisite context leave a real 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?
Schema description coverage is 0% across 4 parameters, so the description must compensate. It does explain the 'delivery' enum values and the sku's origin, but says nothing about the 'market' parameter (nullable, default null) and only implies quantity's accumulation behavior. Two of four parameters remain effectively undocumented.
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 concrete verb+resource (add an article to the basket of a market) and even names the upstream tool that supplies the sku, so the agent knows the precondition. It doesn't explicitly contrast with siblings like set_quantity or remove_from_basket, but the write-direction is unambiguous from the verb.
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 delivery sentence implies when each mode applies ('pickup' reserve-and-collect vs 'delivery' parcel), which is useful selection guidance. However there is no explicit routing against siblings such as set_quantity (for changing an existing line) or view_basket, and no stated prerequisites beyond the sku source.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
clear_basketClear BasketC
Remove everything from the basket of a market.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No |
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 behavioral burden. It never says whether clearing is reversible/undoable, what happens if the basket is empty, or whether this affects a shared or per-market basket — all essential for a destructive bulk mutation.
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 short, front-loaded sentence with no filler. It earns its place, though the trailing 'of a market' adds ambiguity rather than precision.
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?
An output schema exists so return values need not be described, but for a destructive bulk-clear operation with zero annotations and an undocumented optional parameter, the description leaves major gaps an agent needs to invoke it safely.
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 single 'market' parameter has 0% schema description coverage and defaults to null, but the description never explains what the parameter means or what the null default does (e.g. current/default market). The only hint is the vague phrase 'of a market'.
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?
Names a specific verb+resource: removing everything from the basket. The word 'everything' implicitly distinguishes it from remove_from_basket, though the sibling is never named and the awkward phrasing 'basket of a market' slightly muddies the object.
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 when-to-use guidance at all. With siblings like view_basket, remove_from_basket, and add_to_basket, the agent has to infer that clearing an entire basket is the destructive bulk alternative to removing single items.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_articlesCompare ArticlesA
Compare 2 to 6 articles side by side: price, brand, dimensions (cm/kg), stock and every characteristic.
characteristics lists each label with the value per article and whether they differ, so what
distinguishes the articles is visible at a glance. Dimensions are numbers taken from what toom states;
a missing one is simply absent. Stock is for the selected market and for each market in also_check.
| Name | Required | Description | Default |
|---|---|---|---|
| skus | Yes | ||
| market | No | ||
| also_check | No |
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 behavioral burden and does add real context: dimensions are numbers 'taken from what toom states', a missing dimension is absent (not zero), and stock reflects the selected market plus every market in `also_check`. It doesn't cover permissions or error behavior, but for a read-only comparison it is substantively informative.
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?
Leads with the action and scope, then explains the `characteristics` output and the dimension/stock rules. Every sentence carries information, though the middle clause about `characteristics` is slightly dense and could be tightened.
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?
An output schema exists so return values need not be fully spelled out, yet the description still usefully frames how dimensions and stock are derived. Combined with the coverage of the two optional params, an agent has enough to invoke correctly, missing only SKU format detail.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It clarifies `market` (the selected market governing stock) and `also_check` (additional markets whose stock is returned), and stresses the 2-6 article range for `skus`, but gives no format or syntax for the SKU strings themselves. Partial compensation only.
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?
Names a specific verb (compare) and resource (articles) with explicit scope ('2 to 6 articles side by side') and enumerates the comparison axes (price, brand, dimensions, stock, characteristics). This clearly distinguishes it from the sibling compare_markets and from single-article tools like get_article.
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 '2 to 6' constraint implicitly tells the agent the required cardinality, and the emphasis on 'side by side' implies use when a comparative view is needed. However, it never explicitly states when to pick this over get_article or compare_markets, leaving selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_marketsCompare MarketsA
Check articles against several markets without touching any basket.
markets defaults to the markets in T00MY_HOME_MARKETS.
Articles come from items ([{"sku": "...", "quantity": 2}]) or, if omitted, from the basket of
from_market / the current market.
Uses toom's stock endpoint: per article and market the available quantity (capped at the quantity you want). Markets are listed best first (complete before partial).
| Name | Required | Description | Default |
|---|---|---|---|
| items | No | ||
| markets | No | ||
| from_market | No |
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 and does reasonably well: it discloses non-mutation ('without touching any basket'), that the underlying toom stock endpoint is queried, that quantities are capped at the requested amount, and that markets are ordered complete-before-partial and best-first.
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?
Front-loaded purpose sentence followed by tight, scannable paragraphs for defaults, article source, and result ordering. Some lines are telegraphic and fragmentary (code-formatted terms in prose), slightly reducing readability.
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?
An output schema exists, so return values need not be spelled out, yet the description usefully adds the result ordering rule. Together with the documented input defaults, an agent has enough to invoke it correctly; only sibling differentiation is missing.
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 and largely does: it documents the `items` shape with a literal example ({"sku": "...", "quantity": 2}), the `markets` default source, and the `from_market` fallback semantics. Left without any type/format note for `markets` entries themselves.
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+resource ('check articles against several markets') plus a key scope constraint ('without touching any basket'). However, it never differentiates itself from the sibling compare_articles, so an agent has to guess which of the two comparison tools fits a given request.
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?
Gives concrete operational context: markets defaults to T00MY_HOME_MARKETS, and articles fall back to the from_market/current-market basket when `items` is omitted. It does not name an alternative tool or state when-not-to-use, so it stops short of explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
copy_basketCopy BasketA
Copy the basket of one market into a new basket in another market.
A market switch means building a new basket there; the per-article report shows whether the target market has each article (and in what quantity), plus price changes. The source basket is untouched. replace=True (default) empties the target basket first, so repeating the call does not double quantities; replace=False adds to what is already there.
| Name | Required | Description | Default |
|---|---|---|---|
| replace | No | ||
| to_market | No | ||
| from_market | No |
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 and does real work: it states the source basket is untouched, that the target is emptied when replace=True (making the call idempotent and avoiding double quantities), and that a per-article report is produced with availability, quantities, and price changes. The only gap is that it does not explain the meaning of a null from_market or an empty to_market.
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?
Front-loaded with the core action, then behavior, then the replace caveat. Every sentence adds information and none is redundant padding.
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?
An output schema exists, so return values need not be spelled out, and the description covers mutation semantics and side effects well. It is slightly incomplete on the two market parameters' defaults, which matters given 0% schema coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It fully explains replace (True empties, False adds) but leaves to_market and from_market semantics – including their defaults and what a null from_market implies – to inference, so only one of three parameters is meaningfully documented.
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 first sentence gives a specific verb+resource+scope: copying one market's basket into a new basket in a different market. This distinguishes it cleanly from siblings like add_to_basket, clear_basket, and view_basket without needing to open any schema.
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 frames the use case ('a market switch means building a new basket there') and clarifies the replace behavior, so an agent knows when this is appropriate. It does not explicitly name alternative tools or state when NOT to use it, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delivery_infoDelivery InfoB
Pick up or have it delivered? Costs, lead times and stock for both, side by side.
toom shows shipping costs only in a basket, so this uses a short-lived throw-away basket (a separate anonymous session): your real baskets are not touched. Free shipping starts at the threshold toom reports. Nothing is ordered or reserved.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | ||
| market | No | ||
| quantity | No |
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 behavioral burden and does so well: it discloses that a throwaway anonymous basket is created, that real baskets are untouched, and that nothing is ordered or reserved — the critical side-effect profile for a tool that touches a basket-like resource. It stops short of stating whether this is safe to call repeatedly, any rate limits, or how 'short-lived' the session is.
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 rhetorical opener is front-loaded and the second sentence delivers the key safety disclosure immediately, so the important points come first. The prose is slightly chatty but each sentence carries either scope or behavior, so it earns most of its length.
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?
An output schema exists, so return values need not be described, and the behavioral side effects are covered. The gap is parameter documentation: an agent knows what the tool returns but not what to pass for sku/market/quantity, leaving it under-specified for invocation.
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% across three parameters (sku, market, quantity), so the description must compensate and does not: none of the three are explained, nor is the sku format or whether market defaults to a stored market (set_market exists as a sibling). The only indirect hint is that quantity affects the free-shipping threshold, which is not made explicit.
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 comparison output ('costs, lead times and stock for both, side by side') for the pickup-vs-delivery decision, which is more precise than the bare name 'delivery_info'. It does not, however, name or exclude the nearby siblings that look like they could overlap (plan_pickup, compare_markets, market_info), so an agent still has to infer the boundary.
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?
Usage context is implied by the opening question ('Pick up or have it delivered?'), so the agent can infer this is for a delivery-vs-pickup cost decision. There is no explicit when-to-use, when-not-to-use, or routing to an alternative sibling such as plan_pickup, which leaves the selection ambiguous.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_sessionExport SessionA
Write the session cookies of a market's basket to a local file, to look at that basket in your own browser.
The basket lives in an anonymous toom.de session held by this server. Importing the file into your browser (cookie manager extension, e.g. Cookie-Editor: Import) REPLACES the toom.de cookies of that browser, including any basket or market choice it had there. The cookies are an anonymous session token (no login), but still a token: keep the file private and do not share it.
Ask the user first. Without confirm=True nothing is written and you get the notice to show them; call again with confirm=True only after the user explicitly agreed.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | ||
| confirm | No |
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 fully carries the burden and does so well: it discloses the destructive side effect on the user's browser (importing REPLACES existing toom.de cookies, including basket/market choice), the security profile (anonymous token, no login, keep private), and the no-op-without-confirm behavior. This is exactly the behavioral context annotations would otherwise provide.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by security and confirmation guidance. It is slightly verbose with parenthetical asides (cookie-manager example, 'no login, but still a token'), but every sentence carries actionable information rather than 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?
Output schema exists, so return values need no explanation. The description covers the mutation's side effects, privacy constraints, and the confirmation gate, which is everything an agent needs to invoke this safely. Nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It explains 'confirm' thoroughly (default false = nothing written; must be true after user agreement), but 'market' is only implied by 'a market's basket' and never explicitly described as selecting which market's session. Strong on one parameter, partial on the other.
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 (write/export) applied to a specific resource (the session cookies of a market's basket) and gives the intent ('to look at that basket in your own browser'), which implicitly separates it from view_basket. An agent can tell what this does without opening the schema.
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 gives an explicit precondition ('Ask the user first') and a precise two-step workflow: without confirm=True nothing is written, call again with confirm=True only after explicit agreement. It does not name alternative siblings (e.g. view_basket) for in-server inspection, so it stops short of a full when/when-not routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_article_nearbyFind Article NearbyA
Where in the radius around a place can an article (or several) be picked up right now?
Checks the real stock of every toom market within radius_km (straight-line, nearest first; at most
max_markets markets, one request each) and returns them nearest first with the stock per article.
Give one article via sku + quantity, or several via items=[{"sku": "...", "quantity": 2}].
near is understood as in markets_nearby. Markets that have everything are marked complete;
nearest_complete is the one to drive to. Stock is live and can change, so call the market before a
long drive (the phone number is included). Nothing is reserved or put in a basket.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | No | ||
| near | No | ||
| items | No | ||
| quantity | No | ||
| radius_km | No | ||
| max_markets | No |
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 and does well: it discloses that stock is live and can change, that markets are queried one request each, that results are returned nearest first, and that nothing is reserved or added to a basket. It stops short of covering auth or rate-limit details.
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 front-loaded with the core question before the operational details, and each sentence carries useful content (scope, input formats, completeness flags, live-stock caveat). It is somewhat wordy but well structured and without filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter tool with no annotations, the description covers inputs, nearest-first ordering, completeness flags, and live-stock caveats, and an output schema exists so return format need not be explained. Only auth/rate-limit context is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Despite 0% schema description coverage, the description actually documents all six parameters: `sku`+`quantity` or `items` (with an inline example format), `near`, `radius_km`, and `max_markets`. This adds substantial meaning beyond the bare schema, though units/semantics for radius_km rely on the parameter name.
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 question states a specific verb (find/pick up) and resource (an article) with clear scope (markets within a radius right now). It is readily distinguishable from siblings like find_markets or search_products, since the purpose is checking live stock of a specific article at nearby markets.
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 (checking where an article can be picked up right now) and notes `near` is understood as in markets_nearby, but it never states when to use this tool versus alternatives like find_markets or search_products. Usage is implied rather than explicitly routed.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_marketsFind MarketsB
Find toom markets by city, name, street, postal code (prefix) or market id.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| query | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry behavioral context. 'Find' strongly implies a read-only search, but it does not disclose pagination behavior, permission requirements, or how limit/multiple-match results are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. The lookup fields are introduced immediately after the verb and resource.
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 handles return values, and the description covers the core query semantics for a simple lookup tool. However, it omits limit semantics and does not help the agent differentiate this tool from nearby-market or market-info siblings.
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. It usefully documents the meaning of the required query parameter by listing searchable fields, but it says nothing about the limit parameter beyond the schema default.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (find) and resource (markets), and enumerates the accepted lookup keys. It does not explicitly distinguish itself from siblings such as markets_nearby or market_info, 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?
It lists possible query inputs but gives no when-to-use guidance, no conditions for choosing it over markets_nearby or market_info, and no exclusions. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fits_spaceFits SpaceA
Does an article fit into a space (a car's load area, a doorway, a shelf)? Uses the dimensions toom states.
Give the free space in cm. Without max_depth_cm that axis is treated as unlimited. The answer is
fits true only if it fits however unknown dimensions turn out, false only if it cannot fit whatever they
are, otherwise null ("unklar"): a dimension toom does not state is never guessed. Dimensions are those
of the article as listed (for a door: the leaf, not the wall opening, and without frame or packaging);
leave margin. The weight is returned for your own judgement.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | ||
| market | No | ||
| max_depth_cm | No | ||
| max_width_cm | Yes | ||
| max_height_cm | Yes | ||
| allow_rotation | No |
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 behavioral burden and does so well: it discloses the trivalent return semantics (true only if it fits under every possible unknown, false only if it can never fit, otherwise null/'unklar'), states that unstated dimensions are never guessed, and specifies which dimensions are measured (door leaf, excluding frame/packaging). The main omission is any note on required authorization or market scoping.
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?
Purpose is front-loaded in the first clause, followed by the interpretive rules an agent actually needs. Sentences are dense but each carries a distinct rule (axis treatment, trivalent logic, dimension convention, margin/weight). Framing headers like 'Give the free space in cm' add slight verbosity without much cost.
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?
An output schema exists, yet the description still explains the return semantics (fits tri-state plus weight), which is genuinely helpful rather than redundant. Together with the dimension conventions and depth-axis rule, the definition is nearly complete for invocation; only allow_rotation and market scoping remain unexplained.
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% across 6 parameters, so the description must compensate and only partially does: it establishes the cm unit for all dimension inputs, explains that omitting max_depth_cm treats that axis as unlimited, and clarifies which physical dimensions of the article are meant. However, allow_rotation (which materially changes fit results and defaults to true) and market are never addressed.
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+resource combination — determining whether an article (identified by SKU) fits a given space — and illustrates the resource with concrete contexts (car load area, doorway, shelf). No sibling tool (search_products, compare_articles, find_article_nearby, delivery_info) overlaps this purpose, so an agent can route unambiguously.
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 opening parenthetical supplies clear usage contexts (car's load area, doorway, shelf), and the instruction to 'leave margin' plus the note that weight is returned 'for your own judgement' tells the agent how to act on the result. There is no explicit when-not guidance or named alternative, but for a single-purpose geometric check this is adequate context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_articleGet ArticleA
Details of one article by its toom article number, plus stock in the market(s).
Gives title, brand, price, EAN, selling points, characteristics (dimensions, technical details, scope of
delivery, ...), categories, images, documents and manufacturer contact, all as toom's product page
shows them. stock is the available quantity (capped at quantity) in the selected market and in each
market of also_check; availability decodes toom's code for the selected market ("Auf Anfrage
bestellbar" = market_orderable). Nothing is added to a basket.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | ||
| market | No | ||
| quantity | No | ||
| also_check | No |
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 explains that `stock` is the available quantity capped at `quantity`, how `also_check` extends the stock check across markets, and how `availability` decodes toom's code. It also states 'Nothing is added to a basket', signaling no side effects. It does not cover authentication requirements or rate limits, but for a read-oriented tool this is substantial disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the tool's purpose and proceeds logically through returned fields, stock semantics, and the no-basket disclaimer. Every sentence contributes, though the dense middle section could be slightly more 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?
For a 4-parameter read tool with an output schema and no annotations, the description is fairly complete: it explains purpose, return content, stock behavior, and the absence of basket side effects. It lacks error-handling context and format hints for `market`/`also_check`, but nothing critical for correct invocation is missing.
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. It gives meaning to all four parameters: `sku` as the 'toom article number', `market` as the 'selected market', `quantity` as a cap on returned stock, and `also_check` as a list of additional markets. While it does not specify the exact format for market identifiers, it adds meaningful semantics beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Details of one article by its toom article number, plus stock in the market(s).' The scope is clear and an agent can tell it fetches a single product's details. However, it does not explicitly distinguish itself from siblings like search_products or compare_articles, 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 description implies usage by requiring a specific article number, and clarifies 'Nothing is added to a basket', which helps an agent avoid mistaking it for a basket mutation. But there is no explicit when-to-use guidance, no mention of alternatives, and no prerequisites (e.g., how to obtain a valid sku or market).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_infoMarket InfoA
Everything useful for a visit: open now?, opening hours, upcoming closed days, services, pickup details.
Hours come from toom's market list, including its "special days" (a 00:00-00:00 entry is a closed day,
e.g. a holiday). A holiday toom did not enter is not known here. has flags services that matter for
transport: rental van (Miettransporter), trailer rental (Anhängerverleih), wood cutting (Holzzuschnitt),
tool rental, delivery and pickup service.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No |
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 and does add real behavioral context: hours originate from toom's market list, a 00:00-00:00 entry means closed, holidays not entered by toom are simply unknown, and the `has` flags map to specific transport-relevant services. It does not say what happens when the market parameter is omitted, but the data-provenance and edge-case semantics disclosed are substantial.
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 front-loads the returned fields and the following sentences explain the hours semantics and service flags. It is tight and every sentence adds information, though the parenthetical German service names make it slightly dense.
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?
An output schema exists, so the description is not obligated to describe return shape, and it still explains the notable quirks of that data (closed-day encoding, unknown-holiday caveat). The one substantive gap is the undocumented `market` parameter, which an agent must resolve before calling.
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 single `market` parameter has 0% schema description coverage and the description never mentions it at all — no indication of accepted form (name, slug, ID), and no explanation of the null default. With low coverage the description is expected to compensate, and here it does not.
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 enumerates what the tool returns for a market visit (open-now status, hours, closed days, services, pickup details), which is specific enough for an agent to know what it does. It does not, however, differentiate itself from siblings whose names suggest overlapping territory, notably delivery_info, plan_pickup and compare_markets, so the boundary is left to inference.
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?
"Everything useful for a visit" implies the usage context (pre-visit lookup of a single market's status and services), but there is no explicit when-to-use/when-not statement and no routing to alternatives such as markets_nearby or plan_pickup. Usage is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
markets_nearbyMarkets NearbyA
toom markets within a radius (straight-line distance, nearest first).
near can be a market name or id, a postal code (a prefix works), words in a market's name or city
("Köln"), or coordinates "50.94,6.96". No geocoder is used: a place without a toom market is given as a
postal code of a nearby market or as coordinates.
| Name | Required | Description | Default |
|---|---|---|---|
| near | No | ||
| limit | No | ||
| radius_km | No |
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 and does reasonably well: it discloses that distance is straight-line (not routing), that results are nearest-first, that no geocoder is used, and what happens when the place has no toom market (falls back to a nearby market's postal code or coordinates). Return format and pagination behavior are left to the output schema.
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?
Compact and front-loaded: scope and ordering come first, then the `near` format contract, then the no-geocoder caveat. Only the missing opening verb slightly hurts readability; 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?
For a read-only, location-based search whose output schema documents the return shape, the description covers scope, ordering rule, accepted input formats, and the fallback case well. The remaining gap is minimal guidance on how this differs from find_markets.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It does a thorough job on `near` (accepts id, name, postal code prefix, name/city words, or "lat,lon" coordinates) and implies the radius semantics of `radius_km`. However, `limit` and the units/behavior of `radius_km` are never addressed, leaving one of three parameters entirely undocumented.
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?
Effectively states the resource and its scope: markets within a given radius, ordered nearest-first by straight-line distance. The opening fragment lacks a verb ("toom markets within a radius"), but the intent is unambiguous. It does not explicitly contrast itself with siblings like find_markets or compare_markets.
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 never says when to pick this over find_markets, nor does it give prerequisites or exclusions. The closest thing to guidance is the explanation of accepted `near` formats, which is input semantics rather than usage routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
plan_pickupPlan PickupA
Plan where to pick up a list of articles (or the current basket): primary market first, fallbacks second.
Priority: 1) everything the primary market has is picked up there. 2) Only what the primary market does not have comes from a fallback market, and only if it is small enough to transport without the special vehicle at the primary market. Pass such articles that do NOT fit (doors, long boards, ...) as bulky_skus: they are never taken from a fallback market. Decide that from the article's size in its title/description. Fallbacks are picked for as few stops as possible. Uses real stock per market.
all_at_primary_market in the result is true when one stop at the primary market covers everything,
i.e. no trip to a fallback market and no own transport are needed. With apply=True the planned pickups
are built as (replaced) baskets in each stop's market, ready to be reserved on toom.de.
Defaults: the primary market is the selected one (set_market / T00MY_DEFAULT_MARKET) and the fallbacks are T00MY_HOME_MARKETS without it.
| Name | Required | Description | Default |
|---|---|---|---|
| apply | No | ||
| items | No | ||
| bulky_skus | No | ||
| from_market | No | ||
| primary_market | No | ||
| fallback_markets | No |
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 present the description carries the full burden and does so well: it discloses that apply=True builds (replaces) baskets in each stop's market ready for reservation, what all_at_primary_market means in the result, that stock is real per market, and how primary/fallback defaults are derived (selected market vs T00MY_HOME_MARKETS). The replace semantics are the key mutation risk and they are 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?
Core purpose is front-loaded in the first sentence, then the algorithm and defaults follow in a logical order. It is dense and somewhat long, but nearly every sentence carries operational information; only the bulky-examples parenthetical is expendable.
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 six-parameter, zero-coverage, no-annotation tool with a mutation path, the description covers the workflow, defaults and result flag in enough depth to invoke correctly. Gaps remain around from_market and the items element format, which an agent must guess from the schema alone.
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 and it only partly does: apply, bulky_skus, primary_market and fallback_markets are explained or have their defaults described. However items is only gestured at ("a list of articles") with no object shape, and from_market is never explained at all, leaving two of six parameters opaque.
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 (plan where to pick up a list of articles / the current basket) and immediately frames the strategy (primary market first, fallbacks second), which cleanly separates it from siblings like find_markets, compare_markets and markets_nearby. An agent can tell what this does without opening the schema.
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?
Gives clear operational context: priority rules (1/2), when a fallback is eligible (only if small enough to transport without the special vehicle), how to flag bulky items, and how defaults are resolved. It never names an alternative tool or says when NOT to use this, so it falls short of explicit routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
prepare_article_requestPrepare Article RequestA
Prepare asking a market to order an article that is not in stock there. Sends nothing.
toom shows "Auf Anfrage bestellbar" / "Artikel anfragen" on the product page for such articles and the
market orders them for you (possibly plus transport costs). The request form is protected by a captcha
and carries your contact data, so it is done by the user on toom.de. This tool gathers everything
needed: the stock in the market, the product page link, the market's phone number and a ready-made
text for the form or a phone call. needed_by (free text, e.g. "Freitag, 16.10.") and note are
added to that text. No personal data is read or sent.
| Name | Required | Description | Default |
|---|---|---|---|
| sku | Yes | ||
| note | No | ||
| market | No | ||
| quantity | No | ||
| needed_by | No |
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 and does so well: it discloses that nothing is sent, that the real form is captcha-protected and user-executed, and that no personal data is read or sent. It also enumerates what the tool returns (market stock, product link, phone number, ready-made text), which is unusually rich behavioral context.
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?
Front-loaded with the single most important fact ('Sends nothing') and organized logically. It is slightly long, with the German product-page label ('Auf Anfrage bestellbar') being marginal, but almost every sentence carries operational meaning.
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?
An output schema exists, so return structure need not be spelled out, and the safety/execution model is fully covered. The remaining gap is undocumented semantics for sku, market, and quantity, which the 0%-coverage schema does not compensate for.
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% across 5 parameters. The description explains two of them meaningfully — needed_by as free text with a concrete example ('Freitag, 16.10.') and note as added to the generated text — but says nothing about sku, market, or quantity.
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 ('prepare') plus the resource and scenario ('asking a market to order an article that is not in stock there'). This cleanly separates it from siblings like add_to_basket (in-stock ordering) or search_products, so an agent can route without opening the schema.
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?
Gives a clear trigger condition (article not in stock at that market) and explicitly says the tool 'sends nothing' and that the actual request is completed by the user on toom.de. It does not name a sibling alternative explicitly (e.g., add_to_basket when in stock), so it falls just short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
remove_from_basketRemove From BasketC
Remove one basket line (line_id from view_basket).
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | ||
| line_id | 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 provided, so the description carries full burden. It says 'remove' implying mutation and irreversibility, but doesn't state whether removal is permanent, whether it requires confirmation, what happens to the basket total, or whether it fails if the line_id doesn't exist.
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?
A single terse sentence with zero waste. The key identifier and its source are front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive mutation tool with no annotations and 0% schema coverage, the description is too thin. It doesn't cover the undocumented 'market' parameter, failure modes, or the mutation's irreversibility, leaving an agent under-informed.
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 should compensate. It partially does by linking line_id to view_basket, but leaves 'market' (the optional parameter with anyOf string/null) completely undocumented in both schema and description.
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 (remove) and resource (basket line), and clarifies the identifier source (line_id from view_basket). Distinguishes adequately from siblings like add_to_basket, set_quantity, and clear_basket, though it doesn't explicitly contrast with clear_basket which also removes items.
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?
Only gives a hint about where the line_id comes from. No explicit when-to-use guidance, no mention of alternatives like clear_basket, add_to_basket to reverse, or set_quantity to modify instead of remove.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_filtersSearch FiltersA
Which filters toom offers for a search term, with the number of hits per value.
Use it to narrow a broad search down (brand, cordless or corded, battery included, ...). The result lists
each filter's param and its values; pass them on in search_products(filters={param: [value, ...]}).
Range filters (price, voltage, weight, ...) show their min and max; price has its own arguments
min_price/max_price. The category tree is not included.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| market | No |
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; it discloses the return shape (each filter's param and values, range filters expose min/max, price uses min_price/max_price) and explicitly flags that the category tree is not included. It omits auth/permission needs, pagination, or result-size limits, but for a read-only discovery call the coverage is solid.
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?
Front-loads what the tool returns, then the workflow. Efficient overall, though the second paragraph drifts into search_products' filter syntax and price arguments, which is useful routing but not strictly this tool's own description.
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?
An output schema exists so return values need not be spelled out, yet the description still adds the filter-to-search_products handoff and the category-tree exclusion, which the schema cannot express. The main gap is the unexplained 'market' input and lack of any scope/market-variant caveat for a tool with a market parameter.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% for 2 parameters, so the description must compensate. It conveys that 'query' is the search term but never explains 'market' (or its null default), and the param/value and min_price/max_price references describe outputs and a sibling's arguments rather than this tool's inputs.
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 concrete verb+resource: it returns the filters available for a search term along with hit counts per value. This is clearly distinct from sibling search_products (which consumes filters) and from find_markets/get_related, so an agent can disambiguate it without opening another schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly says to use it to narrow a broad search down and gives the follow-up workflow (pass results into search_products(filters={param: [value, ...]})). It gives clear context but does not state when NOT to use it or note alternatives such as the category tree, which is excluded.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_productsSearch ProductsA
Search toom.de, optionally narrowed down. First result page only (max ~72 hits, shown up to limit).
Examples: "a drill that is on offer" -> query="bohrmaschine", offers_only=True. "cheapest cordless screwdriver in stock here" -> query="akkuschrauber", availability="in_market", sort="price_asc". "Bosch or Makita under 150 EUR" -> brands=["Bosch","Makita"], max_price=150.
offers_only: toom's "Nur Angebote anzeigen". sort: relevance | price_asc | price_desc | offers | rating
(toom's own, raw rating) | best_rated (re-ranks the hits of this page by a score that discounts articles
with few reviews: a 5.0 from one review does not beat a 4.8 from 200). min_reviews drops hits with fewer
reviews (unrated ones too).
availability: in_market (in stock in the selected market) | orderable (not in stock, the market can order
it) | home_delivery. filters takes toom's own filter params and values as listed by search_filters
(e.g. {"attr.mca_akkuinklusive": ["Ja"]}); different filters are combined with AND, values of one filter
with OR.
Each hit has on_offer (toom's offer flag or a promotion such as "Gratis Beigabe", see promotion) and
availability for the market: market_reservable, market_orderable ("Auf Anfrage bestellbar": the
inquiry is done by the user on the product page) and home_delivery. For stock quantities use
compare_markets. Search by words: an exact article number is redirected by toom to a product page.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | relevance | |
| limit | No | ||
| query | Yes | ||
| brands | No | ||
| market | No | ||
| filters | No | ||
| max_price | No | ||
| min_price | No | ||
| min_reviews | No | ||
| offers_only | No | ||
| availability | No |
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 and does so richly: page-size/hit ceiling, exact-article-number redirect behavior, the meaning of each `availability` value (including the 'Auf Anfrage bestellbar' inquiry flow), AND/OR combination semantics for `filters`, and how `best_rated` discounts low-review items. This is far beyond restating the schema.
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?
Front-loaded with the core scope statement and examples before the per-parameter detail, and most sentences carry concrete information. It is dense and long, with some parenthetical asides that could be trimmed, but little is truly wasted.
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?
An output schema exists, so return-value explanation is not required, and the description still describes key hit fields (`on_offer`, `promotion`, `availability`). Given 11 parameters and 0% schema coverage, a few parameters (market, min_price) remain under-specified, keeping it from a 5.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate across 11 parameters. It explains sort (with enum values), offers_only, availability, filters, and min_reviews well, and implies query/brands/max_price via examples, but leaves `market`, `limit` details, and `min_price` largely undefined. Strong but incomplete 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?
States a specific verb and resource (search toom.de products) and scopes it precisely: first result page only, max ~72 hits, capped by `limit`. It is clearly distinguishable from siblings like compare_markets (stock quantities) and search_filters (filter vocabulary), which it explicitly cross-references.
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?
Three worked natural-language examples map intent to parameter combinations, which is excellent guidance for a search tool. It also routes two related needs to siblings (compare_markets for stock quantities, search_filters for filter params/values). It stops short of any explicit when-not-to-use statement, so a 4 rather than 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_marketSet MarketC
Select the market ("Markt") used by default for search and basket. Accepts id, name or city.
| Name | Required | Description | Default |
|---|---|---|---|
| market | 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 behavioral burden. It usefully discloses that the selection is a persistent default affecting search and basket, but says nothing about session scoping, what happens to an existing basket, or what occurs if the identifier is invalid or ambiguous.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight sentences with the purpose front-loaded and the accepted input forms second; nothing is wasted. It could still be marginally tighter given how little it covers.
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?
An output schema exists, so return values need not be explained. For a single-parameter mutation with no annotations, however, the description should say more about persistence, error behavior, and prerequisite lookup tools to be fully actionable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% – the single 'market' string parameter is completely undocumented in the schema. The description compensates partially by stating that an id, name, or city is accepted, which is real value beyond the schema, but gives no format examples or disambiguation rules for the three accepted forms.
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 ('Select the market') and clarifies the effect: it becomes the default for search and basket. That is enough to distinguish it from a lookup tool like find_markets, though no sibling is named explicitly.
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 never says when to reach for this tool versus find_markets or market_info, nor does it state prerequisites such as resolving a market first. The intended use is only implied by the word 'default'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_quantitySet QuantityC
Change the quantity of a basket line (line_id from view_basket).
| Name | Required | Description | Default |
|---|---|---|---|
| market | No | ||
| line_id | Yes | ||
| quantity | 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 behavioral burden, and it discloses very little. It does not say whether a mutation is reversible, what happens when quantity is 0 (does it remove the line?), what permissions are required, or whether the change is idempotent. For a mutation tool with zero annotation coverage this is a notable gap.
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?
A single, front-loaded sentence with no filler; the verb and target are stated first. It is efficient, though its brevity borders on under-specification rather than true 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?
An output schema exists, so return values need no explanation, but the tool is a mutation with no annotations, 0% parameter coverage, and only a hint about line_id sourcing. For a basket-mutating operation the description leaves too much of the calling contract unstated.
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. It adds meaning for line_id (sourced from view_basket) but says nothing about the semantics of quantity (bounds, zero behavior) and never mentions the 'market' parameter at all. One of three parameters is entirely undocumented.
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 verb ('Change') and resource ('quantity of a basket line'), which cleanly separates it from add_to_basket and remove_from_basket. It does not explicitly name a sibling or state scope boundaries, but the operation is 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 parenthetical '(line_id from view_basket)' implies the agent should call view_basket first to obtain a line_id, which is useful workflow context. However, there is no explicit when-to-use vs. when-not guidance (e.g., that this only adjusts an existing line rather than adding one).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
view_basketView BasketC
The basket of a market: lines with price and pickup/delivery availability, plus the total.
| Name | Required | Description | Default |
|---|---|---|---|
| market | No |
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 behavioral burden. It does describe the shape of the response, but that duplicates the output schema, and it says nothing about whether the operation is read-only, what happens with an empty basket, or whether the market must be selected first.
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?
A single front-loaded sentence with no filler; the resource comes first and the returned fields follow. It is efficient, though so terse that it omits needed context rather than being optimally structured.
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 covers the return-value question, and the description confirms the basket-content scope, so the core need is met for a simple read tool. However, with no annotations and no parameter documentation, the agent still lacks the behavioral and scoping details required to call it confidently.
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 single 'market' parameter, which defaults to null. The phrase 'of a market' loosely ties the parameter to the basket's scope but does not explain the expected identifier form or what a null/omitted market means (e.g. current session market).
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?
Names the resource (the basket of a market) and its contents (lines with price, pickup/delivery availability, total), which is enough to separate it from the mutating siblings like add_to_basket, set_quantity, remove_from_basket and clear_basket. The read verb itself is only implied by the tool name rather than stated, so it stops short of a fully explicit verb+resource statement.
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?
There is no when-to-use guidance, no stated prerequisites, and no reference to alternatives such as copy_basket or clear_basket. The agent must infer from the name alone that this is the read/inspect counterpart to the basket-mutation tools.
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.
22 tool updates
v0.1.0- First observed
add_to_basket - First observed
clear_basket - First observed
compare_articles - First observed
compare_markets - First observed
copy_basket - First observed
delivery_info - First observed
export_session - First observed
find_article_nearby - First observed
find_markets - First observed
fits_space - First observed
get_article - First observed
get_related - First observed
market_info - First observed
markets_nearby - First observed
plan_pickup - First observed
prepare_article_request - First observed
remove_from_basket - First observed
search_filters - First observed
search_products - First observed
set_market - First observed
set_quantity - First observed
view_basket
TDQS
Scored across 22 tools
Most tools have distinct verbs and resources, but market/stock discovery overlaps: find_markets vs markets_nearby, and compare_markets vs find_article_nearby vs plan_pickup all answer related 'where can I get this?' questions. Detailed descriptions reduce the risk, but an agent must read them carefully to choose correctly.
All names are snake_case and mostly follow a verb_noun pattern (find_markets, add_to_basket, compare_articles), with only minor deviations like market_info, delivery_info, and markets_nearby. There is no case mixing or chaotic style.
22 tools is heavy for a single retail-assistant domain, and some tools overlap in stock/market lookup and pickup planning. The domain is broad, but the set sits in the borderline 16-25 range.
The surface covers market discovery, product search/details/comparison, basket CRUD, delivery info, pickup planning, and article-request preparation. The main gap is no direct reservation/checkout tool; plan_pickup can build ready baskets but the user must complete reservation on toom.de.
Maintenance
Related MCP Connectors
Live prices, deals & optimal multi-stop shopping routes for German grocery & drug stores.
Agent-native product catalog: 300M+ products, 150,000+ stores, deliver_to ranking.
Real-time product data, semantic search and more from dm-drogerie markt, Europe's leading drugstore.
AI-agent product catalog: search, lookup & purchase routing over verified merchant data.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to interact with Picnic online supermarket for grocery shopping, meal planning, cart management, delivery tracking, and budget-conscious shopping in Netherlands and Germany.103 npm113MIT

Toolzy MCP Serverofficial
AlicenseNot gradedqualityCmaintenanceEnables AI assistants to search, view details, and check availability of tool rental listings from Toolzy's peer-to-peer marketplace.MIT- AlicenseNot gradedqualityAmaintenanceMCP server that lets an LLM search and compare prices across four German hardware-store retailers (Hornbach, BAUHAUS, Globus, OBI), with store pickup availability for local branches.MIT
- AlicenseAqualityCmaintenanceEnables searching products, retrieving product details, listing stores, checking stock availability, and comparing prices across Czech DIY retailers.5MIT