showcase/integrations/langgraph-python/qa/tool-rendering-custom-catchall.md
tool-rendering-custom-catchall is registered at /api/copilotkittool-rendering-custom-catchall demo pagerounded-2xl)The frontend calls useDefaultRenderTool({ render: ... }) with a SINGLE branded wildcard component (CustomCatchallRenderer). There are ZERO per-tool named renderers. Every tool call must paint via this one branded card regardless of tool identity.
get_weather renders via the branded catch-all carddata-testid="custom-catchall-card") with:
get_weather (data-testid="custom-catchall-tool-name", monospaced)data-tool-name="get_weather"data-testid="custom-catchall-status") that transitions through streaming (amber), running (lavender/indigo), and finally done (green #189370)data-testid="custom-catchall-args") showing pretty-printed JSON of the parametersdata-testid="custom-catchall-result") once status === "complete"city, temperature: 68, humidity: 55, wind_speed: 10, conditions: "Sunny")2xl corners, #DBDBE5 border, #FAFAFC header strip, subtle shadowsearch_flights renders via the SAME branded catch-all carddata-testid="custom-catchall-card" rendersdata-tool-name="search_flights" on the card root and the name label reads search_flightsget_weather card — same header strip, same status badge treatment, same Arguments/Result sectionsroll_dice renders via the SAME branded catch-all cardcustom-catchall-card renders with data-tool-name="roll_dice"{ "sides": 20, "result": <1-20> }get_stock_price renders via the SAME branded catch-all cardcustom-catchall-card with data-tool-name="get_stock_price" rendersticker: "AAPL", a price_usd, and a change_pctDefaultToolCallRenderer appears alongside the branded card — the branded card replaces itdata-testid="custom-catchall-card" elementcustom-catchall-card elements render in succession (e.g. one for get_weather, one for search_flights)data-tool-name but the visual style is identicalstreaming or running and the Result section shows "waiting for tool to finish…"; after completion the badge reads done and the green Result pre appearsdone badge text and the completed-result green tint (#85ECCE) remain stable across re-rendersCustomCatchallRenderer card — zero visual variance beyond data-tool-name and the payloadstreaming → running → donecustom-catchall-renderer.tsx are visible (uppercase "Tool" label, monospaced tool-name, rounded-2xl card, header strip, tone-coded status badge, green result pre on completion)