<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>CLIver Field Notes</title><description>Short, tested notes on building agents that hold up: the CLIver agent loop, tools, MCP, media pipelines, and production edges.</description><link>https://cliver-project.github.io/CLIver/blog/</link><language>en-us</language><item><title>A product URL in, validated JSON out</title><link>https://cliver-project.github.io/CLIver/blog/product-url-to-json/</link><guid isPermaLink="true">https://cliver-project.github.io/CLIver/blog/product-url-to-json/</guid><description>chat_structured() asks for JSON, validates it, and retries with the error — so your code gets a typed object or a clear failure.</description><pubDate>Wed, 11 Nov 2026 00:00:00 GMT</pubDate><category>Structured Output</category><category>Pydantic</category><author>Lin Gao</author></item><item><title>Stream output without changing your code</title><link>https://cliver-project.github.io/CLIver/blog/stream-output/</link><guid isPermaLink="true">https://cliver-project.github.io/CLIver/blog/stream-output/</guid><description>The same AgentCore, the same bindings: iterate stream() instead of awaiting chat(), and keep the final message.</description><pubDate>Wed, 04 Nov 2026 00:00:00 GMT</pubDate><category>AgentCore</category><category>Streaming</category><author>Lin Gao</author></item><item><title>The smallest useful agent is a loop and a tool</title><link>https://cliver-project.github.io/CLIver/blog/smallest-useful-agent/</link><guid isPermaLink="true">https://cliver-project.github.io/CLIver/blog/smallest-useful-agent/</guid><description>A working CLIver agent in about twenty lines — and the three boundaries that keep it from becoming a demo that only works once.</description><pubDate>Mon, 02 Nov 2026 00:00:00 GMT</pubDate><category>AgentCore</category><category>Quickstart</category><author>Lin Gao</author></item></channel></rss>