BREAKING — MCP error envelopes normalized. Every tool failure now returns {"status": "error", "code": "<snake_case>", "message": "..."};
validation failures use code: "invalid_input" (including previously-raising datetime filters), and error envelopes no longer carry warnings.
Actionable write outcomes are unchanged: version_conflict (with current_version), duplicate, slug_collision, path_collision keep their top-level
statuses, so read-merge-write retry loops are unaffected. Migration: branch on status == "error" && code == "invalid_input" instead of status ==
"invalid_input". Also in this release: free-form note metadata (#305), metadata_match filters (#306), lithos_task_list with_claims. Full details in
the CHANGELOG.
What's Changed
- docs: propose task graph coordination extension by @davesnowdon in #339
- docs: tighten task graph coordination proposal per review by @davesnowdon in #340
- docs(task-graph): raise the cancelled-blocker readiness semantic by @davesnowdon in #341
- feat(coordination): task graph Phase 1 — edges, ready/blocked, backfill by @davesnowdon in #342
- feat(coordination): task graph Phase 2 — hierarchy & spawn by @davesnowdon in #343
- chore(deps): bump starlette from 0.52.1 to 1.0.1 by @dependabot[bot] in #349
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 by @dependabot[bot] in #348
- chore(deps): bump python-dotenv from 1.2.1 to 1.2.2 by @dependabot[bot] in #344
- chore(deps): bump authlib from 1.6.7 to 1.6.12 by @dependabot[bot] in #345
- chore(deps): bump python-multipart from 0.0.22 to 0.0.27 by @dependabot[bot] in #346
- chore(deps): bump idna from 3.11 to 3.15 by @dependabot[bot] in #347
- feat(coordination): task graph Phase 3 — gates by @davesnowdon in #356
- chore(deps-dev): bump pytest from 9.0.2 to 9.0.3 by @dependabot[bot] in #350
- chore(deps): bump requests from 2.32.5 to 2.33.0 by @dependabot[bot] in #354
- feat: complete the task lifecycle — lithos_task_reopen (#243) + terminal task_update (#303) by @davesnowdon in #357
- Add a note metadata/tags patch (lithos_note_update) — parity with lithos_task_update by @davesnowdon in #363
- chore(deps): bump python-multipart from 0.0.27 to 0.0.31 by @dependabot[bot] in #359
- chore(deps): bump pyjwt from 2.11.0 to 2.13.0 by @dependabot[bot] in #358
- chore(deps): bump pydantic-settings from 2.12.0 to 2.14.2 by @dependabot[bot] in #364
- chore(deps): bump cryptography from 46.0.4 to 48.0.1 by @dependabot[bot] in #361
- chore(deps): bump starlette from 1.0.1 to 1.3.1 by @dependabot[bot] in #360
- chore(deps): bump pygments from 2.19.2 to 2.20.0 by @dependabot[bot] in #353
- chore(deps): bump fastmcp from 2.14.5 to 3.2.0 by @dependabot[bot] in #351
- chore: converge on Python 3.12 by @davesnowdon in #365
- chore(deps): bump torch from 2.10.0 to 2.12.1 by @davesnowdon in #366
- chore: architecture & domain diagrams as drift-checked tests by @davesnowdon in #368
- chore(deps): bump transformers from 5.1.0 to 5.3.0 by @dependabot[bot] in #369
- refactor: fold CoordinationError into errors.py, add canonical envelope constructors by @davesnowdon in #370
- refactor!: normalize MCP error envelopes to canonical {status, code, message} by @davesnowdon in #371
New Contributors
- @dependabot[bot] made their first contribution in #349
Full Changelog: v0.3.3...v0.4.0
🎉 Published to PyPI!
Install with:
pip install lithos-mcp==0.4.0🐳 Published to Docker Hub!
Pull with:
docker pull davesnowdon/lithos:0.4.0Or run directly:
docker run -d -p 8765:8765 -v lithos-data:/data davesnowdon/lithos:0.4.0