The nightly release digest
A production run from question to posted digest: two selected reads (28 KB of a 1.26 MB response), the constructed URL ordinary tools refuse, the generated summary with its sources, and the measured cost.
The research question
A scheduled job wakes nightly and asks: "What changed in llama.cpp since the tag we digested last night?" — then posts a summary the team actually reads. Captured from a production run, re-verified 8 Aug 2026; payloads verbatim, long bodies excerpted.
The ordinary tool — refused before it starts
The job must construct compare/<last>...<tonight> from two tags. Native fetch tools only accept URLs that appeared verbatim in the conversation — a constructed URL is refused outright, and even when accepted, the body comes back empty with nothing to parse.
// same URL, host's built-in fetch web_fetch("https://api.github.com/repos/ggml-org/llama.cpp/compare/b10256...b10308") ✗ URL not present in conversation — refused ✗ retried from a search hit: empty body, no JSON
Call one — tonight's tag: three fields, not thirty
The release object carries 30+ fields — assets with download counts, full release notes, author objects. The job needs three. select trims server-side, so only these reach the agent's context.
// full response, truncated fetch("https://api.github.com/repos/ggml-org/llama.cpp/releases/latest") { "url": "https://api.github.com/repos/…", "author": { "login": "…", … 16 more fields }, "tag_name": "b10308", "name": "b10308", "draft": false, "published_at": "2026-08-07T14:05:22Z", "assets": [ { "name": "llama-b10308-bin-macos-arm64.zip", "download_count": …, … per-asset fields }, … more assets ], "body": "…full release notes…" }
// select trims server-side fetch("https://api.github.com/repos/ggml-org/llama.cpp/releases/latest", select: ["tag_name", "name", "published_at"]) { "tag_name": "b10308", "name": "b10308", "published_at": "2026-08-07T14:05:22Z" }
Call two — the diff, without the megabyte
The compare object is 52 commits, each with author objects, trees and verification blocks, then 183 per-file patches. The jq-lite path commits[].commit.message reaches into every array element and preserves the nested shape, so rows stay aligned. Same request, side by side:
// the same request, no select — truncated fetch("https://api.github.com/repos/ggml-org/llama.cpp/compare/b10256...b10308") { "url": "…", "html_url": "…", "base_commit": { "sha": "…", "commit": { "author": {…}, "committer": {…}, "tree": {…}, "verification": {…} }, … }, "status": "ahead", "ahead_by": 52, "commits": [ { "sha": "22dc605c4ead…", "node_id": "…", "commit": {…}, "author": {…}, "committer": {…}, "parents": […] }, … 51 more ], "files": [ { "filename": ".github/workflows/build-apple.yml", "patch": "@@ -541,7 +541,9 @@ …" }, … 182 more ] }
// the same request, with select fetch("https://api.github.com/repos/ggml-org/llama.cpp/compare/b10256...b10308", select: ["ahead_by", "total_commits", "commits[].sha", "commits[].commit.message"]) { "ahead_by": 52, "total_commits": 52, "commits": [ { "sha": "22dc605c4ead…", "commit": { "message": "ci: fix vulkan llvmpipe runs (#26533)" } }, { "sha": "935cad6497e8…", "commit": { "message": "llama : move n_vocab from llama_sampler…" } }, … 50 more ] }
The digest the job posts
Generated from the 52 captured commit messages — every line traces to a PR number in the payload above.
llama.cpp nightly — b10256 → b10308 · 52 commits Breaking: Qwen3-TTS lands in mtmd; the llama-tts binary changes (#26254) Backends: Vulkan GATED_LINEAR_ATTN (#25601); SYCL DSv4 ops (#26568) + set_rows types (#26515); AMD ROCm gfx1151 joins CI (#26544) Hardening: gguf-py validates n_dims, guards uint64 overflow on crafted files (#25401); server file-search walk hardened (#26626); UI dep bumps clear vulnerable packages (#26607) Server/UI: spec-decode counters on /metrics (#26389); per-conversation working directory (#26518) Sources: releases/latest + compare/b10256...b10308, read via select — 28 KB of 1.26 MB reached the agent.
Measured cost, and where this came from
Per run: two selected reads ≈ 28 KB / ~7k tokens into context, against ~1.29 MB / ~320k tokens without select — and the compare call wouldn't have happened at all on a native fetch tool.
origin captured from a production run re-verified 8 Aug 2026, Claude Code over MCP: schema: true → commits[] $items: 52 · files[] $items: 183 select rerun → identical ahead_by: 52 payload retention bodies cached server-side · 24 h