Skip to content

Releases: katbyte/abs-mcp

v0.5.0

Choose a tag to compare

@github-actions github-actions released this 27 Sep 17:49
6a62372

Changelog

  • 6a62372 Shorten the changelog to what a reader needs, and date 0.5.0
  • ef41781 Say when the server fails, instead of answering as if it came back empty
  • 3573029 Find stray spaces in names, and cut false abridged and duplicate findings
  • 3bc2a4b Fix the two test listings that still passed a library id
  • f92a88e audit_abridged: compare two readings only where a cut can show
  • 18529b3 Audit what a large import leaves: one recording twice, abridged books, mixed folder styles
  • c98adf1 Fix what a deep review found, bring over embyfin's recent work, test it live (#8)
  • 9c39f4b ci: scan the release and main binaries with trivy (#7)
  • 8f55e26 ci: group dependabot updates and run checks monthly (#5)
  • dec6413 actions: audit workflows with zizmor, and fix what it found (#3)
  • 5cd687b add mcp.json
  • 4b27376 Merge pull request #2 from katbyte/journeys-and-a-binary-smoke-test
  • 3e6572b Five more journeys, a binary smoke test, and the bugs they found
  • 80b0372 Journey tests and the tool bugs they found
  • 1a9bec3 Merge pull request #1 from katbyte/dependabot/go_modules/dot-tools/mvdan.cc/gofumpt-0.12.0

v0.4.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 07:15
99f1f15

Changelog

  • 99f1f15 Fix CI: lint backlog, tests for the six untested tools, and a Messy fixture library
  • 34c1d92 Update CHANGELOG for version 0.4.0 release date
  • 4c6b766 Series, cover and description audits from a full library pass
  • aedc1f6 Changes and fixes based on auditing real data
  • 95b299e bump go-kt to v0.2.0
  • bfd7909 migrate clog and version to go-kt v0.2.0
  • a44b3be Refuse what was never named, and let audit_all audit all

v0.3.0

Choose a tag to compare

@katbyte katbyte released this 13 Sep 17:43
dbb4e54

0.3.0 (2026-09-13)

Breaking

  • one rename tool. metadata_rename field=tags|genres|narrators|authors|languages|publishers
    replaces server_tag_rename, narrator_edit and audit_terminology_rename, and with
    remove drops a tag, genre, narrator, language or publisher everywhere. audit_terminology
    is now audit_spelling, and every group it reports is fixed by the one tool. 88 tools -> 86
  • audit_no_episodes and audit_stale_feed are audit_podcast_no_episodes and
    audit_podcast_stale_feed, so the name says they only look at podcasts
  • item_cover_edit no longer removes the cover when called with neither url nor file:
    pass remove=true. A call that forgot its url used to delete the cover
  • the README token table is now what the model sees. Most clients send only the description
    and input schema to the model, not the output schema, which was 60% of the earlier figure

Added

  • audit_unembedded: books whose audio files carry no tags, or tags that disagree with the
    current title, author, narrator, series, genres, year or publisher - what
    item_embed_metadata is due for after a curation pass. It reads the expanded items in
    batches of 50, so it runs apart from audit_all

Fixed

  • item_edit clear for narrators, series, genres and tags was a silent no-op: the
    empty list was dropped from the request (omitempty), so the server saw nothing to change.
    lib/abs list fields are now omitzero: nil leaves a field alone, an empty slice clears it
  • audit_cover_ratio measured the server's 400-pixel-wide cache copy rather than the cover
    file, so every cover was "400 wide" and the too-small check could never fire. It now asks for
    the raw file, reads only the image header instead of buffering the whole image, and skips
    the request for items the listing already says have no cover
  • audit_spelling (then audit_terminology) never found narrator spellings: the sweep sees the minified item shape,
    which carries narrators only as one joined narratorName, and only the expanded
    narrators list was read
  • an audit with a server-side filter (audit_missing, audit_issues, audit_no_audio)
    overran limit once an earlier library had filled it: the request for the next library was
    sent with no limit, which the server reads as everything
  • lib/abs DeleteAuthorImage returned an empty record; the server answers with the author
    under an author key, like the image and match routes

Changed

  • docker-free tests for the tools: an in-memory MCP session against a canned Audiobookshelf
    (tools/handlers_test.go), covering what the live fixtures cannot reach - a library with
    covers, inconsistent narrator spellings, more findings than the limit
  • lib/abs request and response-shape tests without a server: paging, streaming, multipart
    upload, the vocabulary path encoding, the chapter and feed-episode unwrapping
  • intParam/intQuery and narratorID/vocabularyID were the same function twice

v0.2.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 22:29
7fb0048

Changelog

  • 7fb0048 Tighten the 0.2.0 changelog
  • 66b3793 Changelog for 0.2.0
  • eaa54e6 Test the CLI, starting with the one function guarding the network
  • dcbbc0b Cover the branches worth covering, and restore guidance lost in a merge
  • 2520d5e Measure coverage across all three suites, and badge it
  • f8f60c4 Close the last gaps a coverage audit found
  • f686110 Default the server to the core toolset
  • 3dd3593 Add toolsets, and an abs-mcp tools command to see them
  • 2cdac4d Correct the read-only tool count: library_match_all was a write
  • d967e35 Remove library_match_all
  • 797efb0 Fold item_chapters and item_files into item_get as opt-in detail
  • 5641fc9 Fold podcast_recent into podcast_episodes, and say why library_recent stays
  • 9602a19 Tell a non-admin key why the totals are missing
  • 8000e0d Fold library_stats into library_get and server_stats into server_info
  • 43cb270 Stop library_items and library_search reading as the same tool
  • a1a1797 Let the tap formula be republished for an existing tag
  • d706f0e Mark the homebrew script executable
  • 69fe70e Say what this does that the other servers do not
  • 2fd1a8c Say what this is in the first line of the README

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 12 Sep 18:37
f2ffe18

Changelog

  • f2ffe18 Let CodeQL see the tag-gated test suites
  • 6360afb Check the README against the code, and fix config precedence
  • c196143 Check every claim in the 0.1.0 notes against the code
  • 148ac00 Fold me_* into user_*, and enforce tool coverage
  • 42fb1da Name tools verb-last, and merge the add/remove pairs
  • f3ecd87 Never stamp a blank version
  • d535197 Remove header from CHANGELOG.md
  • eda0bb8 Release 0.1.0
  • 424f37c Assert a result for 197 of the 202 client methods
  • 3d60557 Cover the whole Audiobookshelf API in lib/abs
  • 338a7d8 Cover every in-scope Audiobookshelf endpoint, and add make apicheck
  • 7da2718 Remove root-owned container files on teardown
  • 3130cae Pass -nostdin to ffmpeg when generating fixtures
  • 9ce9da7 Install ffmpeg in CI and fix the silent prerequisite check
  • 0977ad8 Fix CI: executable bit, misspell locale, and lint
  • 50d1a72 Add audits, narrator and batch tools, and live test suites
  • 3b3dceb Initial commit: abs-mcp MCP server and CLI for Audiobookshelf