[{"data":1,"prerenderedAt":755},["ShallowReactive",2],{"blog-aftersales-agent-rma-spare-parts-en":3},{"slug":4,"published":5,"minutes":6,"category":7,"tags":8,"keywords":14,"about":25,"sources":35,"cover":71,"og":72,"expertise":73,"locales":74,"lang":75,"title":78,"description":79,"coverAlt":80,"metaTitle":81,"takeaways":82,"faq":88,"toc":104,"blocks":135,"others":483},"aftersales-agent-rma-spare-parts","2026-10-13",8,"agents",[9,10,11,12,13],"After-sales","Spare parts","RMA","AI agents","Aftermarket",[15,16,17,18,19,20,21,22,23,24],"AI agent for after-sales service","spare parts identification AI","rma automation","serial number to spare part","service parts agent","service knowledge RAG","first-time-fix rate","aftermarket revenue","exploded diagram parts catalog","part number hallucination",[26,29,32],{"name":27,"url":28},"Return merchandise authorization","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FReturn_merchandise_authorization",{"name":30,"url":31},"Bill of materials","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBill_of_materials",{"name":33,"url":34},"S1000D","https:\u002F\u002Fwww.s-series.org\u002Fs1000d",[36,39,42,45,48,51,54,57,59,62,65,68],{"title":37,"url":38},"McKinsey: Industrial aftermarket services, growing the core (2017)","https:\u002F\u002Fwww.mckinsey.com\u002Findustries\u002Findustrials\u002Four-insights\u002Findustrial-aftermarket-services-growing-the-core",{"title":40,"url":41},"McKinsey: Why aftermarket and service are vital to OEMs (2024)","https:\u002F\u002Fwww.mckinsey.com\u002Findustries\u002Findustrials\u002Four-insights\u002Fwhy-aftermarket-and-service-are-vital-to-oems-and-how-to-excel",{"title":43,"url":44},"BCG: Aftermarket services drive growth for industrial manufacturers (2025)","https:\u002F\u002Fwww.bcg.com\u002Fpublications\u002F2025\u002Faftermarket-services-drive-growth-for-industrial-manufacturers",{"title":46,"url":47},"Aquant: 2026 Field Service Benchmark (press release, 19 Feb 2026)","https:\u002F\u002Fwww.globenewswire.com\u002Fnews-release\u002F2026\u002F02\u002F19\u002F3241231\u002F0\u002Fen\u002Faquant-s-2026-field-service-benchmark-companies-can-unlock-up-to-26-in-service-cost-savings-by-scaling-knowledge-across-the-workforce.html",{"title":49,"url":50},"Microsoft Learn: Sales returns in Dynamics 365 Supply Chain Management","https:\u002F\u002Flearn.microsoft.com\u002Fen-us\u002Fdynamics365\u002Fsupply-chain\u002Fsales-marketing\u002Fsales-returns",{"title":52,"url":53},"SAP Learning: Configuring and creating bills of material in SAP S\u002F4HANA Service","https:\u002F\u002Flearning.sap.com\u002Fcourses\u002Fconfiguring-organizational-and-master-data-in-sap-s-4hana-service\u002Fconfiguring-and-creating-bills-of-material",{"title":55,"url":56},"Spracklen et al.: package hallucinations by code-generating LLMs (USENIX Security 2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2406.10279",{"title":58,"url":34},"S-Series: S1000D specification",{"title":60,"url":61},"IEC 61406-2:2024 Identification link, Part 2","https:\u002F\u002Fwebstore.iec.ch\u002Fen\u002Fpublication\u002F77973",{"title":63,"url":64},"Directive (EU) 2024\u002F1799 on the repair of goods, EUR-Lex","https:\u002F\u002Feur-lex.europa.eu\u002Feli\u002Fdir\u002F2024\u002F1799\u002Foj\u002Feng",{"title":66,"url":67},"European Commission: Machinery Regulation (EU) 2023\u002F1230","https:\u002F\u002Fsingle-market-economy.ec.europa.eu\u002Fsectors\u002Fmechanical-engineering\u002Fmachinery_en",{"title":69,"url":70},"X12: transaction sets (180 Return Merchandise Authorization and Notification)","https:\u002F\u002Fx12.org\u002Fproducts\u002Ftransaction-sets","\u002Fimages\u002Fblog\u002Faftersales-agent-rma-spare-parts\u002Fcover.webp","\u002Fimages\u002Fblog\u002Faftersales-agent-rma-spare-parts\u002Fog.jpg","b2b-ecommerce-developer",[75,76,77],"en","de","hu","AI agent for after-sales service: RMA, spare parts and exact-match rules","How to build an AI agent for after-sales service: serial number to spare part, RMA drafting, manual RAG, and the rule that identifiers only come from tools.","A spare part rises from an open box, with a return arrow from a parcel.","AI agent for after-sales service · Balázs Csorba",[83,84,85,86,87],"An after-sales agent covers intake, asset identification, spare-part lookup, RMA creation and status, and credit-note follow-up, while safety advice, goodwill and credit decisions stay human.","Part numbers, serial numbers, RMA and credit-note numbers may only appear in an answer if a tool returned them in that turn; anything else is rejected and escalated.","A study of 2.23 million package recommendations found 19.7% pointed to packages that do not exist, which is why an agent must never generate identifiers.","Aftermarket is where industrial margin sits: McKinsey reports 25% average EBIT for aftermarket services versus 10% for new equipment, and BCG puts spare-part gross margins at about 50%.","Measure first-time-fix rate, RMA cycle time, handling time per ticket and the share of self-served part orders; Aquant’s 2026 benchmark puts median first-time-fix at 77%.",[89,92,95,98,101],{"q":90,"a":91},"What can an AI agent do in after-sales service?","It can take in service tickets, identify the machine from its serial number, look up spare parts in the ERP bill of materials and the catalog, draft return requests, report RMA, shipment and credit-note status, and answer from manuals with citations. Commitments such as orders, RMA confirmations and credit notes need human approval.",{"q":93,"a":94},"How does an agent find the right spare part from a serial number?","It resolves the serial number to an equipment record in the ERP, explodes the equipment bill of materials, and matches the candidate parts against the catalog for price and availability. The agent never states a part number it did not receive from one of these tool calls.",{"q":96,"a":97},"Why must an after-sales agent not generate part numbers?","Language models invent plausible identifiers. In a USENIX Security 2025 study, 19.7% of package names recommended by code models did not exist, and many invented names repeated across runs. A wrong part number in after-sales means a wrong shipment, a failed visit and a return, so identifiers must come from tools only.",{"q":99,"a":100},"Does the EU Right to Repair Directive apply to B2B machinery?","Directive (EU) 2024\u002F1799 applies from 31 July 2026, but it concerns consumer goods listed in its Annex II, not industrial machinery in general. For machine builders the more relevant change is the Machinery Regulation 2023\u002F1230, which from 20 January 2027 allows instructions in digital form under specific conditions.",{"q":102,"a":103},"How do you measure the value of an after-sales agent?","Set baselines and track first-time-fix rate, RMA cycle time, handling time per ticket, spare-part attach rate and the share of parts transactions customers complete themselves. No published ROI figure for after-sales agents exists, so your own before-and-after numbers are the evidence.",[105,108,111,114,117,120,123,126,129,132],{"id":106,"title":107},"what-an-aftersales-agent-owns","What does an after-sales agent own?",{"id":109,"title":110},"the-happy-path-serial-number-to-rma","How does the agent get from a serial number to an RMA?",{"id":112,"title":113},"exact-match-or-nothing","Why exact match or nothing?",{"id":115,"title":116},"who-owns-which-data","Which system owns which after-sales data?",{"id":118,"title":119},"service-knowledge-rag-over-manuals-and-diagrams","How should the agent use manuals and diagrams?",{"id":121,"title":122},"permissions-and-guardrails","Which actions may the agent take on its own?",{"id":124,"title":125},"what-it-is-worth","What is an after-sales agent worth?",{"id":127,"title":128},"when-not-to-build-one","When should you not build an after-sales agent?",{"id":130,"title":131},"checklist","A build checklist for an after-sales agent",{"id":133,"title":134},"sources","Sources",[136,144,153,156,159,162,171,172,175,181,214,217,218,221,233,236,239,240,243,247,255,256,259,274,277,278,286,359,370,371,374,404,407,414,415,418,419,437,444,445],{"type":137,"content":138},"paragraph",[139,140,143],"An ",{"tag":141,"children":142},"strong",[15]," handles the life of a product after the sale: a service ticket comes in, the agent identifies the machine, finds the spare part, drafts a return or replacement, and follows the shipment and the credit note until the case is closed. It does that through tools over the ERP, the catalog, the document store and the CRM, and it follows one hard rule: part numbers, serial numbers and RMA numbers come from those tools, never from the model.",{"type":137,"content":145},[146,147,152],"This article covers what the agent owns, the happy path from serial number to RMA, the exact-match rule and how to enforce it, the data ownership map, retrieval over manuals and diagrams, permissions and approval gates, the aftermarket business case and when not to build one. Pre-sale questions on the shop are a different job, covered in ",{"tag":148,"to":149,"children":150},"link","\u002Fblog\u002Fai-assistant-b2b-shop-customer-support",[151],"AI support for B2B shops",".",{"type":154,"level":155,"id":106,"text":107},"heading",2,{"type":137,"content":157},[158],"It owns the routine post-sale work: intake and triage of defects, wrong deliveries, warranty cases and wear parts; asset identification; spare-part lookup; RMA creation and status; shipment and credit-note follow-up; and escalation. People keep safety-critical part advice, credit and goodwill decisions, and contract exceptions.",{"type":137,"content":160},[161],"Triage decides the path. A defect on a machine under warranty, a wrong delivery and a wear-part reorder look similar in an email, but they follow different processes, different approvers and different ERP documents. The agent’s first job is to classify the case and collect the missing facts, such as serial number, order number and photos, before any lookup starts.",{"type":137,"content":163},[164,165,170],"Platforms already model this surface. Spryker’s Self-Service Portal, announced in August 2025, includes asset-aware reordering, service and warranty claims and RMA workflows integrated with ERP and logistics, with role-based permissions (",{"tag":166,"href":167,"children":168},"a","https:\u002F\u002Fwww.globenewswire.com\u002Fnews-release\u002F2025\u002F08\u002F04\u002F3126598\u002F0\u002Fen\u002Fspryker-unveils-self-service-portal-to-supercharge-b2b-productivity.html",[169],"Spryker","). An agent sits on top of such a portal and its systems; it does not replace them.",{"type":154,"level":155,"id":109,"text":110},{"type":137,"content":173},[174],"The agent never “knows” a part; it resolves one. The serial number from the label or the ticket becomes an equipment record, the equipment’s bill of materials gives the candidate parts, the catalog adds price and availability, a person approves, and the ERP creates the return.",{"type":176,"src":177,"alt":178,"wide":179,"caption":180},"image","\u002Fimages\u002Fblog\u002Faftersales-agent-rma-spare-parts\u002Fdiagram-8.webp","Serial number to RMA flow Six steps from left to right: a service ticket arrives by mail or portal; the serial number is resolved to an equipment record; the equipment bill of materials is exploded; candidate parts are matched in the catalog with price and stock; a human approves the part and the return; the RMA is created in the ERP as a return order with disposition, followed by shipment and credit-note status.",true,"The happy path: every identifier in this flow comes from the ERP or the catalog, and the approval step sits before anything is committed.",{"type":182,"ordered":183,"items":184},"list",false,[185,194,202],[186,189,190,193],{"tag":141,"children":187},[188],"Asset identification:"," a machine-readable label helps. IEC 61406-2, published in May 2024, specifies an identification link, a URL-based unique identifier on the physical object that points to its digital information, including digital product passports (",{"tag":166,"href":61,"children":191},[192],"IEC",").",[195,198,199,193],{"tag":141,"children":196},[197],"Bill of materials:"," in SAP S\u002F4HANA Service, equipment and functional-location BOMs and maintenance assemblies group the spare parts relevant for maintenance, and BOM explosion is available as an OData operation (",{"tag":166,"href":53,"children":200},[201],"SAP Learning",[203,206,207,210,211,193],{"tag":141,"children":204},[205],"Return:"," in Dynamics 365 Supply Chain Management an RMA is a return order with the RMA number as alternate key, a disposition code that can be credit-only, an optional replacement order and a credit note at the end (",{"tag":166,"href":50,"children":208},[209],"Microsoft Learn","). Between trading partners the same request travels as X12 180, the Return Merchandise Authorization and Notification transaction set (",{"tag":166,"href":70,"children":212},[213],"X12",{"type":137,"content":215},[216],"Two details break naive implementations. Superseded parts: the BOM may list a part number that has since been replaced, so the lookup must follow the successor chain in the ERP and show both numbers, the one on the drawing and the one that ships. Quantity per assembly: the BOM says how many of a part sit in the machine, not how many the customer needs, so the agent asks instead of assuming. Both facts already live in the ERP; the agent’s job is to read them, not to guess them.",{"type":154,"level":155,"id":112,"text":113},{"type":137,"content":219},[220],"Because language models invent identifiers that look right. An identifier, whether a part number, serial, RMA number or credit-note number, may appear in the agent’s answer only if a tool returned it in the same turn, echoed byte for byte. Everything else is rejected before the user sees it.",{"type":137,"content":222},[223,224,227,228,232],"The evidence comes from software packages, the closest measured analogue. Spracklen et al. generated 2.23 million package recommendations with 16 models: 19.7% named packages that do not exist, and 43% of the invented names reappeared in all ten repeated runs, so the errors are consistent, not random noise (",{"tag":166,"href":56,"children":225},[226],"USENIX Security 2025","). The attack built on that is described in ",{"tag":148,"to":229,"children":230},"\u002Fblog\u002Fslopsquatting-ai-package-hallucinations",[231],"slopsquatting and package hallucinations",". In after-sales, the same failure is a plausible part number that ships the wrong component.",{"type":234,"code":235},"code","\u002F\u002F Identifier guard (sketch): every ID in the answer must come from a tool result of this turn\nconst ID_PATTERN = \u002F\\b[A-Z0-9]{2,}(?:[-.\u002F][A-Z0-9]+)+\\b\u002Fg   \u002F\u002F tune to your part, serial and RMA formats\n\nfunction unknownIdentifiers(answer: string, results: ToolResult[]): string[] {\n  const returned = new Set(results.flatMap((r) => r.identifiers))   \u002F\u002F part, serial, RMA, credit-note numbers\n  return [...answer.matchAll(ID_PATTERN)].map((m) => m[0]).filter((id) => !returned.has(id))\n}\n\nconst unknown = unknownIdentifiers(draft, toolResults)\nif (unknown.length > 0)\n  return escalate({ reason: 'identifier not returned by ERP or PIM', unknown })   \u002F\u002F never auto-correct it",{"type":137,"content":237},[238],"The guard is cheap and deterministic. Combine it with structured tool schemas, so identifiers arrive in typed fields, and with a human approval before any part commitment, order or RMA confirmation. I run my own agents through a small set of named, typed tools, including a Jira MCP server with 20 of them, and the principle carries over: the agent acts through tools, and nothing outside the tools counts.",{"type":154,"level":155,"id":115,"text":116},{"type":137,"content":241},[242],"Four systems own the data, and the agent reads each field from its owner. The ERP owns serials, equipment, BOMs, RMAs and credit notes; PIM and shop own the parts catalog, prices and availability; the document store owns manuals and diagrams; the CRM owns tickets and history.",{"type":176,"src":244,"alt":245,"wide":179,"caption":246},"\u002Fimages\u002Fblog\u002Faftersales-agent-rma-spare-parts\u002Fdiagram-18.webp","After-sales data ownership map The agent in the center acts as the signed-in user and reads from four systems. The ERP service module owns serial numbers, equipment, bills of material, RMAs and credit notes. PIM and shop own the parts catalog, prices and availability. The document store owns manuals, exploded diagrams and service bulletins. The CRM owns tickets and history. Writes such as an RMA draft go back to the ERP only through human approval.","Who owns which after-sales data: the agent reads from the system that is authoritative for each field and never treats a cache or its own memory as the source.",{"type":137,"content":248},[249,250,254],"Parts master data quality decides how often the agent can answer at all. Missing BOM entries, superseded part numbers without a successor link, and catalog items without the ERP material number are the usual gaps; ",{"tag":148,"to":251,"children":252},"\u002Fblog\u002Frag-product-catalog-pim-data",[253],"RAG over product catalog and PIM data"," covers how to make those attributes usable.",{"type":154,"level":155,"id":118,"text":119},{"type":137,"content":257},[258],"Use retrieval for procedures and explanations, cite the document with page or figure, and keep the link from a diagram position to a part number in the catalog rather than in embeddings. The corpus is service manuals, exploded diagrams, service bulletins, schematics and warranty terms.",{"type":137,"content":260},[261,262,265,266,270,271,193],"Chunk per procedure or step, not per page, so an answer cites one coherent instruction. Industries with large documentation sets already structure content this way: S1000D, jointly produced by ASD, AIA and ATA e-Business with Issue 6 as the latest release, organizes technical publications as reusable data modules in a common source database (",{"tag":166,"href":34,"children":263},[264],"S-Series","). The parsing side, from scanned PDFs to tables, is covered in ",{"tag":148,"to":267,"children":268},"\u002Fblog\u002Fpdf-document-parsing-for-rag",[269],"PDF parsing for RAG",". Documentation volume will grow for machine builders: under the Machinery Regulation 2023\u002F1230, applicable from 20 January 2027, instructions may be supplied in digital form under specific conditions (",{"tag":166,"href":67,"children":272},[273],"European Commission",{"type":137,"content":275},[276],"Keep answers from manuals short and procedural, with the source document, revision and page in every answer. Service bulletins supersede manual sections, so retrieval should rank the newest applicable bulletin above the manual and say so. When a manual and a bulletin disagree, the agent shows both and escalates, because choosing between two official documents is a service engineer’s decision, not a model’s.",{"type":154,"level":155,"id":121,"text":122},{"type":137,"content":279},[280,281,285],"Informational answers, yes; commitments, no. The agent runs as the signed-in user with that user’s scope, own orders, business unit or company, never as a service account with rights over every customer, the pattern described in ",{"tag":148,"to":282,"children":283},"\u002Fblog\u002Fai-agent-identity-least-privilege",[284],"agent identity and least privilege",". Read and write tools are separate, and every tool call is logged.",{"type":287,"head":288,"rows":297},"table",[289,291,293,295],[290],"Action",[292],"Required source",[294],"Autonomy",[296],"Audit",[298,307,316,324,333,341,350],[299,301,303,305],[300],"Informational answer",[302],"manual with citation",[304],"answer",[306],"log sources",[308,310,312,314],[309],"Price or availability",[311],"catalog, ERP",[313],"tool call",[315],"log tool result",[317,319,321,322],[318],"Part recommendation",[320],"equipment BOM",[313],[323],"identifier guard",[325,327,329,331],[326],"Part order",[328],"BOM, catalog, contract price",[330],"tool call plus approval",[332],"approver and order number",[334,336,338,339],[335],"RMA confirmation",[337],"ERP return order",[330],[340],"approver and RMA number",[342,344,346,348],[343],"Credit note",[345],"ERP",[347],"status only",[349],"log status read",[351,353,355,357],[352],"Repair time or price promise",[354],"service planning",[356],"never",[358],"escalate",{"type":360,"variant":361,"title":362,"body":363},"callout","warn","Escalate on these triggers",[364],[365,366,369],"Hand the case to a person when it touches safety, warranty law, a credit limit or goodwill, or when the customer’s wording turns legal or angry. My ",{"tag":234,"children":367},[368],"jev-decide"," skill follows the same rule for its own decisions: low confidence goes to a human, and a probability is not permission.",{"type":154,"level":155,"id":124,"text":125},{"type":137,"content":372},[373],"It is worth what faster, correct part identification does to an already profitable business. No published ROI figure for after-sales agents exists, so the case rests on the economics of the aftermarket and on the KPIs the agent moves.",{"type":182,"ordered":183,"items":375},[376,388,396],[377,380,381,384,385,193],{"tag":141,"children":378},[379],"Margins:"," across 30 industries, McKinsey found an average EBIT margin of 25% for aftermarket services versus 10% for new equipment, with parts typically above 30% gross margin (",{"tag":166,"href":38,"children":382},[383],"McKinsey, 2017","); in 2024 it described aftermarket margins up to four times those of new units (",{"tag":166,"href":41,"children":386},[387],"McKinsey, 2024",[389,392,393,193],{"tag":141,"children":390},[391],"Spare parts:"," BCG’s benchmark of about 100 industrial machinery companies puts spare-part and consumable gross margins at about 50% on average, with top performers selling 16 percentage points more spare parts (",{"tag":166,"href":44,"children":394},[395],"BCG, 2025",[397,400,401,193],{"tag":141,"children":398},[399],"Failed visits:"," Aquant’s 2026 benchmark of 161 service organizations puts first-time fix at 77% at the median, 88% for top performers and 60% for the bottom; failed visits account for 25% of total service cost at the median, and one in five cases could be resolved remotely (",{"tag":166,"href":47,"children":402},[403],"Aquant",{"type":137,"content":405},[406],"Each KPI maps to one mechanism. First-time fix improves when the technician arrives with the right part, which depends on identification before dispatch. RMA cycle time drops when drafting, status lookups and reminders stop waiting in a shared inbox. Handling time per ticket falls when the agent assembles serial, asset history and candidate parts before a person opens the case. The self-served share grows when customers can identify parts in the portal with the same tools. Instrument each one separately; a single blended savings number hides which mechanism works.",{"type":137,"content":408},[409,410,413],"One regulatory note, because it is often misread: the EU Right to Repair Directive 2024\u002F1799 applies from 31 July 2026 and obliges manufacturers to repair, offer spare parts at reasonable prices and publish indicative repair prices, but for consumer goods covered by its Annex II (",{"tag":166,"href":64,"children":411},[412],"EUR-Lex","), not for industrial machinery in general. For a head of aftermarket or service director, the honest pitch is identification accuracy and turnaround, instrumented as first-time-fix rate, spare-part attach rate, RMA cycle time, handling time per ticket and the share of self-served parts orders.",{"type":154,"level":155,"id":127,"text":128},{"type":137,"content":416},[417],"Do not build one without reliable serial-to-asset data, without read APIs into the ERP, or without clean parts master data, because the agent would only answer “I cannot find it” faster. Low ticket volume, safety-critical parts without a documented approval path, and a warranty regime that nobody has written down as rules are further reasons to wait.",{"type":154,"level":155,"id":130,"text":131},{"type":182,"ordered":179,"items":420},[421,423,425,427,429,431,433,435],[422],"Define the identifier formats and enforce the identifier guard on every answer.",[424],"Write typed tool schemas for asset lookup, BOM explosion, part search, RMA draft and status.",[426],"Develop against a sandbox ERP client, never production.",[428],"Agree an approval matrix: who approves part orders, RMAs and goodwill.",[430],"Subscribe to RMA and credit-note status changes instead of polling.",[432],"Build an eval set from real, anonymized tickets with known correct parts.",[434],"Make the fallback to a human one click, with the full tool trace attached.",[436],"Define the KPIs with formulas before launch: first-time fix, RMA cycle time, handling time, self-served share.",{"type":137,"content":438},[439,440,152],"A fixed-scope pilot on one product family, read-only part identification over the existing BOM and catalog plus RMA drafting with approval, is the honest first step. I have spent more than ten years building the catalog and shop side such an agent reads from; if you want to scope one, see my ",{"tag":148,"to":441,"children":442},"\u002Fexpertise\u002Fb2b-ecommerce-developer",[443],"B2B e-commerce work",{"type":154,"level":155,"id":133,"text":134},{"type":182,"ordered":179,"items":446},[447,450,453,456,459,462,465,468,471,474,477,480],[448],{"tag":166,"href":38,"children":449},[37],[451],{"tag":166,"href":41,"children":452},[40],[454],{"tag":166,"href":44,"children":455},[43],[457],{"tag":166,"href":47,"children":458},[46],[460],{"tag":166,"href":50,"children":461},[49],[463],{"tag":166,"href":53,"children":464},[52],[466],{"tag":166,"href":56,"children":467},[55],[469],{"tag":166,"href":34,"children":470},[58],[472],{"tag":166,"href":61,"children":473},[60],[475],{"tag":166,"href":64,"children":476},[63],[478],{"tag":166,"href":67,"children":479},[66],[481],{"tag":166,"href":70,"children":482},[69],[484,543,616,686],{"slug":485,"published":486,"minutes":487,"category":7,"tags":488,"keywords":493,"about":504,"sources":514,"cover":536,"og":537,"expertise":538,"locales":539,"lang":75,"title":540,"description":541,"coverAlt":542},"agent-tool-design-descriptions-errors","2026-10-17",11,[12,489,490,491,492],"Tool use","Function calling","MCP","Agent design",[494,495,496,497,498,499,500,501,502,503],"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",[505,508,511],{"name":506,"url":507},"Intelligent agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIntelligent_agent",{"name":509,"url":510},"Model Context Protocol","https:\u002F\u002Fmodelcontextprotocol.io\u002F",{"name":512,"url":513},"Poka-yoke","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPoka-yoke",[515,518,521,524,527,530,533],{"title":516,"url":517},"Anthropic Engineering: Writing effective tools for agents, with agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fwriting-tools-for-agents",{"title":519,"url":520},"Anthropic Engineering: Building effective agents (Dec 2024)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fbuilding-effective-agents",{"title":522,"url":523},"Claude Platform Docs: Define tools","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fdefine-tools",{"title":525,"url":526},"Claude Platform Docs: Handle tool calls","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fhandle-tool-calls",{"title":528,"url":529},"Claude Platform Docs: Tool search tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Ftool-search-tool",{"title":531,"url":532},"Model Context Protocol specification 2025-11-25: Tools","https:\u002F\u002Fmodelcontextprotocol.io\u002Fspecification\u002F2025-11-25\u002Fserver\u002Ftools",{"title":534,"url":535},"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",[75,76,77],"Designing tools for AI agents: names, descriptions, schemas and error messages","How to design agent tools that get picked and called correctly: task-shaped tools, descriptions, schemas, compact responses and errors a model can act on.","Three rectangular slots in a base, with a block of matching width lined up over the middle slot and two wrong-width blocks beside it.",{"slug":544,"published":486,"minutes":487,"category":7,"tags":545,"keywords":551,"about":564,"sources":574,"cover":610,"og":611,"expertise":538,"locales":612,"lang":75,"title":613,"description":614,"coverAlt":615},"coding-agents-legacy-codebase-migration",[546,547,548,549,550],"Legacy migration","Coding agents","Strangler fig","Testing","Code review",[552,553,554,555,556,557,558,559,560,561,562,563],"legacy code migration ai","coding agent legacy codebase","strangler fig pattern ai","characterization tests legacy code","ai code migration review","agent assisted refactoring","legacy modernization coding agent","differential testing migration","shadow traffic migration","ai code review gate","test harness before migration","llm code migration",[565,568,571],{"name":566,"url":567},"Legacy code","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLegacy_code",{"name":569,"url":570},"Characterization test","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCharacterization_test",{"name":572,"url":573},"Strangler fig pattern","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FStrangler_fig_pattern",[575,578,580,583,586,589,592,595,598,601,604,607],{"title":576,"url":577},"Martin Fowler: Strangler Fig (2024)","https:\u002F\u002Fmartinfowler.com\u002Fbliki\u002FStranglerFigApplication.html",{"title":579,"url":570},"Wikipedia: Characterization test",{"title":581,"url":582},"Google Research: Accelerating code migrations with AI (2024)","https:\u002F\u002Fresearch.google\u002Fblog\u002Faccelerating-code-migrations-with-ai\u002F",{"title":584,"url":585},"Ziftci et al.: Migrating Code At Scale With LLMs At Google (arXiv 2504.09691)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2504.09691",{"title":587,"url":588},"Anthropic: Effective harnesses for long-running agents (2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-harnesses-for-long-running-agents",{"title":590,"url":591},"Anthropic: Redesigning source control at Anthropic (2026)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Fredesigning-source-control",{"title":593,"url":594},"METR: Measuring the Impact of Early-2025 AI on Experienced Open-Source Developer Productivity","https:\u002F\u002Fmetr.org\u002Fblog\u002F2025-07-10-early-2025-ai-experienced-os-dev-study\u002F",{"title":596,"url":597},"Chand et al.: Why Industry Migrates and When It Trusts LLMs (ESEM 2026)","https:\u002F\u002Fdrops.dagstuhl.de\u002Fentities\u002Fdocument\u002F10.4230\u002FLIPIcs.ESEM.2026.85",{"title":599,"url":600},"Li et al.: Environment-in-the-Loop: Rethinking Code Migration with LLM-based Agents (arXiv 2602.09944)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2602.09944",{"title":602,"url":603},"AWS: Amazon Q Developer just reached a $260 million dollar milestone (2024)","https:\u002F\u002Faws.amazon.com\u002Fblogs\u002Fdevops\u002Famazon-q-developer-just-reached-a-260-million-dollar-milestone\u002F",{"title":605,"url":606},"OpenAI: Why SWE-bench Verified no longer measures frontier coding capabilities (2026)","https:\u002F\u002Fopenai.com\u002Findex\u002Fwhy-we-no-longer-evaluate-swe-bench-verified\u002F",{"title":608,"url":609},"GitHub Docs: About GitHub Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcoding-agent\u002Fabout-coding-agent","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fcoding-agents-legacy-codebase-migration\u002Fog.jpg",[75,76,77],"Migrating a legacy codebase with coding agents: a strangler fig playbook","How to use coding agents on a legacy migration: characterization tests first, one seam per task, review gates and differential verification.","A stack of slabs with the top two replaced by fresh ones beside a seam and a check.",{"slug":617,"published":486,"minutes":618,"category":7,"tags":619,"keywords":623,"about":635,"sources":645,"cover":680,"og":681,"expertise":538,"locales":682,"lang":75,"title":683,"description":684,"coverAlt":685},"background-agents-async-pr-workflow",12,[547,620,621,550,622],"Pull requests","CI","Automation",[624,625,626,627,628,629,630,631,632,633,634],"background coding agent","async coding agent","cloud coding agent pull request","copilot coding agent limits","codex cloud tasks","claude code cloud sessions","jules coding agent limits","agent pull request review","coding agent sandbox","agent CI gating","cost per merged pull request",[636,639,642],{"name":637,"url":638},"Software agent","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_agent",{"name":640,"url":641},"Pull request","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FDistributed_version_control",{"name":643,"url":644},"Continuous integration","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FContinuous_integration",[646,647,650,653,656,659,662,665,668,671,674,677],{"title":608,"url":609},{"title":648,"url":649},"GitHub Docs: Risks and mitigations for Copilot cloud agent","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Fconcepts\u002Fagents\u002Fcloud-agent\u002Frisks-and-mitigations",{"title":651,"url":652},"OpenAI Developers: Codex cloud environments","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fcloud\u002Fenvironments",{"title":654,"url":655},"Anthropic: Use Claude Code in the cloud","https:\u002F\u002Fcode.claude.com\u002Fdocs\u002Fen\u002Fclaude-code-on-the-web",{"title":657,"url":658},"Google Jules: Limits and plans","https:\u002F\u002Fjules.google\u002Fdocs\u002Fusage-limits\u002F",{"title":660,"url":661},"Google Jules: Getting started","https:\u002F\u002Fjules.google\u002Fdocs\u002F",{"title":663,"url":664},"GitHub Docs: About protected branches","https:\u002F\u002Fdocs.github.com\u002Fen\u002Frepositories\u002Fconfiguring-branches-and-merges-in-your-repository\u002Fmanaging-protected-branches\u002Fabout-protected-branches",{"title":666,"url":667},"GitHub Docs: Models and pricing for GitHub Copilot","https:\u002F\u002Fdocs.github.com\u002Fen\u002Fcopilot\u002Freference\u002Fcopilot-billing\u002Fmodels-and-pricing",{"title":669,"url":670},"OpenAI Developers: Codex pricing","https:\u002F\u002Fdevelopers.openai.com\u002Fcodex\u002Fpricing",{"title":672,"url":673},"Ehsani et al.: Where Do AI Coding Agents Fail? An Empirical Study of Failed Agentic Pull Requests in GitHub (MSR 2026, arXiv 2601.15195)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2601.15195",{"title":675,"url":676},"Peralta et al.: Why Are Agentic Pull Requests Merged or Rejected? An Empirical Study (MSR 2026, arXiv 2605.22534)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2605.22534",{"title":678,"url":679},"DORA: State of AI-assisted Software Development 2025","https:\u002F\u002Fdora.dev\u002Fdora-report-2025","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fcover.webp","\u002Fimages\u002Fblog\u002Fbackground-agents-async-pr-workflow\u002Fog.jpg",[75,76,77],"Background coding agents that open PRs: a practical async workflow","How async coding agents queue tasks, run in sandboxes, open draft PRs and pass CI. Provider limits, cost controls, review design and failure modes.","One card in a tray fanning out to five pads, all arrows leading to one page behind a gate.",{"slug":687,"published":688,"minutes":689,"category":7,"tags":690,"keywords":696,"about":708,"sources":716,"cover":749,"og":750,"expertise":538,"locales":751,"lang":75,"title":752,"description":753,"coverAlt":754},"context-rot-compaction-long-running-agents","2026-10-16",10,[691,692,693,694,695],"Context rot","Compaction","Context engineering","Long-running agents","Agent memory",[697,698,699,700,701,702,703,704,705,706,707],"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",[709,712,715],{"name":710,"url":711},"Context window","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FLarge_language_model#Context_window",{"name":713,"url":714},"Attention (machine learning)","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FAttention_(machine_learning)",{"name":506,"url":507},[717,720,723,726,729,731,734,737,740,743,746],{"title":718,"url":719},"Chroma: Context Rot: How Increasing Input Tokens Impacts LLM Performance (Jul 2025)","https:\u002F\u002Fresearch.trychroma.com\u002Fcontext-rot",{"title":721,"url":722},"Liu et al.: Lost in the Middle: How Language Models Use Long Contexts (2023)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2307.03172",{"title":724,"url":725},"Modarressi et al.: NoLiMa: Long-Context Evaluation Beyond Literal Matching (2025)","https:\u002F\u002Farxiv.org\u002Fabs\u002F2502.05167",{"title":727,"url":728},"Anthropic: Effective context engineering for AI agents (Sep 2025)","https:\u002F\u002Fwww.anthropic.com\u002Fengineering\u002Feffective-context-engineering-for-ai-agents",{"title":730,"url":588},"Anthropic: Effective harnesses for long-running agents (Nov 2025)",{"title":732,"url":733},"Claude API docs: Compaction at a token threshold","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-threshold",{"title":735,"url":736},"Claude API docs: Compaction on demand","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcompaction-on-demand",{"title":738,"url":739},"Claude API docs: Context editing","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fbuild-with-claude\u002Fcontext-editing",{"title":741,"url":742},"Claude API docs: Memory tool","https:\u002F\u002Fplatform.claude.com\u002Fdocs\u002Fen\u002Fagents-and-tools\u002Ftool-use\u002Fmemory-tool",{"title":744,"url":745},"OpenAI API docs: Compaction","https:\u002F\u002Fplatform.openai.com\u002Fdocs\u002Fguides\u002Fcompaction",{"title":747,"url":748},"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",[75,76,77],"Context rot in long-running agents: clearing, compaction, memory and sub-agents","Why LLM accuracy drops as context grows, and how clearing tool results, compaction, notes and sub-agents keep long-running agents on track.","A small square press squeezing a tall stack of sheets into a short one, two notes branching off.",1792337027407]