<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Hacker News: axeldunkel</title><link>https://news.ycombinator.com/user?id=axeldunkel</link><description>Hacker News RSS</description><docs>https://hnrss.org/</docs><generator>hnrss v2.1.1</generator><lastBuildDate>Sun, 21 Jun 2026 18:07:41 +0000</lastBuildDate><atom:link href="https://hnrss.org/user?id=axeldunkel" rel="self" type="application/rss+xml"></atom:link><item><title><![CDATA[New comment by axeldunkel in "Show HN: ToolMesh – turn all your REST APIs into MCP tools via declarative YAML"]]></title><description><![CDATA[
<p>Good question on Code Mode internals.<p>In Code Mode the model sees only two tools by default: list_tools(pattern) and execute_code(code). list_tools takes a regex and returns TypeScript signatures for matching tools. execute_code runs JavaScript that calls them.<p>So when the model actually needs the GitHub API for example, it calls list_tools("github.*pull") - it gets back just the typed signatures for those endpoints, and then writes code against them. Your second hypothesis is the mechanism: a meta-tool that queries on demand. The typed signatures (first hypothesis) are what the model reasons over once it has them.<p>That is what really brings the cost down. A large API as MCP tool definitions is easily 40-50k tokens upfront. The same API via list_tools + execute_code is ~1k for the two tool descriptions, plus only the signatures the model pulls per query.</p>
]]></description><pubDate>Tue, 28 Apr 2026 13:16:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47934142</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47934142</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47934142</guid></item><item><title><![CDATA[New comment by axeldunkel in "Show HN: ToolMesh – turn all your REST APIs into MCP tools via declarative YAML"]]></title><description><![CDATA[
<p>A bit more on DADL, since this is what people typically ask first - why ANOTHER standard?<p>DADL is on purpose narrower than e.g. OpenAPI. It describes only the tool surface that an agent is allowed to call - not the full API contract that humans, SDK generators, gateways, docs and mocks need. In practice this means fewer parts to think about: method, path, parameters, access class, descriptions, and policy metadata. The point is to make the allowed actions explicit and small enough to actually review.<p>Every MCP project I have seen wraps APIs imperatively - custom code per backend. DADL is the only declarative format I know of that makes the allowed surface reviewable in a PR diff. That is a deliberate trade-off: less flexibility, more auditability.<p>Why YAML? Because humans really read and edit it. I wanted something small enough to review in a PR, diff cleanly, easy for LLMs to generate AND to write by hand when needed. In practice this is more important than maximum expressiveness.<p>What DADL can do: describe HTTP tools with typed parameters, declare auth requirements, attach policy metadata and caller constraints, provide a compact tool surface to the model - and attach a simple 'access' badge to each tool that flags it as read-only or dangerous. And errors come back in a form the LLM can reason about, not as crashes that break the flow.<p>What DADL is not trying to do: replace OpenAPI, capture every edge case of complex APIs, or be a full SDK generation format.<p>A few questions I get often:<p><i>Does this work for every API?</i>
No. APIs with very stateful flows, weird auth handshakes, streaming edge cases or messy responses still need custom handling. Some APIs map cleanly to DADL, some do not - but for those that do not, you can still plug in an existing MCP server through ToolMesh, and Code Mode applies to it too.<p><i>Why not generate from OpenAPI?</i>
OpenAPI is a great source material. You point an LLM to the DADL specification, to the OpenAPI definition - and you get a valid DADL that usually only needs optimisation.<p>So far there are 20 DADLs in the public registry covering 1,833 tools (GitHub, Cloudflare, GitLab, DeepL, Hetzner Cloud and more). If there is a specific API you would want to see as DADL, just ask - I am happy to add it.<p>If you want to try before cloning: <a href="https://demo.toolmesh.io" rel="nofollow">https://demo.toolmesh.io</a> is a public instance with the HN APIs loaded (login dadl/toolmesh). Works with Claude.ai, Claude Desktop, Claude Code, and ChatGPT - setup takes 30 seconds: <a href="https://toolmesh.io/demo" rel="nofollow">https://toolmesh.io/demo</a></p>
]]></description><pubDate>Tue, 28 Apr 2026 13:00:19 +0000</pubDate><link>https://news.ycombinator.com/item?id=47933958</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47933958</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47933958</guid></item><item><title><![CDATA[Show HN: ToolMesh – turn all your REST APIs into MCP tools via declarative YAML]]></title><description><![CDATA[
<p>When at night the pager goes off, I ask Claude: "what is alerting, what changed in the last hour?". Claude answers by chaining calls across Graylog, Prometheus, Alertmanager, Linode, GitLab, NetBox and more. The menu of tools Claude has access to is even bigger than that: I have connected 30 backends so far (20 in the public registry, the rest internal to my setup), including most of my ops stack (OPNsense, Tailscale, Xen Orchestra, DokuWiki and more). ToolMesh is what makes that menu composable for Claude.<p>Each backend is a simple DADL file - a small YAML that declares the REST API of the service to ToolMesh, which then exposes those tools to Claude. Most of the publicly available DADLs (currently 20 with 1,833 tools in total) were drafted by an LLM in minutes and tuned from there. The registry is public.<p>Here is the HN API as DADL - the API behind this very page:<p><pre><code>  tools:
    get_top_stories:
      method: GET
      path: /topstories.json
      access: read
      description: "Up to 500 top story IDs, ordered by HN ranking"
    get_item:
      method: GET
      path: /item/{id}.json
      access: read
      description: "Get story, comment, job, poll, or pollopt by ID"
      params:
        id: { type: integer, in: path, required: true }
</code></pre>
How can a single agent access so many backends without creating context overflow? Code Mode. Naively, every tool and schema goes into context - 50,000+ tokens before the agent does anything useful. ToolMesh compresses that to ~1,000 by giving the model a typed API surface and letting it ask for endpoint details only when it needs them. That is the difference between "doesn't scale" and "please add 10 more, it's fine!". ToolMesh can also connect to other MCP servers, rendering them code mode capable as well.<p>Security in mind: credentials never reach the model (they are injected at runtime). ToolMesh runs a fail-closed pipeline: auth -> authz -> credential injection -> exec -> output gate -> audit. CallerClass lets the same API have different policy per client type (local dev assistant vs hosted agent vs CI bot). Every call lands in a SQLite-queryable audit log - "what did the agent do Tuesday?" becomes a SQL query, not a shrug.<p>ToolMesh is not magic. APIs with stateful flows or weird auth still need care, and an LLM with a great tool surface can still pick the wrong tool. You still need sane policy.<p>Try before cloning: <a href="https://demo.toolmesh.io" rel="nofollow">https://demo.toolmesh.io</a> is a public instance with the HN API loaded (login dadl/toolmesh). Connect Claude Desktop, Claude Code, or ChatGPT in 30 seconds: <a href="https://toolmesh.io/demo" rel="nofollow">https://toolmesh.io/demo</a><p>GitHub: <a href="https://github.com/DunkelCloud/ToolMesh" rel="nofollow">https://github.com/DunkelCloud/ToolMesh</a>
Docs: <a href="https://toolmesh.io" rel="nofollow">https://toolmesh.io</a>
DADL Spec + Registry: <a href="https://dadl.ai" rel="nofollow">https://dadl.ai</a><p>Apache 2.0, single Go binary or Docker, no SaaS dependency.<p>If you think of your full ops stack - what DADLs would you like to have available to your LLM?</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47933950">https://news.ycombinator.com/item?id=47933950</a></p>
<p>Points: 2</p>
<p># Comments: 2</p>
]]></description><pubDate>Tue, 28 Apr 2026 13:00:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47933950</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47933950</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47933950</guid></item><item><title><![CDATA[New comment by axeldunkel in "Ask HN: AI is like a hyper-motivated 16-year old genius – how to manage?"]]></title><description><![CDATA[
<p>You are also right and I half agree - but the same issue arises with new employees. They already have some of this experience you are talking about - but usually there is something about the very environment they are in which causes them to learn lessons the hard way. And that experience does not transfer easily to the next colleague - and even less to an LLM. The only way I see to solve this is by having an "organisational memory".</p>
]]></description><pubDate>Tue, 28 Apr 2026 09:44:02 +0000</pubDate><link>https://news.ycombinator.com/item?id=47932305</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47932305</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47932305</guid></item><item><title><![CDATA[New comment by axeldunkel in "Ask HN: AI is like a hyper-motivated 16-year old genius – how to manage?"]]></title><description><![CDATA[
<p>Well the LLM might well have read all operating procedures etc. - just like the teenager - but it has not *experienced* issues himself/herself/itself. If you look at the published statements about "AI deleted my..." those AI models clearly knew what went wrong AFTER they caused it...</p>
]]></description><pubDate>Mon, 27 Apr 2026 10:53:46 +0000</pubDate><link>https://news.ycombinator.com/item?id=47919982</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47919982</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47919982</guid></item><item><title><![CDATA[Ask HN: AI is like a hyper-motivated 16-year old genius – how to manage?]]></title><description><![CDATA[
<p>A while ago I posted a comment regarding AI being like a genius 16year old - extrem knowledgeable in technical details, hyper-motivated, feels a need to help. But no production experience, no instinct on what might cause catastrophic issues in that very environment.<p>So what would you do with such an individual who has the potential to be of great help with current issues?<p>- not let him touch production systems at all
- always have someone experienced looking over his shoulder (hoping she/he is fast enough to prevent issues)?
- restrict credentials and give only access to a sandbox?
- only explain the dangers you see and make use of his knowledge but otherwise just hope for the best (and trust your recovery plans)?<p>I see many similarities between AI and this teenager - do you?</p>
<hr>
<p>Comments URL: <a href="https://news.ycombinator.com/item?id=47919719">https://news.ycombinator.com/item?id=47919719</a></p>
<p>Points: 1</p>
<p># Comments: 5</p>
]]></description><pubDate>Mon, 27 Apr 2026 10:13:11 +0000</pubDate><link>https://news.ycombinator.com/item?id=47919719</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47919719</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47919719</guid></item><item><title><![CDATA[New comment by axeldunkel in "Show HN: CrabPDF – privacy-first PDF editor that edits real text"]]></title><description><![CDATA[
<p>Amazing, looks too good to be true :-) But no ToS, Imprint, whether it is commercial or open source?</p>
]]></description><pubDate>Mon, 27 Apr 2026 09:24:33 +0000</pubDate><link>https://news.ycombinator.com/item?id=47919438</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47919438</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47919438</guid></item><item><title><![CDATA[New comment by axeldunkel in "Show HN: AI memory with biological decay (52% recall)"]]></title><description><![CDATA[
<p>I only use a decay function to see how "hot" a chunk is - not for forgetting old ones. What concerns me more are memory chunks with errors in them - they need to be corrected/removed by some other mechanism, not by decay (since they might get retrieved often).</p>
]]></description><pubDate>Sun, 26 Apr 2026 23:04:52 +0000</pubDate><link>https://news.ycombinator.com/item?id=47915756</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47915756</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47915756</guid></item><item><title><![CDATA[New comment by axeldunkel in "An AI agent deleted our production database. The agent's confession is below"]]></title><description><![CDATA[
<p>Think of AI just like of a genius 16-year old. Accidents will happen - only let AI and the 16-year old access systems where you are sure you have a recovery plan.</p>
]]></description><pubDate>Sun, 26 Apr 2026 22:17:04 +0000</pubDate><link>https://news.ycombinator.com/item?id=47915290</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47915290</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47915290</guid></item><item><title><![CDATA[New comment by axeldunkel in "Opus 4.7 to 4.6 Inflation is ~45%"]]></title><description><![CDATA[
<p>the better the tokenizer maps text to its internal representation, the better the understanding of the model what you are saying - or coding! But 4.7 is much more verbose in my experience, and this probably drives cost/limits a lot.</p>
]]></description><pubDate>Sat, 18 Apr 2026 17:38:24 +0000</pubDate><link>https://news.ycombinator.com/item?id=47817807</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47817807</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47817807</guid></item><item><title><![CDATA[New comment by axeldunkel in "Show HN: Link Shortener – Itlinks.me"]]></title><description><![CDATA[
<p>why does this matter?</p>
]]></description><pubDate>Sat, 18 Apr 2026 17:31:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47817744</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47817744</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47817744</guid></item><item><title><![CDATA[New comment by axeldunkel in "Show HN: 48 absurd web projects – one every month"]]></title><description><![CDATA[
<p>Great site! I once created muelltonne.de (german for "trashcan") where users could send (spam) mails which they did not like - and got poems or jokes in return that were made from exactly the same letters (plus some remains that could not be used). Reading tweets nowadays cries out for a new enhanced version...</p>
]]></description><pubDate>Thu, 16 Apr 2026 13:46:43 +0000</pubDate><link>https://news.ycombinator.com/item?id=47792888</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47792888</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47792888</guid></item><item><title><![CDATA[New comment by axeldunkel in "Show HN: MCP server gives your agent a budget (save tokens, get smarter results)"]]></title><description><![CDATA[
<p>Great idea, I do like the concept to give the LLM more information and context so it can decide what approach is better. But why do you implement it as a mcp server and not as a proxy to have the full context?</p>
]]></description><pubDate>Wed, 15 Apr 2026 21:47:21 +0000</pubDate><link>https://news.ycombinator.com/item?id=47785724</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47785724</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47785724</guid></item><item><title><![CDATA[New comment by axeldunkel in "Cal.com is going closed source"]]></title><description><![CDATA[
<p>Sounds like "security by obscurity" to me - if you think AI is so good at finding security issues - it will find them in compiled code as well. Why not using it in your favor and let it search for bugs you'd otherwise not find?</p>
]]></description><pubDate>Wed, 15 Apr 2026 21:34:03 +0000</pubDate><link>https://news.ycombinator.com/item?id=47785561</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47785561</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47785561</guid></item><item><title><![CDATA[New comment by axeldunkel in "Show HN: Context Surgeon – Let AI agents edit their own context window"]]></title><description><![CDATA[
<p>I like the approach to bring in the context surgeon as a wrapper that sees the conversation and can attach ids to the lines. You might even use the surgeon to replace parts with summaries?</p>
]]></description><pubDate>Mon, 13 Apr 2026 15:51:09 +0000</pubDate><link>https://news.ycombinator.com/item?id=47753821</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47753821</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47753821</guid></item><item><title><![CDATA[New comment by axeldunkel in "Show HN: Rekal – Long-term memory for LLMs in a single SQLite file"]]></title><description><![CDATA[
<p>Nice clean project - Python 3.14 as a requirement might be an issue for adoption...</p>
]]></description><pubDate>Sun, 12 Apr 2026 23:33:57 +0000</pubDate><link>https://news.ycombinator.com/item?id=47745626</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47745626</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47745626</guid></item><item><title><![CDATA[New comment by axeldunkel in "Show HN: HyperFlow – A self-improving agent framework built on LangGraph"]]></title><description><![CDATA[
<p>I'd bet this does work but how do you solve the problem with scoring the quality of a modified agent?</p>
]]></description><pubDate>Sat, 11 Apr 2026 18:09:07 +0000</pubDate><link>https://news.ycombinator.com/item?id=47732707</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47732707</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47732707</guid></item><item><title><![CDATA[New comment by axeldunkel in "Intel 486 CPU announced April 10, 1989"]]></title><description><![CDATA[
<p>I still have a 486 linux system from those days - has not been turned on in this century but I'll try some day together with a glas of whisky :-)</p>
]]></description><pubDate>Fri, 10 Apr 2026 15:43:38 +0000</pubDate><link>https://news.ycombinator.com/item?id=47719824</link><dc:creator>axeldunkel</dc:creator><comments>https://news.ycombinator.com/item?id=47719824</comments><guid isPermaLink="false">https://news.ycombinator.com/item?id=47719824</guid></item></channel></rss>