{"serverInfo":{"name":"unitclock-mcp","title":"UnitClock","version":"0.1.0"},"instructions":"Self-storage lien compliance clocks, notices (dry-run default), proofs, and auction workflows. Not legal advice — every response includes disclaimer and pack_version.","transport":{"type":"streamable-http","url":"https://unitclock.com/api/mcp"},"authentication":{"required":true,"schemes":["bearer"],"primary":"org_api_key","demo_key_url":"https://unitclock.com/api/mcp/demo-key","server_card_url":"https://unitclock.com/.well-known/mcp.json","server_card_alias":"https://unitclock.com/.well-known/mcp/server-card.json","oauth":{"grant_types_supported":["client_credentials"],"token_endpoint":"https://unitclock.com/api/oauth/token"}},"registry":{"publishStatus":"scaffold-only","note":"server.json is not published to the MCP registry until DNS verification."},"legal":"UnitClock is not legal advice. Demo packs are fixtures. A pack is counsel-reviewed only after a named firm, attorney, and effective date are on file.","tools":[{"name":"run_daily_sweep","description":"Due, overdue, and blocked units in one pass. Use when: Start-of-day or nightly agent run across the portfolio. Do not use when: Do not use to change clocks, send mail, or mark a sale complete. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"list_units_due_for_notice","description":"Notice queue with statutory deadlines. Use when: Building today’s notice batch for site managers. Do not use when: Do not use as a substitute for get_unit_compliance_clock on one unit. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"get_unit_compliance_clock","description":"Per-unit deadline, blockers, and pack version. Use when: Answering “where is unit 204 in the lien clock?” before any write. Do not use when: Do not use to draft or send a notice. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"list_missing_proofs","description":"Proof gaps before sale or overlock. Use when: Pre-auction or pre-overlock QA on mail and photo artifacts. Do not use when: Do not use to attach a proof. Call attach_proof after you have a file URL. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"generate_lien_notice","description":"Dry-run notice draft; confirm-gated persist. Use when: Drafting a pack-backed notice before human or counsel review. Do not use when: Do not use for live mail. confirm persists a dry-run record only until a paid org enables sends. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"send_notice","description":"Confirm-gated vendor send (pass-through mail). Use when: Live certified/mail send after preview, scopes, and org live_sends_enabled. Do not use when: Do not use from the sandbox key. Live vendor sends stay on a paid org with live_sends_enabled. Required: notice_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["notice_id"],"additionalProperties":true}},{"name":"log_contact_attempt","description":"Non-statutory diligence log only. Use when: Documenting operator outreach — not a substitute for statutory notice. Do not use when: Do not use to satisfy statutory notice. Contact logs are non-statutory diligence. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"attach_proof","description":"Vault mail receipts, photos, affidavits. Use when: Closing a proof gap surfaced by list_missing_proofs. Do not use when: Do not use as the notice itself. It stores an artifact only. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"set_overlock_status","description":"Confirm-gated overlock event. Use when: Recording overlock after policy checks; confirm required. Do not use when: Do not use without confirm. It does not mail a notice. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"schedule_auction_ad_checklist","description":"Schedule newspaper or online ad checklist items. Use when: Moving a unit into advertise/sale prep with confirm. Do not use when: Do not use to mark the sale complete. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"list_auction_checklist","description":"Sale checklist and renotice flags. Use when: Pre-sale review for ads, SCRA, and renotice blockers. Do not use when: Do not use to reschedule. A date change is reschedule_auction. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"reschedule_auction","description":"Sets renotice_required — sale blocked. Use when: Date change that triggers renotice — expect sale_blocked. Do not use when: Do not use when you only need to read the checklist. It sets renotice_required. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"stop_sale_on_pay","description":"Full pay cancels auction pipeline. Use when: Tenant pays in full before the sale; confirm to unwind auction state. Do not use when: Do not use for a partial payment. Full pay only. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"record_payment_event","description":"Payment events on the clock. Use when: Posting a payment that should move DPD or cure state. Do not use when: Do not use as proof the tenant is current if the FMS still shows a balance. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"apply_partial_payment_policy","description":"Partial-pay policy application. Use when: Applying your partial-pay rules without assuming statutory cure. Do not use when: Do not assume a partial payment cures the lien. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"cancel_lien_process","description":"Operator cancel or CA opposition path. Use when: Stopping the lien clock (payoff, mistake, or CA opposition). Do not use when: Do not use to cure a balance. That is stop_sale_on_pay or record_payment_event. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"mark_auction_complete","description":"Blocked when SCRA or renotice open. Use when: Closing a sale only after blockers are clear. Do not use when: Do not use while SCRA or renotice blockers are open. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"check_scra_status","description":"Fails closed to unchecked without stored artifact. Use when: Recording an SCRA diligence check — not a compliance guarantee. Do not use when: Do not use to claim a unit is SCRA safe. A recorded check is not a guarantee. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}},{"name":"export_audit_trail","description":"Defense packet job (PDF/ZIP). Use when: Generating an audit trail export for a unit or date range. Do not use when: Do not use as legal advice or a filed pleading. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"create_defense_packet","description":"Counsel-ready export bundle. Use when: Packaging proofs and clock history for counsel review — not legal advice. Do not use when: Do not use to send the packet to counsel automatically. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"list_facilities","description":"Facilities visible to the API key. Use when: Multi-site agents resolving facility_id before unit calls. Do not use when: Do not use for unit status. Resolve facility_id, then call list_units. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"list_units","description":"Filter delinquent, in-lien, or auction-ready units. Use when: Scoped lists for a status lane (delinquent, in-lien, auction). Do not use when: Do not use for a single unit's deadline. Call get_unit_compliance_clock. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"sync_fms_delinquencies","description":"Pull delinquencies from your FMS ledger; confirm-gated. Use when: Nightly SiteLink/storEDGE pull that may change clocks — confirm required. Do not use when: Do not use for a one-unit balance edit. It can move clocks. confirm required. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"get_state_pack","description":"Operational pack metadata (attestation required for live). Use when: Resolving which state pack version applies before notices or exports. Do not use when: Do not treat a fixture pack as counsel-attested. Read counsel fields first. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"list_pack_changelog","description":"Pack version history. Use when: Explaining pack bumps to operators or counsel. Do not use when: Do not use to change the pack applied to a facility. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"submit_feature_ask","description":"Ask → build intake from an agent. Use when: Logging product feedback from an automated workflow. Do not use when: Do not use to change a state pack or promise a ship date. Required: title. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["title"],"additionalProperties":true}},{"name":"list_feature_asks","description":"Open asks on the board. Use when: Triaging customer asks without opening the Operator UI. Do not use when: Do not use to mark an ask shipped. That is ping_ask_shipped. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"additionalProperties":true}},{"name":"ping_ask_shipped","description":"Mark shipped; confirm-gated. Use when: Notifying the board that a requested build shipped. Do not use when: Do not use to create an ask. Required: ask_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["ask_id"],"additionalProperties":true}},{"name":"mark_notice_delivered","description":"Delivery artifact on the clock. Use when: Recording carrier delivery or return receipt on the unit timeline. Do not use when: Do not use to invent a statutory notice that was never generated. Required: unit_id. Not legal advice.","inputSchema":{"type":"object","properties":{"unit_id":{"type":"string","description":"Unit identifier when the tool is unit-scoped."},"facility_id":{"type":"string","description":"Facility identifier when the tool is facility-scoped."},"confirm":{"type":"boolean","description":"Set true only after reviewing the preview, on a key allowed to persist."},"dry_run":{"type":"boolean","description":"Defaults true. Sandbox keys ignore confirm and stay dry-run."},"idempotency_key":{"type":"string","description":"Optional retry key for mutating tools. Same key and same args replay the first result."},"cursor":{"type":"string","description":"Pagination cursor returned as next_cursor."},"limit":{"type":"integer","description":"Page size, 1–100. Default 50."}},"required":["unit_id"],"additionalProperties":true}}],"resources":[],"prompts":[]}