[{"data":1,"prerenderedAt":778},["ShallowReactive",2],{"blog-agent-tool-design-descriptions-errors-de":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":25,"sources":35,"cover":57,"og":58,"expertise":59,"locales":60,"lang":62,"title":64,"description":65,"coverAlt":66,"metaTitle":67,"takeaways":68,"faq":74,"toc":90,"blocks":124,"others":518},"agent-tool-design-descriptions-errors","2026-10-17",11,"agents",[9,10,11,12,13],"AI agents","Tool use","Function calling","MCP","Agent design",[15,16,17,18,19,20,21,22,23,24],"agent tool design","writing tool descriptions for llm","function calling best practices","tool use error handling","mcp tool design","tool calling is_error","how many tools should an agent have","tool search defer_loading","agent computer interface","llm tool schema design",[26,29,32],{"name":27,"url":28},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",{"name":30,"url":31},"Model Context Protocol","https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"name":33,"url":34},"Poka-yoke","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoka-yoke",[36,39,42,45,48,51,54],{"title":37,"url":38},"Anthropic Engineering: Writing effective tools for agents, with agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fwriting-tools-for-agents",{"title":40,"url":41},"Anthropic Engineering: Building effective agents (Dec 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents",{"title":43,"url":44},"Claude Platform Docs: Define tools","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fdefine-tools",{"title":46,"url":47},"Claude Platform Docs: Handle tool calls","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fhandle-tool-calls",{"title":49,"url":50},"Claude Platform Docs: Tool search tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Ftool-search-tool",{"title":52,"url":53},"Model Context Protocol specification 2025-11-25: Tools","https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fserver\u002Ftools",{"title":55,"url":56},"OpenAI API Docs: Function calling","https:\u002F\u002Fdevelopers.openai.com\u002Fapi\u002Fdocs\u002Fguides\u002Ffunction-calling","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fagent-tool-design-descriptions-errors\u002Fog.jpg","ai-engineer",[61,62,63],"en","de","hu","Tools für KI-Agenten gestalten: Namen, Beschreibungen, Schemas und Fehlermeldungen","Agent-Tools, die richtig gewählt und aufgerufen werden: aufgabenorientierte Tools, Beschreibungen, Schemas, kompakte Antworten und verwertbare Fehlermeldungen.","Ein Sockel mit drei Schlitzen; über dem mittleren steht ein passend breiter Block, daneben zwei Blöcke falscher Breite.","Tools für KI-Agenten gestalten · Balázs Csorba",[69,70,71,72,73],"Tool-Definitionen sind Prompt-Text. Anthropic nennt detaillierte Beschreibungen den mit Abstand wichtigsten Faktor für die Tool-Leistung.","Tools um Aufgaben herum entwerfen, nicht um Endpunkte: ein schedule_event schlägt list_users, list_events und create_event.","Fehler über das Schema erschweren: Enums, Pflicht-IDs, absolute Pfade, Strict Mode und keine Argumente, die der Code schon kennt.","Ergebnisse mit hohem Signalgehalt liefern, mit Namen statt undurchsichtiger IDs, standardmäßig paginiert und mit einem knappen Antwortformat.","Fehler sind Anweisungen. Sie als Tool-Ergebnis mit is_error oder isError zurückgeben und sagen, was schiefging und was als Nächstes zu versuchen ist.",[75,78,81,84,87],{"q":76,"a":77},"Wie lang sollte eine Tool-Beschreibung sein?","Anthropic empfiehlt mindestens drei bis vier Sätze pro Tool, bei komplexen Tools mehr: was das Tool tut, wann man es nutzt und wann nicht, was jeder Parameter bedeutet und welche Grenzen es hat. Eine Einzeilenbeschreibung wie „Holt den Aktienkurs für ein Tickersymbol“ lässt das Modell raten.",{"q":79,"a":80},"Wie viele Tools verkraftet ein Agent?","OpenAI rät zu weniger als 20 Funktionen zu Beginn eines Zuges. Anthropic schreibt, dass Claudes Tool-Auswahl ab 30 bis 50 Tools nachlässt, und empfiehlt Tool Search ab 10 Tools oder Definitionen über 10.000 Tokens. Darüber Tools bei Bedarf laden statt alle vorab.",{"q":82,"a":83},"Tool-Fehler als Exception werfen oder ans Modell zurückgeben?","Ausführungsfehler als Tool-Ergebnis zurückgeben, mit is_error true bei der Claude API oder isError true in MCP, damit sich das Modell korrigieren kann. Die MCP-Spezifikation reserviert JSON-RPC-Protokollfehler für unbekannte Tools und fehlerhafte Anfragen, von denen sich Modelle seltener erholen.",{"q":85,"a":86},"Ist ein Tool pro API-Endpunkt besser?","Meist nicht. Anthropic rät davon ab, jeden Endpunkt zu verpacken, und empfiehlt, mehrstufige Arbeit in einem Tool zu bündeln, OpenAI rät, Funktionen zusammenzulegen, die immer nacheinander aufgerufen werden. Weniger, dafür fähigere Tools verringern Auswahlfehler und sparen Kontext.",{"q":88,"a":89},"Kann ich MCP-Tool-Annotationen wie Read-only-Hinweisen trauen?","Nicht standardmäßig. Die MCP-Spezifikation verlangt, dass Clients Tool-Annotationen als nicht vertrauenswürdig behandeln, sofern sie nicht von vertrauenswürdigen Servern stammen. Sie für Anzeige und als Hinweis nutzen, aber Berechtigungen, Bestätigungen und Rate-Limits im eigenen Code durchsetzen.",[91,94,97,100,103,106,109,112,115,118,121],{"id":92,"title":93},"tools-are-prompts","Tool-Definitionen sind Prompts",{"id":95,"title":96},"choose-tools","Tools um Aufgaben bauen, nicht um Endpunkte",{"id":98,"title":99},"naming","Namen und Namensräume",{"id":101,"title":102},"descriptions","Beschreibungen, mit denen das Modell arbeiten kann",{"id":104,"title":105},"schemas","Schemas, die Fehler schwer machen",{"id":107,"title":108},"responses","Antworten: viel Signal, wenige Tokens",{"id":110,"title":111},"errors","Fehlermeldungen sind Anweisungen",{"id":113,"title":114},"many-tools","Wenn die Tool-Liste wächst",{"id":116,"title":117},"safety","Tools sind eine Angriffsfläche",{"id":119,"title":120},"evaluate-tools","Tools evaluieren, dann iterieren",{"id":122,"title":123},"sources","Quellen",[125,134,137,140,147,150,151,170,238,251,252,277,298,299,302,304,311,312,315,359,367,368,375,384,392,393,404,406,413,420,421,428,450,457,458,464,476,477,480,492,493],{"type":126,"content":127},"paragraph",[128,129,133],"Wenn ein Agent sich danebenbenimmt, will man zuerst den System-Prompt umschreiben. Oft liegt das Problem eine Ebene tiefer, in den Tools: ein Name, der zweierlei bedeuten kann, eine Beschreibung, die nie sagt, wann man das Tool nicht nutzen soll, ein Parameter namens ",{"tag":130,"children":131},"code",[132],"user",", der alles annimmt, eine Suche, die 40.000 Tokens JSON zurückgibt, oder ein Fehler, der nur „failed“ sagt. Das Modell liest all das in jedem Zug, und es kann nur so gut sein wie das, was es liest.",{"type":126,"content":135},[136],"Dieser Leitfaden sammelt, was Anthropic, OpenAI und die MCP-Spezifikation zum Tool-Design sagen, und macht daraus konkrete Regeln: welche Tools man baut, wie man sie benennt und beschreibt, wie man Schemas so formt, dass Fehler schwer werden, was man zurückgibt, wie man Fehler meldet, damit sich das Modell erholt, und was zu tun ist, wenn die Tool-Liste über ein paar Dutzend wächst. Die Beispiele stammen aus der Art von B2B-Shop- und Backoffice-Agenten, die ich baue.",{"type":138,"level":139,"id":92,"text":93},"heading",2,{"type":126,"content":141},[142,143,146],"Bei der Claude API wird der Parameter ",{"tag":130,"children":144},[145],"tools"," zu einem System-Prompt: die API baut aus Tool-Definitionen, Tool-Konfiguration und dem eigenen System-Prompt einen speziellen Prompt. Namen, Beschreibungen und Parameterbeschreibungen sind also Anweisungen im wörtlichsten Sinn. Anthropics Dokumentation nennt sehr detaillierte Beschreibungen den „mit Abstand wichtigsten Faktor für die Tool-Leistung“, und der Essay Building effective agents vom Dezember 2024 berichtet, dass das Team für seinen SWE-bench-Agenten mehr Zeit in die Optimierung der Tools gesteckt hat als in den Gesamt-Prompt.",{"type":126,"content":148},[149],"Derselbe Essay benennt die Disziplin: die Agent-Computer-Schnittstelle (ACI) mit derselben Sorgfalt gestalten wie eine Benutzeroberfläche und sich in die Lage des Modells versetzen. OpenAIs Version ist der Praktikantentest: könnte jemand die Funktion korrekt benutzen, wenn er nur sieht, was das Modell sieht? Wenn die Antwort ein Gespräch mit einem selbst erfordert, ist die Definition unvollständig.",{"type":138,"level":139,"id":95,"text":96},{"type":126,"content":152},[153,154,157,158,161,162,165,166,169],"Der häufigste Fehler ist, pro REST-Endpunkt ein Tool zu generieren. Anthropics Artikel zum Tool-Schreiben vom September 2025 sagt unverblümt, dass mehr Tools nicht immer zu besseren Ergebnissen führen, und nennt als Beispiel ein Tool ",{"tag":130,"children":155},[156],"schedule_event",", das freie Zeiten findet und den Termin bucht, statt getrennter Tools ",{"tag":130,"children":159},[160],"list_users",", ",{"tag":130,"children":163},[164],"list_events"," und ",{"tag":130,"children":167},[168],"create_event",", die der Agent verketten muss. OpenAI macht denselben Punkt von der anderen Seite: Funktionen zusammenlegen, die immer nacheinander aufgerufen werden, und weniger als 20 Funktionen zu Beginn eines Zuges anstreben.",{"type":171,"head":172,"rows":179},"table",[173,175,177],[174],"Endpunktorientiert",[176],"Aufgabenorientiert",[178],"Warum es hilft",[180,197,209,226],[181,191,195],[182,161,185,161,188],{"tag":130,"children":183},[184],"get_customer",{"tag":130,"children":186},[187],"list_orders",{"tag":130,"children":189},[190],"get_order_lines",[192],{"tag":130,"children":193},[194],"get_customer_context(customer_id)",[196],"Ein Aufruf liefert, was ein Agent für eine Support-Frage braucht",[198,203,207],[199,202],{"tag":130,"children":200},[201],"list_products"," + client-side filtering",[204],{"tag":130,"children":205},[206],"search_products(query, filters, limit)",[208],"Gefiltert wird im Code, nicht im Kontextfenster",[210,220,224],[211,161,214,161,217],{"tag":130,"children":212},[213],"create_pr",{"tag":130,"children":215},[216],"review_pr",{"tag":130,"children":218},[219],"merge_pr",[221],{"tag":130,"children":222},[223],"pull_request(action, ...)",[225],"Anthropics Vorschlag: verwandte Aktionen hinter einem action-Parameter bündeln",[227,232,236],[228,231],{"tag":130,"children":229},[230],"read_logs"," (full dump)",[233],{"tag":130,"children":234},[235],"search_logs(query, since, context_lines)",[237],"Liefert die relevanten Zeilen mit Kontext statt alles",{"type":126,"content":239},[240,241,244,245,250],"Bündeln hat Grenzen: ein einziges Tool ",{"tag":130,"children":242},[243],"do_anything(json)"," versteckt jede Entscheidung in einem Argument und macht Berechtigungen unmöglich. Ich trenne entlang der Risiken. Lesezugriffe dürfen breit sein; Schreibzugriffe, Zahlungen und alles Unumkehrbare bekommen ein eigenes Tool mit engem Schema, damit ein Freigabeschritt wie in ",{"tag":246,"to":247,"children":248},"link","\u002Fblog\u002Fhuman-in-the-loop-ai-agents",[249],"Human in the Loop für KI-Agenten"," sie gezielt treffen kann.",{"type":138,"level":139,"id":98,"text":99},{"type":126,"content":253},[254,255,258,259,261,262,264,265,268,269,272,273,276],"Sobald ein Agent Tools aus mehreren Diensten sieht, kollidieren Namen: ",{"tag":130,"children":256},[257],"search"," aus dem CRM, ",{"tag":130,"children":260},[257]," aus dem Wiki, ",{"tag":130,"children":263},[257]," aus dem Shop. Beide Anthropic-Quellen empfehlen ein Präfix nach Dienst und Ressource, etwa ",{"tag":130,"children":266},[267],"github_list_prs"," oder ",{"tag":130,"children":270},[271],"slack_send_message",", und der Artikel zum Tool-Schreiben ergänzt, dass Präfix- gegenüber Suffix-Schemata die Ergebnisse messbar verändern, also testen. Die technischen Grenzen sind großzügig: die Claude API akzeptiert Namen nach ",{"tag":130,"children":274},[275],"^[a-zA-Z0-9_-]{1,128}$",", und die MCP-Spezifikation sagt, Namen sollen 1 bis 128 Zeichen lang, case-sensitiv und pro Server eindeutig sein und aus Buchstaben, Ziffern, Unterstrich, Bindestrich und Punkt bestehen.",{"type":126,"content":278},[279,280,282,283,286,287,290,291,290,294,297],"Parameternamen verdienen dieselbe Sorgfalt. Anthropics Beispiel ist klein und überall kopierenswert: statt eines Parameters namens ",{"tag":130,"children":281},[132]," lieber ",{"tag":130,"children":284},[285],"user_id",". Im Shop-Kontext wird daraus ",{"tag":130,"children":288},[289],"sku"," gegen ",{"tag":130,"children":292},[293],"article_number",{"tag":130,"children":295},[296],"product_id","; den Begriff wählen, den die Nutzer sagen, und das Format in der Parameterbeschreibung erklären.",{"type":138,"level":139,"id":101,"text":102},{"type":126,"content":300},[301],"Anthropics Checkliste für eine Beschreibung lautet: was das Tool tut, wann man es nutzen soll und wann nicht, was jeder Parameter bedeutet und wie er das Verhalten ändert, und wichtige Einschränkungen, etwa was das Tool nicht liefert. Verlangt werden mindestens drei bis vier Sätze pro Tool. Der Artikel zum Tool-Schreiben beschreibt es als Einarbeitung eines neuen Kollegen: implizites Wissen explizit machen, auch Abfrageformate, Fachbegriffe und Beziehungen zwischen Ressourcen.",{"type":130,"code":303},"{\n  \"name\": \"shop_search_products\",\n  \"description\": \"Searches the B2B catalogue by keyword, part number or attribute and returns up to `limit` matching products with name, SKU, price for the current customer and stock status. Use it when the user asks about products, availability or alternatives. Do not use it for order history (use shop_get_orders) or for prices of other customers. Exact part numbers such as 'ART-10001' match only when passed in `sku`, not in `query`. Results are sorted by relevance; if there are more, the response contains `next_cursor`.\",\n  \"input_schema\": {\n    \"type\": \"object\",\n    \"properties\": {\n      \"query\": { \"type\": \"string\", \"description\": \"Free-text search in German or English, e.g. 'Edelstahl Schraube M8'\" },\n      \"sku\": { \"type\": \"string\", \"description\": \"Exact SKU, e.g. 'ART-10001'. Overrides query.\" },\n      \"in_stock_only\": { \"type\": \"boolean\", \"description\": \"Only return products available now. Default false.\" },\n      \"limit\": { \"type\": \"integer\", \"minimum\": 1, \"maximum\": 25, \"description\": \"Default 10.\" },\n      \"response_format\": { \"type\": \"string\", \"enum\": [\"concise\", \"detailed\"], \"description\": \"concise: name, SKU, price, stock. detailed: adds attributes and documents.\" }\n    },\n    \"additionalProperties\": false\n  },\n  \"input_examples\": [ { \"query\": \"Edelstahl Schraube M8\", \"in_stock_only\": true }, { \"sku\": \"ART-10001\" } ]\n}",{"type":126,"content":305},[306,307,310],"Für komplexe Eingaben akzeptiert die Claude API ",{"tag":130,"children":308},[309],"input_examples",": ein Array von Beispieleingaben, die gegen das Schema validieren müssen, sonst scheitert die Anfrage mit 400. Sie kosten etwa 20 bis 50 Tokens pro einfachem Beispiel und 100 bis 200 bei verschachtelten Objekten. OpenAI ergänzt eine beachtenswerte Warnung: Beispiele helfen normalen Modellen, können bei Reasoning-Modellen aber die Leistung verschlechtern, also messen, bevor man sie behält.",{"type":138,"level":139,"id":104,"text":105},{"type":126,"content":313},[314],"Building effective agents leiht sich einen Begriff aus der Fertigung: Poka-Yoke für Tools, also Argumente so ändern, dass Fehler schwerer werden. Das Beispiel ist konkret. Der SWE-bench-Agent lag nach einem Verzeichniswechsel bei relativen Dateipfaden immer wieder falsch, also änderte das Team das Tool so, dass es absolute Pfade verlangt, und das Modell nutzte sie danach fehlerfrei. Dieselbe Idee in anderen Formen:",{"type":316,"items":317},"list",[318,332,337,354],[319,323,324,327,328,331],{"tag":320,"children":321},"strong",[322],"Enums statt Freitext."," OpenAIs Gegenbeispiel ist ",{"tag":130,"children":325},[326],"toggle_light(on: bool, off: bool)",", das ungültige Zustände zulässt; ein einzelnes Enum ",{"tag":130,"children":329},[330],"state"," nicht.",[333,336],{"tag":320,"children":334},[335],"Nicht nach dem fragen, was der Code weiß."," Kennt die Sitzung Kunde und Bestellung schon, im Code einsetzen. OpenAI: das Modell keine Argumente füllen lassen, die man schon kennt.",[338,341,342,345,346,349,350,353],{"tag":320,"children":339},[340],"Strict Mode einschalten."," OpenAI empfiehlt, ihn immer zu aktivieren; er verlangt ",{"tag":130,"children":343},[344],"additionalProperties: false"," und jede Property in ",{"tag":130,"children":347},[348],"required",", optionale Felder als nullable. Bei der Claude API garantiert ",{"tag":130,"children":351},[352],"strict: true",", dass Eingaben dem Schema entsprechen.",[355,358],{"tag":320,"children":356},[357],"Nach einer Begründung fragen, nicht nach Reasoning."," Anthropic warnt, dass ein Parameter, der das schrittweise Denken des Modells verlangt, eine Ablehnung auslösen kann; stattdessen nach kurzer Erklärung oder Belegen fragen.",{"type":126,"content":360},[361,362,366],"Strikte Schemas garantieren die Form, nicht die Wahrheit. Ein gültiges SKU-Format kann trotzdem ein Produkt bezeichnen, das es nicht gibt, deshalb muss der Server validieren und einen nützlichen Fehler liefern. Garantien und Lücken der Schema-Durchsetzung beschreibt ",{"tag":246,"to":363,"children":364},"\u002Fblog\u002Fstructured-outputs-json-schema-llm",[365],"strukturierte Ausgaben mit JSON Schema",".",{"type":138,"level":139,"id":107,"text":108},{"type":126,"content":369},[370,371,374],"Was ein Tool zurückgibt, landet im Kontextfenster und bleibt dort für den Rest des Laufs. Anthropic rät, nur Informationen mit hohem Signalgehalt zurückzugeben, und stellte fest, dass das Auflösen beliebiger alphanumerischer UUIDs in sprechende Namen die Präzision bei Retrieval-Aufgaben verbesserte. Außerdem wird ein Enum ",{"tag":130,"children":372},[373],"response_format"," vorgeschlagen, damit der Agent wählen kann: im Slack-Beispiel brauchte die ausführliche Antwort 206 Tokens, die knappe 72, etwa ein Drittel. Für alles, was groß werden kann, Paginierung, Bereichsauswahl, Filter oder Kürzung mit vernünftigen Standardwerten einbauen; Claude Code begrenzt Tool-Antworten zum Vergleich standardmäßig auf 25.000 Tokens.",{"type":376,"attrs":377,"inner":381,"caption":382},"diagram",{"viewBox":378,"role":379,"aria-labelledby":380},"0 0 720 170","img","atd1-t atd1-d","\u003Ctitle id=\"atd1-t\">Ein Tool-Aufruf, von der Wahl bis zum Ergebnis\u003C\u002Ftitle>\u003Cdesc id=\"atd1-d\">Das Modell wählt ein Tool anhand von Name und Beschreibung, füllt das Schema, der Server validiert und führt aus und liefert entweder ein kompaktes Ergebnis oder einen verwertbaren Fehler.\u003C\u002Fdesc>\u003Cdefs>\u003Cmarker id=\"atd1-ah\" viewBox=\"0 0 10 10\" refX=\"9\" refY=\"5\" markerWidth=\"7\" markerHeight=\"7\" orient=\"auto-start-reverse\">\u003Cpath d=\"M0 0L10 5L0 10z\" class=\"d-head\" \u002F>\u003C\u002Fmarker>\u003C\u002Fdefs>\u003Crect x=\"20\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-box\" \u002F>\u003Ctext x=\"79\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Wählen\u003C\u002Ftext>\u003Ctext x=\"79\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">Name + Beschreibung\u003C\u002Ftext>\u003Cpath d=\"M138 85H158\" class=\"d-line\" marker-end=\"url(#atd1-ah)\" \u002F>\u003Crect x=\"160\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-sky\" \u002F>\u003Ctext x=\"220\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Füllen\u003C\u002Ftext>\u003Ctext x=\"220\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">striktes Schema\u003C\u002Ftext>\u003Cpath d=\"M279 85H299\" class=\"d-line\" marker-end=\"url(#atd1-ah)\" \u002F>\u003Crect x=\"301\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-gold\" \u002F>\u003Ctext x=\"360\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Validieren\u003C\u002Ftext>\u003Ctext x=\"360\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">serverseitig\u003C\u002Ftext>\u003Cpath d=\"M419 85H439\" class=\"d-line\" marker-end=\"url(#atd1-ah)\" \u002F>\u003Crect x=\"441\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-mint\" \u002F>\u003Ctext x=\"500\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Ergebnis\u003C\u002Ftext>\u003Ctext x=\"500\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">knapp, paginiert\u003C\u002Ftext>\u003Cpath d=\"M560 85H580\" class=\"d-line\" marker-end=\"url(#atd1-ah)\" \u002F>\u003Crect x=\"582\" y=\"47\" width=\"118\" height=\"76\" rx=\"10\" class=\"d-box d-fill-accent\" \u002F>\u003Ctext x=\"641\" y=\"81\" text-anchor=\"middle\" class=\"d-text\">Oder Fehler\u003C\u002Ftext>\u003Ctext x=\"641\" y=\"103\" text-anchor=\"middle\" class=\"d-small\">was als Nächstes\u003C\u002Ftext>",[383],"Jedes Feld ist eine Stelle, an der der Tool-Designer, nicht das Modell, entscheidet, wie wahrscheinlich der nächste Schritt gelingt.",{"type":126,"content":385},[386,387,391],"Große Ergebnisse sind auch der Haupttreiber von ",{"tag":246,"to":388,"children":389},"\u002Fblog\u002Fcontext-rot-compaction-long-running-agents",[390],"Context Rot bei lang laufenden Agenten",". Ein Tool, das einen Cursor und die ersten zehn Treffer liefert, ist jetzt billiger und hält den Agenten fünfzig Züge später schärfer.",{"type":138,"level":139,"id":110,"text":111},{"type":126,"content":394},[395,396,399,400,403],"Ein Tool-Fehler ist der nächste Prompt, den das Modell liest, also so schreiben. Die Claude API transportiert Ausführungsfehler als normales ",{"tag":130,"children":397},[398],"tool_result"," mit ",{"tag":130,"children":401},[402],"is_error: true",", und Anthropics Tipp ist konkret: statt eines generischen „failed“ sagen, was schiefging und was als Nächstes zu versuchen ist, zum Beispiel „Rate limit exceeded. Retry after 60 seconds.“ Bei ungültigen Aufrufen wie einem fehlenden Parameter versucht Claude es zwei- bis dreimal mit Korrekturen, bevor es sich beim Nutzer entschuldigt, eine präzise Meldung rettet also meist den Lauf.",{"type":130,"code":405},"\u002F\u002F Bad: the model learns nothing\n{ \"type\": \"tool_result\", \"tool_use_id\": \"toolu_01\", \"is_error\": true, \"content\": \"Error 422\" }\n\n\u002F\u002F Good: what failed, why, and the next valid move\n{ \"type\": \"tool_result\", \"tool_use_id\": \"toolu_01\", \"is_error\": true,\n  \"content\": \"No product with sku 'ART-1001'. SKUs have 5 digits after 'ART-'. Closest matches: ART-10010 (Edelstahl Schraube M8), ART-10011 (M10). Call shop_search_products with sku set to one of these, or with query if the user gave a description.\" }",{"type":126,"content":407},[408,409,412],"MCP zieht dieselbe Linie formal. Die Spezifikation trennt Protokollfehler, also normale JSON-RPC-Fehler für unbekannte Tools, fehlerhafte Anfragen und Serverausfälle, von Tool-Ausführungsfehlern, die im Ergebnis mit ",{"tag":130,"children":410},[411],"isError: true"," gemeldet werden: API-Ausfälle, Validierungsfehler wie ein Datum im falschen Format und Fehler der Geschäftslogik. Clients sollen Ausführungsfehler ans Modell weitergeben, damit es sich selbst korrigieren kann; Protokollfehler führen seltener zur Erholung.",{"type":414,"variant":415,"title":416,"body":417},"callout","tip","Nie einen Stacktrace zurückgeben",[418],[419],"Ein Traceback kostet Hunderte Tokens, sagt dem Modell nichts Verwertbares und kann Dateipfade, Hostnamen oder Geheimnisse in einen Kontext bringen, der geloggt oder abgegriffen werden kann. Den Trace serverseitig mit der Request-ID loggen und einen Satz zurückgeben, mit dem das Modell arbeiten kann.",{"type":138,"level":139,"id":113,"text":114},{"type":126,"content":422},[423,424,427],"Wer ein paar MCP-Server anbindet, hat schnell hundert Tools. Anthropic beziffert die Kosten: ein typisches Setup mit GitHub, Slack, Sentry, Grafana und Splunk kann vor jeder Arbeit etwa 55.000 Tokens an Definitionen verbrauchen, und Claudes Fähigkeit, das richtige Tool zu wählen, lässt ab 30 bis 50 verfügbaren Tools nach. Das Tool-Search-Tool adressiert beides. Man schickt alle Definitionen, markiert die meisten mit ",{"tag":130,"children":425},[426],"defer_loading: true",", und Claude durchsucht Namen, Beschreibungen und Argumentnamen per Regex oder BM25 und lädt nur die Treffer, meist drei bis fünf, was laut Anthropic die Definitions-Tokens um über 85 Prozent senkt.",{"type":316,"items":429},[430,435,440,445],[431,434],{"tag":320,"children":432},[433],"Wann umsteigen:"," Anthropic empfiehlt Tool Search ab 10 Tools, Definitionen über 10.000 Tokens oder mehreren MCP-Servern; unter 10 Tools, die alle immer genutzt werden, normal laden.",[436,439],{"tag":320,"children":437},[438],"Häufige geladen lassen:"," die drei bis fünf meistgenutzten Tools nicht zurückstellen.",[441,444],{"tag":320,"children":442},[443],"Für die Suche schreiben:"," einheitliche Präfixe lassen eine Abfrage einen ganzen Dienst treffen; in Beschreibungen die Wörter der Nutzer verwenden.",[446,449],{"tag":320,"children":447},[448],"Cache bleibt intakt:"," zurückgestellte Tools sind nicht im Prompt-Präfix, das Entdecken eines Tools invalidiert den Prompt-Cache also nicht.",{"type":126,"content":451},[452,453,366],"Die grundsätzliche Wahl zwischen MCP-Servern, CLIs und Skills für Coding-Agenten behandelt ",{"tag":246,"to":454,"children":455},"\u002Fblog\u002Fagents-md-skills-mcp-cli-decision-matrix",[456],"AGENTS.md, Skills, MCP oder CLI",{"type":138,"level":139,"id":116,"text":117},{"type":126,"content":459},[460,461,463],"Tool-Ergebnisse enthalten oft Inhalte, die man nicht kontrolliert: Webseiten, eingehende E-Mails, Uploads, Drittanbieter-APIs. Anthropics Dokumentation verlangt, diese Inhalte als nicht vertrauenswürdig zu behandeln, weil sie an das Modell gerichtete Anweisungen enthalten können, und sie in ",{"tag":130,"children":462},[398],"-Blöcken zu halten statt im System-Prompt oder in normalem Nutzertext. Die MCP-Spezifikation ergänzt, dass Clients Tool-Annotationen als nicht vertrauenswürdig behandeln müssen, sofern sie nicht von vertrauenswürdigen Servern stammen, dass Server alle Eingaben validieren, Zugriffe kontrollieren, Aufrufe begrenzen und Ausgaben bereinigen müssen und dass ein Mensch Tool-Aufrufe ablehnen können soll.",{"type":126,"content":465},[466,467,471,472,366],"Praktisch heißt das: Berechtigungen in die Tool-Implementierung, nicht in die Beschreibung; Bestätigung für Schreibzugriffe verlangen; und nie private Daten, nicht vertrauenswürdige Inhalte und einen ausgehenden Kanal ohne Plan in einem Agenten kombinieren. Die Muster stehen in ",{"tag":246,"to":468,"children":469},"\u002Fblog\u002Fprompt-injection-lethal-trifecta-patterns",[470],"die tödliche Dreifaltigkeit und sechs Entwurfsmuster",", die serverseitigen Prüfungen in der ",{"tag":246,"to":473,"children":474},"\u002Fblog\u002Fmcp-server-security-checklist",[475],"MCP-Sicherheits-Checkliste",{"type":138,"level":139,"id":119,"text":120},{"type":126,"content":478},[479],"Anthropics Vorgehen ist der nützlichste Teil des Artikels zum Tool-Schreiben: einen schnellen Prototyp bauen, realistische Evaluationsaufgaben schreiben, die viele Tool-Aufrufe brauchen können, sie laufen lassen und die Transkripte lesen. Neben dem Aufgabenerfolg die Gesamtzahl der Tool-Aufrufe, Tokens, Laufzeit und Tool-Fehler verfolgen und einen zurückgehaltenen Testsatz behalten, damit man Beschreibungen nicht an die eigenen Tests überanpasst. Redundante Aufrufe deuten auf fehlende Paginierung oder Filter; wiederholt ungültige Argumente auf eine unklare Beschreibung oder ein Schema, das den Fehler zulässt.",{"type":126,"content":481},[482,483,487,488,366],"Wie man die Läufe selbst bewertet, Trajektorien wie Ergebnisse, behandelt ",{"tag":246,"to":484,"children":485},"\u002Fblog\u002Fevaluating-ai-agents-trajectories",[486],"KI-Agenten evaluieren",". Wie die Schleife um diese Tools funktioniert, erklärt ",{"tag":246,"to":489,"children":490},"\u002Fblog\u002Fagent-loop-explained",[491],"die Agentenschleife, erklärt",{"type":138,"level":139,"id":122,"text":123},{"type":316,"ordered":494,"items":495},true,[496,500,503,506,509,512,515],[497],{"tag":498,"href":38,"children":499},"a",[37],[501],{"tag":498,"href":41,"children":502},[40],[504],{"tag":498,"href":44,"children":505},[43],[507],{"tag":498,"href":47,"children":508},[46],[510],{"tag":498,"href":50,"children":511},[49],[513],{"tag":498,"href":53,"children":514},[52],[516],{"tag":498,"href":56,"children":517},[55],[519,589,637,695],{"slug":520,"published":521,"minutes":522,"category":7,"tags":523,"keywords":529,"about":541,"sources":549,"cover":583,"og":584,"expertise":59,"locales":585,"lang":62,"title":586,"description":587,"coverAlt":588},"context-rot-compaction-long-running-agents","2026-10-16",10,[524,525,526,527,528],"Context rot","Compaction","Context engineering","Long-running agents","Agent memory",[530,531,532,533,534,535,536,537,538,539,540],"context rot","context rot LLM","compaction AI agents","context engineering","long-running agents context window","Claude compaction API","context editing clear tool results","OpenAI responses compaction","lost in the middle LLM","agent context management","sub-agents context isolation",[542,545,548],{"name":543,"url":544},"Context window","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model#Context_window",{"name":546,"url":547},"Attention (machine learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAttention_(machine_learning)",{"name":27,"url":28},[550,553,556,559,562,565,568,571,574,577,580],{"title":551,"url":552},"Chroma: Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)","https:\u002F\u002Fresearch.trychroma.com\u002Fcontext-rot",{"title":554,"url":555},"Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":557,"url":558},"Modarressi et al.: NoLiMa: Long-Context Evaluation Beyond Literal Matching (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.05167",{"title":560,"url":561},"Anthropic: Effective context engineering for AI agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-context-engineering-for-ai-agents",{"title":563,"url":564},"Anthropic: Effective harnesses for long-running agents (Nov 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-harnesses-for-long-running-agents",{"title":566,"url":567},"Claude API docs: Compaction at a token threshold","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-threshold",{"title":569,"url":570},"Claude API docs: Compaction on demand","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-on-demand",{"title":572,"url":573},"Claude API docs: Context editing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcontext-editing",{"title":575,"url":576},"Claude API docs: Memory tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"title":578,"url":579},"OpenAI API docs: Compaction","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fcompaction",{"title":581,"url":582},"Cognition: Don't Build Multi-Agents","https:\u002F\u002Fcognition.ai\u002Fblog\u002Fdont-build-multi-agents","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcontext-rot-compaction-long-running-agents\u002Fog.jpg",[61,62,63],"Context Rot bei langlaufenden Agenten: Leeren, Compaction, Memory und Sub-Agenten","Warum die Genauigkeit von LLMs mit wachsendem Kontext sinkt und wie Leeren, Compaction, Notizen und Sub-Agenten lange Agentenläufe stabil halten.","Eine kleine Presse drückt einen hohen Blätterstapel zu einem kurzen, zwei Notizen zweigen ab.",{"slug":590,"published":521,"minutes":591,"category":7,"tags":592,"keywords":597,"about":608,"sources":615,"cover":631,"og":632,"expertise":59,"locales":633,"lang":62,"title":634,"description":635,"coverAlt":636},"browser-agents-e2e-testing-playwright",7,[593,594,595,12,596],"Playwright","E2E testing","Coding agents","Test automation",[598,599,600,601,602,603,604,605,606,607],"playwright test agents","playwright planner generator healer","ai e2e testing","playwright mcp","llm generated playwright tests","self-healing tests","browser agent testing","playwright init-agents","ai test automation 2026","playwright cli skills",[609,611,614],{"name":593,"url":610},"https:\u002F\u002Fplaywright.dev\u002F",{"name":612,"url":613},"End-to-end testing","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSystem_testing",{"name":30,"url":31},[616,619,622,625,628],{"title":617,"url":618},"Playwright docs: Test agents (planner, generator, healer)","https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Ftest-agents",{"title":620,"url":621},"Microsoft: Playwright MCP README (MCP vs CLI, accessibility snapshots)","https:\u002F\u002Fgithub.com\u002Fmicrosoft\u002Fplaywright-mcp",{"title":623,"url":624},"Playwright docs: Best practices","https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Fbest-practices",{"title":626,"url":627},"Playwright docs: Locators","https:\u002F\u002Fplaywright.dev\u002Fdocs\u002Flocators",{"title":629,"url":630},"Browserbase: Stagehand README (act, extract, observe)","https:\u002F\u002Fgithub.com\u002Fbrowserbase\u002Fstagehand","\u002Fimages\u002Fblog\u002Fbrowser-agents-e2e-testing-playwright\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fbrowser-agents-e2e-testing-playwright\u002Fog.jpg",[61,62,63],"Browser-Agenten für E2E-Tests: Agenten Playwright-Tests schreiben lassen, nicht ausführen","Wo KI-Agenten bei E2E-Tests helfen: Playwright Planner, Generator und Healer, MCP oder CLI und die Leitplanken, die geheilte Tests ehrlich halten.","Kleine Quadrate links reichen ein flaches Rechteck an eine geschlossene rechteckige Schleife rechts.",{"slug":638,"published":521,"minutes":639,"category":7,"tags":640,"keywords":644,"about":656,"sources":664,"cover":689,"og":690,"expertise":59,"locales":691,"lang":62,"title":692,"description":693,"coverAlt":694},"a2a-protocol-agent-interoperability",12,[641,9,12,642,643],"A2A","Interoperability","Agent security",[645,646,647,648,649,650,651,652,653,654,655],"a2a protocol","agent2agent protocol","a2a vs mcp","a2a agent card","agent-card.json well-known","a2a protocol 1.0","a2a task lifecycle","agent to agent communication protocol","a2a security","a2a json-rpc grpc","agent session smuggling",[657,660,661],{"name":658,"url":659},"Agent2Agent protocol","https:\u002F\u002Fa2a-protocol.org\u002F",{"name":30,"url":31},{"name":662,"url":663},"Linux Foundation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLinux_Foundation",[665,668,671,674,677,680,683,686],{"title":666,"url":667},"A2A Protocol Specification (latest, v1.0)","https:\u002F\u002Fa2a-protocol.org\u002Flatest\u002Fspecification\u002F",{"title":669,"url":670},"A2A: a2a.proto, the normative data model (GitHub)","https:\u002F\u002Fgithub.com\u002Fa2aproject\u002FA2A\u002Fblob\u002Fmain\u002Fspecification\u002Fa2a.proto",{"title":672,"url":673},"A2A docs: A2A and MCP","https:\u002F\u002Fa2a-protocol.org\u002Flatest\u002Ftopics\u002Fa2a-and-mcp\u002F",{"title":675,"url":676},"A2A docs: Agent discovery","https:\u002F\u002Fa2a-protocol.org\u002Flatest\u002Ftopics\u002Fagent-discovery\u002F",{"title":678,"url":679},"Google Developers Blog: Announcing the Agent2Agent Protocol (Apr 2025)","https:\u002F\u002Fdevelopers.googleblog.com\u002Fen\u002Fa2a-a-new-era-of-agent-interoperability\u002F",{"title":681,"url":682},"Linux Foundation: Launch of the Agent2Agent Protocol Project (Jun 2025)","https:\u002F\u002Fwww.linuxfoundation.org\u002Fpress\u002Flinux-foundation-launches-the-agent2agent-protocol-project-to-enable-secure-intelligent-communication-between-ai-agents",{"title":684,"url":685},"Linux Foundation: A2A surpasses 150 organizations in its first year (Apr 2026)","https:\u002F\u002Fwww.linuxfoundation.org\u002Fpress\u002Fa2a-protocol-surpasses-150-organizations-lands-in-major-cloud-platforms-and-sees-enterprise-production-use-in-first-year",{"title":687,"url":688},"Unit 42: Agent Session Smuggling in Agent2Agent Systems (Oct 2025)","https:\u002F\u002Funit42.paloaltonetworks.com\u002Fagent-session-smuggling-in-agent2agent-systems\u002F","\u002Fimages\u002Fblog\u002Fa2a-protocol-agent-interoperability\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fa2a-protocol-agent-interoperability\u002Fog.jpg",[61,62,63],"Das A2A-Protokoll erklärt: Agent Cards, Tasks und sein Platz neben MCP","Was das Agent2Agent-Protokoll in v1.0 standardisiert: Agent Cards, Tasks, Bindings, Sicherheit, der Unterschied zu MCP und wann es sich lohnt.","Zwei geschlossene rechteckige Module stehen sich gegenüber und sind durch eine Brücke mit Pfeilen in beide Richtungen verbunden.",{"slug":696,"published":697,"minutes":6,"category":7,"tags":698,"keywords":704,"about":713,"sources":723,"cover":772,"og":773,"expertise":59,"locales":774,"lang":62,"title":775,"description":776,"coverAlt":777},"ai-assisted-development-economics","2026-10-01",[699,700,701,702,703],"AI coding agents","Developer productivity","Engineering economics","Team cost","GDPR",[705,706,707,708,709,710,711,712],"AI coding agents cost","developer productivity AI study","METR AI developer slowdown","AI coding break-even cost model","one senior engineer vs team","AI coding agent vs agency","DORA AI adoption report","GDPR processor contract AI coding tools",[714,717,720],{"name":715,"url":716},"General Data Protection Regulation","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",{"name":718,"url":719},"Randomized controlled trial","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRandomized_controlled_trial",{"name":721,"url":722},"Bus factor","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBus_factor",[724,727,730,733,736,739,742,745,748,751,754,757,760,763,766,769],{"title":725,"url":726},"METR: early-2025 AI and experienced open-source developers","https:\u002F\u002Fmetr.org\u002Fblog\u002F2025-07-10-early-2025-ai-experienced-os-dev-study\u002F",{"title":728,"url":729},"Becker et al.: arXiv 2507.09089","https:\u002F\u002Farxiv.org\u002Fabs\u002F2507.09089",{"title":731,"url":732},"METR: developer productivity experiment design, February 2026","https:\u002F\u002Fmetr.org\u002Fblog\u002F2026-02-24-uplift-update\u002F",{"title":734,"url":735},"Peng et al.: GitHub Copilot controlled experiment, arXiv 2302.06590","https:\u002F\u002Farxiv.org\u002Fhtml\u002F2302.06590v1",{"title":737,"url":738},"Cui et al.: three field experiments with software developers","https:\u002F\u002Fwww.microsoft.com\u002Fen-us\u002Fresearch\u002F?p=1148213",{"title":740,"url":741},"DORA: State of AI-assisted Software Development 2025","https:\u002F\u002Fresearch.google\u002Fpubs\u002Fdora-2025-state-of-ai-assisted-software-development-report\u002F",{"title":743,"url":744},"Google Cloud: highlights from the 2024 DORA report","https:\u002F\u002Fcloud.google.com\u002Fblog\u002Fproducts\u002Fdevops-sre\u002Fannouncing-the-2024-dora-report",{"title":746,"url":747},"Stack Overflow: Developer Survey 2025, AI","https:\u002F\u002Fsurvey.stackoverflow.co\u002F2025\u002Fai",{"title":749,"url":750},"Ziftci et al.: Migrating Code At Scale With LLMs At Google","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.09691",{"title":752,"url":753},"Alshahwan et al.: Automated Unit Test Improvement using Large Language Models at Meta","https:\u002F\u002Farxiv.org\u002Fabs\u002F2402.09171",{"title":755,"url":756},"GitClear: AI Copilot Code Quality: 2025 Look Back at 12 Months of Data","https:\u002F\u002Fwww.gitclear.com\u002Fai_assistant_code_quality_2025_research",{"title":758,"url":759},"GDPR, Regulation (EU) 2016\u002F679, Article 28","https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Freg\u002F2016\u002F679\u002Foj\u002Feng",{"title":761,"url":762},"Anthropic: Commercial Terms of Service","https:\u002F\u002Fwww.anthropic.com\u002Flegal\u002Fcommercial-terms",{"title":764,"url":765},"Claude: pricing","https:\u002F\u002Fclaude.com\u002Fpricing",{"title":767,"url":768},"Claude Platform: data residency","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fdata-residency",{"title":770,"url":771},"GitHub Copilot: plans and pricing","https:\u002F\u002Fgithub.com\u002Ffeatures\u002Fcopilot\u002Fplans","\u002Fimages\u002Fblog\u002Fai-assisted-development-economics\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fai-assisted-development-economics\u002Fog.jpg",[61,62,63],"Ein Senior mit Coding-Agenten gegen ein Team: was die Belege sagen","Die Studien von METR, DORA, Microsoft und GitHub zu KI-Coding-Tools: was sie nicht beweisen, und ein Kostenmodell für einen Senior gegen ein Team oder eine Agentur.","Eine Waage im Gleichgewicht: drei kleine Quadrate in der einen Waagschale, ein größeres Rechteck in der anderen.",1792222777427]