Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "accept_autopost_decision" and "list_autopost_decisions"
⟨5 unchanged words⟩ decision (accountant) — posts the AI's proposal.TheAacceptingperson'sactor'sacceptapprovalin the app replaceseverythe softguardrailguardrails (confidence,amount cap,risk flags); hard blocks stay enforced by the.postingAnpathagent's (closed period / sealed FY / unresolvableMCP,accountsAPI→key,409/422chat).The accepted entryisposts asrefused``origin=ai``(403)withunless theacceptingrowuseris ``agent_acceptable``.inClosedtheperiod,auditsealedtrail (``accepted_by``/``accepted_at``year,+unknownJEaccount:``posted_by``);409/422.theThe rowflipsflips ``held → posted``in place, so(a second accept is a 409(idempotent). ``accepted_by_kind``,recordswithwhat``accepted_by_kind`` the kind of actorapproved: an accept made over MCP is recorded as(``mcp``,not as a person'soverclick.MCP). The optional ``body``serves three holds (and two confirmations only a person in the app may send) and is, omittedfor every other kindotherwise:``expense:receipt:item:`` needs``employee_id`` +``category_id`` for the draft claim,``category_id``; ``autopost:capitalize:`` needs``fixed_asset_category_id`` (+ optional``useful_life_months``)``fixed_asset_category_id`` when the holdresolved nohascategorynone, anda``needs_split_source``mixed invoice needs ``reclassify_from_account_code`` —a422 without them.``reclassify_from_account_code``.
⟨3 unchanged words⟩ {"description":"Optional ``POST /autopost-decisions/{id}/accept``body.\n\nTwo paths read it. The ``expense:receipt:item:`` claim path needs an employee\nand a category (both NOT NULL on the claim plane). The ``autopost:capitalize:``\npath needs a ``fixed_asset_category_id`` when the hold could not resolve one —\na missing category is a 422, never a guess, because the wrong category posts\nthe cost to the wrong balance-sheet account and depreciates it into the wrong\nexpense. The capitalize path may need a third fact:\n``reclassify_from_account_code`` when the hold is a mixed-invoice split whose\nsource line did not resolve (``needs_split_source``) — again a 422body;withoutomit it,\nnevera guess. Omit the body entirelyforeveryotherdecision kind (backward\ncompatible).kinds.","properties":{"category_id":{"anyOf": ⟨55 unchanged words⟩
⟨117 unchanged words⟩ ``limit`` rows. The response is a bare list. ``cause`` keeps the held rows of one hold cause. An agent may accept only rows with ``agent_acceptable`` true.
{"properties":{"cause":{"anyOf":[{"description":"Why a decision is sitting in the held tier.","enum":["not_a_decision","expense_receipt","autonomy_off","post_failed","period_closed","amount_cap","credit_note","duplicate_suspicion","self_counterparty","card_statement","payroll_liability_review","vat_uncertainty","fx_untranslated","risk_flags","open_questions","proposal_rejected","missing_original","settlement_mismatch","recognition_schedule","pre_llm_guard","low_confidence","fy_predates_books","fy_gap","unknown_vat_code","currency_mismatch","bank_history","bank_suspense","awaiting_review","unclassified"],"type":"string"},{"type":"null"}]},"company_id":{"type":"string"},"include_no_match" ⟨83 unchanged words⟩
Changed the definition of "accept_autopost_decision"
⟨100 unchanged words⟩ person's click. The optional ``body`` serves three holds (and two confirmations only a person in the app may send) and is omitted for every other kind: ``expense ⟨36 unchanged words⟩
⟨143 unchanged words⟩ "},{"type":"null"}]},"separate_document":{"default":false,"type":"boolean"},"useful_life_months":{"anyOf":[{"minimum":1, ⟨19 unchanged words⟩
Certificate recorded, valid to 2026-12-05
Authorization not required
Unknown → Live
First tool surface recorded: 51 tools (server version 0.1.0+d57624b8f)
https://app.zeno-works.ch/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 7 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed