Developer Tools
You came for an agent framework, and we handed you a phone book of seams, contracts, and primitives, every single one of which you can wire up wrong — and we know you can, because we wrote them, and we wired them wrong first. The quickstart fits on one screen. The rules that decide whether this thing actually works do not. They're hiding behind the part that fit on the screen, waiting for you, like a pothole.
We did this on purpose. Explicitness is the whole point; we are not sorry. But "on purpose" and "free" are not the same word, somebody has to pay for the depth, and that somebody is going to be you, at 2am, the first time you reach for a primitive whose rules you half-remember. This section is us chipping in. Two tools, same problem, opposite ends: one so a coding agent can look the rules up instead of inventing an API out of thin air and sheer confidence, and one that takes the mistakes your compiler nods along to and turns them into lint errors that stop at your editor — where, frankly, they should have been stopping this entire time.
Both are opt-in, and neither touches runtime
Nothing here changes how a turn executes. The MCP is a tool you hand to a coding agent; the ESLint plugin is a lint dependency you install. Skip both and the ADK runs exactly the same — you've just volunteered to find every footgun yourself, by hand, the hard way.
What's in this section
ADK Assembly MCP — a local Model Context Protocol server, bundled in the
@nhtio/adkpackage, that gives a coding agent the same version-aligned assembly guidance these docs give you, in the one place the agent actually reads things: its own tool loop. For when an AI is wiring your ADK integration and you'd prefer it consult the contract over inventing a helper that has never existed.ESLint Rules — an importable plugin at
@nhtio/adk/eslintthat turns documented footguns into lint errors: thevalidator.any()that admitsnullyou didn't mean to allow, thetokenEncodingwith nocontextWindowto count against, the model call smuggled into a tool handler. All of it compiles. None of it is what you meant.
One stops the agent before it writes the wrong thing. The other stops you after you already did. Between them they cover the genuinely maddening category of bug: the code that compiles, runs, looks you dead in the eye, and is wrong anyway.