Repository navigation
v0.5.1 β the agent-experience release
v0.5.1 β the agent-experience release
Two independent review passes over the MCP server and CLI β one measuring
real token costs, one auditing against the MCP spec (2025-06-18) and the
Claude Code plugin docs β and everything they flagged for this cycle, fixed.
Naming: --board
--country jobsch stopped making sense the moment Switzerland held three
boards. The selector flag is now --board (a board id, or a country
code that expands to every board there); --source and --country keep
working as aliases, sdj config --boards persists SDJ_BOARDS
(SDJ_COUNTRIES still read), and MCP search_jobs gains a board param
with country kept as a deprecated alias.
Token economy (measured)
- MCP results ship compact JSON β ~19% fewer tokens on every tool call
- refusal payloads no longer duplicate the (sometimes 1KB) tracking URL
search_jobs/list_applicationsdeclare
_meta["anthropic/maxResultSizeChars"], keeping max-limit results under
Claude Code's output warning- the skills now mandate
--limitonsdj list --json(raw wire rows are
~470 tokens each; uncapped worst case measured at ~10MB)
Spec compliance
- a valid-JSON non-object line (stray array, legacy batch) crashed the
server process β now a proper-32600 - tool arguments are validated against each tool's declared schema: a
typoed enum value used to silently return "0 matches" (which an agent
reads as "no jobs exist"); now it's a loudinvalid_argumentserror
naming the valid values apply_to_jobno longer claimsdestructiveHint: falseβ the spec
default applies, so clients keep every confirmation layer in front of an
irreversible submission- protocol-version negotiation,
tools/listcursor handling, and the
resources/promptsstubs now match the spec exactly
Steering fixes
- refusal messages are tool-neutral, reference
apply_urlinstead of
repeating it, spell the override per entrypoint, and never render
"visit None" again sdj applyprints the posting's real mode (was hardcodedDIRECTβ
wrong for jobs.ch/jobup.ch)- skills document
syndicated_postingβ the majority refusal outside CH - board/country counts in tool titles and instructions derive from the
registry, so prose can't drift when board #9 lands - README previews are captured from real runs
- release-pin guard tests force plugin pin and package version to move in
the same commit
Full Changelog: v0.5.0...v0.5.1