Skip to content

Worthune Verified Financial Models

by worthune.com · remote · no sign-in to list tools · v1.8.0 · published by com.worthune

61 verified financial models and a household planning engine: 20 MCP tools, 6 keyless, specs cited.

Deletes · 1Changes · 16

30 tools: 1 can delete or cancel things, 16 change things and 13 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http models https://worthune.com/api/mcp/mcp

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "run_model" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "run_model" says "run": a word for a change.

    What this check looks for
  • The server marks "try_household_projection" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

    What this check looks for
  • The server marks "draft_import_mapping" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "draft_import_mapping" says "import": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

30 tools

Deletes or cancels 1Claude Code: deny
  • archive_householdArchive a stored household (never deleted: the row stays readable, leaves the active-household meter, and stops accepting writes or projections).No findings

    Why it is in this group

    • The name "archive_household" says "archive": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Archive a stored household (never deleted: the row stays readable, leaves the active-household meter, and stops accepting writes or projections). The same operation as DELETE /api/v1/households/{id}.

    Annotations the server declares

    • title: Archive household
    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Changes things 16Claude Code: ask
  • answer_questionAnswer one open question.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Answer one open question. value proposes the corrected field as a data-change proposal that an approver or owner must approve before anything is written; confirm: true records that the data is right, and the same check will not ask about the field again. Send exactly one of them. Developer, approver or owner key. Refused when the household changed since the question was asked. Same as POST /api/v1/questions/{id}/answer.

    Annotations the server declares

    • title: Answer a Lodestar question about household data
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_householdCreate a persistent household resource from a household-schema document (docs/household-schema-spec.md: members, accounts by tax wrapper, liabilities, income and expense streams).No findings

    Why it is in this group

    • The name "create_household" says "create": a word for a change.
    Description, as the server wrote it
    Create a persistent household resource from a household-schema document (docs/household-schema-spec.md: members, accounts by tax wrapper, liabilities, income and expense streams). Validation rejects with JSON-path errors — fix the payload in one pass. Returns the household id to use with get/replace/project_household.

    Annotations the server declares

    • title: Create household
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • create_mandateAssign a standing mandate: strategy-watch (one household, the strategies you choose), tax-optimization (one household, minimize-lifetime-tax, the tax strategies) or rules-change (t…No findings

    Why it is in this group

    • The name "create_mandate" says "create": a word for a change.
    Description, as the server wrote it
    Assign a standing mandate: strategy-watch (one household, the strategies you choose), tax-optimization (one household, minimize-lifetime-tax, the tax strategies) or rules-change (the whole book, Growth and above: when tax rules or your assumption profile change, finds and ranks every affected household; send no household_id). Each has an objective, pinned constraints and an approval policy. Lodestar then works it when a deadline approaches, the household changes, rules or the organization's assumption profile change, a scheduled review comes due, or on run_mandate, and files proposals for an approver. constraints needs horizonYears and exactly one of profile { id, version } or assumptions { … } (never an implicit default); optional: strategies, materialityFloorUsd (default 1000), cooldownDays (30), maxOpenProposals (3), reviewCadence (quarterly), planner ("on"/"off", default off: the organization's certified planner model chooses among gate-passed proposals), taxRates, ladderCandidates, illustrativeCharacteristics, bracketFill { fillToRatesPct?, years? }, charitableGiving { annualGivingUsd, … } (tax-optimization runs charitable-giving only when charitableGiving names the gifts). One mandate per type per household. Each cycle's sweep counts the household as active for the month. Developer or owner key. Same as POST /api/v1/mandates.

    Annotations the server declares

    • title: Assign a Lodestar mandate to a household
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • decide_householdRun a Household Coordination Engine strategy on a stored household and get back a ranked decision object with evidence records.No findings

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    Description, as the server wrote it
    Run a Household Coordination Engine strategy on a stored household and get back a ranked decision object with evidence records. Strategies: withdrawal-sequencing (no params); roth-ladder (params.candidates: [{annualAmountUsd, years}]); ss-claiming (params.candidateAges?: {memberId: [ages 62-70]}); asset-location (params.taxRates: {marginalOrdinary, qualifiedAndLtcg} plus params.characteristics or params.illustrativeCharacteristics: true — the illustrative set is labeled not-a-recommendation and is never applied silently); tax-loss-harvesting (params.ordinaryMarginalRatePct, optional longTermRatePct and realizedGains); annual-gifting (params.doneeCount, params.years); pension-election (params.ownerId, startAge, discountRatePct, options — EPVs from the NCHS life table; adults need sex); bracket-fill (params.fillToRatesPct?: [10|12|22|24|32|35], params.years? — Roth conversions sized each year to the top of the bracket); charitable-giving (params.annualGivingUsd, optional otherItemizedDeductionsUsd, bunchYears 2-5, iraDistributionsUsd — every year vs bunched vs QCD routes under the 2026 charitable rules). Alternatives are ranked best-first by a checkable score under a named objective; deltas name their baseline; every projection-backed candidate links its own verifiable record; exclusions are stated in the notes.

    Annotations the server declares

    • title: Run a coordination strategy
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • draft_import_mappingWS3.5c: AI drafts the mapping; determinism executes it.1 finding

    Why it is in this group

    • The name "draft_import_mapping" says "import": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "draft_import_mapping" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}; The name "draft_import_mapping" says "import": a word for a change.

      What this check looks for
    Description, as the server wrote it
    WS3.5c: AI drafts the mapping; determinism executes it. Send up to 10 sample records from an export (column → string cell) and get back a DRAFT mapping template for import_households' template + records path. Three deterministic gates run before anything returns: strict JSON, the transcription guard (a numeric const anywhere in the draft is rejected — numbers bind to columns, never to values a model wrote), and the real import dry-run over your sample. Nothing is written. Review the template and the unmappedColumns honesty list, then run import_households yourself with dryRun: true over the full export.

    Annotations the server declares

    • title: Draft import mapping (AI-drafted, deterministically gated)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • import_householdsMigrate a book (WS3.5): import up to 200 households in one call, with dryRun: true validating everything and writing NOTHING — iterate until the per-row, per-field report is clean,…No findings

    Why it is in this group

    • The name "import_households" says "import": a word for a change.
    Description, as the server wrote it
    Migrate a book (WS3.5): import up to 200 households in one call, with dryRun: true validating everything and writing NOTHING — iterate until the per-row, per-field report is clean, then run for real. Two shapes: households[] of { importKey, label?, household } documents, or template + records — a declarative mapping template (docs/data-migration.md) executed deterministically over raw exported records, so YOU draft the small reviewable template and the engine does the transcription. importKey is the caller's stable id: re-runs are idempotent (already-imported keys skip and report their householdId); imports never overwrite.

    Annotations the server declares

    • title: Bulk-import households
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • manage_preferencesAn advisor's standing preferences, which the gate enforces in every cycle: avoid-strategy (optionally until a date), min-value for a strategy, max-annual-conversion, avoid-alternat…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    An advisor's standing preferences, which the gate enforces in every cycle: avoid-strategy (optionally until a date), min-value for a strategy, max-annual-conversion, avoid-alternative. action list (any role); add (an approver or owner key confirms it at once, a developer key only suggests it); confirm a suggestion (approver or owner); remove (a suggestion: developer and up; a confirmed preference: approver or owner). Same as /api/v1/mandates/{id}/preferences and /api/v1/preferences/{id}.

    Annotations the server declares

    • title: Read or set an advisor's preferences for a mandate
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • narrate_decisionThe Verified Narrative: client- or advisor-ready prose for a stored decision (decision_id) or an inline decision object.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    The Verified Narrative: client- or advisor-ready prose for a stored decision (decision_id) or an inline decision object. A model drafts the narrative FROM the decision; a deterministic gate then extracts every number in the draft and verifies each against the decision's own values — correctly-rounded restatements pass, invented numbers reject the draft whole (one retry, then refusal; a narrative is never patched). The response reports how many claims were checked.

    Annotations the server declares

    • title: Narrate a decision (number-verified prose)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • patch_householdApply a collection-level delta to a stored household without resending the whole document: set scalars (filingStatus, state), upsert entries by id (replace or append), remove entri…No findings

    Why it is in this group

    • The name "patch_household" says "patch": a word for a change.
    Description, as the server wrote it
    Apply a collection-level delta to a stored household without resending the whole document: set scalars (filingStatus, state), upsert entries by id (replace or append), remove entries by id. expectedVersion (from get_household) is REQUIRED — a delta is only meaningful against a version you have read. The merged result is validated in full; a delta can never produce an invalid household.

    Annotations the server declares

    • title: Patch household
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • project_householdRun the deterministic multi-year projection on a stored household — income, RMDs, federal + covered state tax, expenses, amortization, cash flow, net worth per year — optionally wi…No findings

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    Description, as the server wrote it
    Run the deterministic multi-year projection on a stored household — income, RMDs, federal + covered state tax, expenses, amortization, cash flow, net worth per year — optionally with seeded Monte Carlo (same seed, same result). Assumptions: pass your own, pin a profile by id+version, or omit both for the labeled illustrative default; the response always names its assumptionsSource. Every simplification that fired is listed in projection.assumptionsApplied — show your work.

    Annotations the server declares

    • title: Project household
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • replace_householdFull-document replace with optimistic concurrency: pass expectedVersion (from get_household) and a stale write loses cleanly with the current version instead of clobbering a concur…No findings

    Why it is in this group

    • The name "replace_household" says "replace": a word for a change.
    Description, as the server wrote it
    Full-document replace with optimistic concurrency: pass expectedVersion (from get_household) and a stale write loses cleanly with the current version instead of clobbering a concurrent change.

    Annotations the server declares

    • title: Replace household
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • review_proposalDecide one pending proposal.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Decide one pending proposal. APPROVER OR OWNER KEY ONLY: developer and viewer keys are refused, so the key that configures mandates cannot sign off their output. approve executes nothing; it writes one signed projected-value ledger entry (a re-pin proposal moves the mandate to the newer profile version instead). reject needs a reason: not-material, client-preference, timing, data-is-wrong, already-done, or other (with a note). Refused when the proposal is not pending, has expired, or the household changed since it was computed. An agent should only call this when the person it acts for has made the decision. Same as POST /api/v1/proposals/{id}/approve and /reject.

    Annotations the server declares

    • title: Approve or reject a Lodestar proposal
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • run_mandateRecord a manual trigger and run the mandate's cycle now: sweep its strategies on the household's current version, store each decision, and file proposals that clear the gate.No findings

    Why it is in this group

    • The name "run_mandate" says "run": a word for a change.
    Description, as the server wrote it
    Record a manual trigger and run the mandate's cycle now: sweep its strategies on the household's current version, store each decision, and file proposals that clear the gate. Returns the cycle; read proposals with list_proposals and the reasons with get_mandate. Developer or owner key. Same as POST /api/v1/mandates/{id}/run.

    Annotations the server declares

    • title: Work a Lodestar mandate now
    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: false
  • run_modelRun a Concordance-tested calculation model.1 finding

    Why it is in this group

    • The name "run_model" says "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "run_model" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "run_model" says "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Run a Concordance-tested calculation model. Inputs must satisfy the contract from get_model_contract (all fields required, values inside their domains — out-of-domain requests are rejected, never clamped). The response echoes inputs, spec version, assumptions, triggered sentinels, and sourced constants; outputs are exactly what the engine computed, untouched. Share the matching interactive calculator with users: https://worthune.com/scenarios/<model> for scenario models.

    Annotations the server declares

    • title: Run verified model
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • try_household_projectionRun the deterministic multi-year household projection on a document you pass in — income, RMDs, Roth conversions, federal and covered-state tax, expenses, amortization, the tax-gro…1 finding

    Why it is in this group

    • The description's first verb is "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "try_household_projection" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Run the deterministic multi-year household projection on a document you pass in — income, RMDs, Roth conversions, federal and covered-state tax, expenses, amortization, the tax-grossed-up deficit draw, and net worth per year — optionally with a seeded Monte Carlo. NOTHING IS STORED: no household is created, no id issued, no record kept. Takes any key, a free sandbox key included (worthune.com/sandbox). The response carries every simplification that fired in projection.assumptionsApplied and an evidence record whose hash reproduces on an identical document, so you can show your work. Use list_example_households for a starting shape. For a household that persists — with an id, bulk import, webhooks and drift detection — see create_household.

    Annotations the server declares

    • title: Project a household (nothing stored)
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • verify_claimVerify claims about a model's outputs against the engine before presenting them to a user.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Verify claims about a model's outputs against the engine before presenting them to a user. Pass the model inputs plus one or more claims ({path, op, value}); each claim comes back verified, violated, or out-of-scope, with the engine's computed value as proof and a decision-record hash tying the verdict to this spec version and these inputs. Out-of-scope means the model does not compute the claimed quantity — this tool never guesses. Use it to check a number you are about to state; use run_model when you want the full output envelope.

    Annotations the server declares

    • title: Verify claim
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 13Claude Code: allow
  • get_decisionOne stored decision in full: the decision object as it was produced, the household version it ran against, and its evidence record with the hashed inputs — enough to re-verify it w…No findings

    Why it is in this group

    • The name "get_decision" says "get": a word for reading.
    Description, as the server wrote it
    One stored decision in full: the decision object as it was produced, the household version it ran against, and its evidence record with the hashed inputs — enough to re-verify it with /api/v1/records/verify or the SDKs' verifyRecord. Decisions stored before their inputs were retained are returned hash-only and say so. Same as GET /api/v1/decisions/{id}.

    Annotations the server declares

    • title: Get a stored decision
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_householdFetch a stored household document and its metadata by id.No findings

    Why it is in this group

    • The name "get_household" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a stored household document and its metadata by id.

    Annotations the server declares

    • title: Get household
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_household_pictureOne household, one picture: the balance sheet by wrapper and owner, income and spending this year, how current the last computation is against the engine's spec (the same drift rea…No findings

    Why it is in this group

    • The name "get_household_picture" says "get": a word for reading.
    Description, as the server wrote it
    One household, one picture: the balance sheet by wrapper and owner, income and spending this year, how current the last computation is against the engine's spec (the same drift reasons the weekly scan delivers), the newest decisions, and a data-quality report naming what is missing and what supplying it would unlock. Sums only — no new number of consequence; nothing is stored. Same as GET /api/v1/households/{id}/picture. Pass as_of (YYYY-MM-DD) to pin the date; it is echoed back.

    Annotations the server declares

    • title: Get the household picture
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_ledgerLedger entries written by approvals, newest first, optionally for one mandate or household, with the total.No findings

    Why it is in this group

    • The name "get_ledger" says "get": a word for reading.
    Description, as the server wrote it
    Ledger entries written by approvals, newest first, optionally for one mandate or household, with the total. Each is an evidence record (hash over its inputs and outputs, Ed25519-signed with the key at /api/v1/records/keys) naming the stored decision it came from. Values are PROJECTED and NOMINAL against each decision's own baseline; the total is a sum of projections, not realized value. Any key role. Same as GET /api/v1/ledger.

    Annotations the server declares

    • title: Read the projected-value ledger
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_mandateOne mandate and its last 20 cycles, each with the strategies swept and the gate's reason for every candidate it did not propose (below the floor, cooldown, duplicate, max open), so…No findings

    Why it is in this group

    • The name "get_mandate" says "get": a word for reading.
    Description, as the server wrote it
    One mandate and its last 20 cycles, each with the strategies swept and the gate's reason for every candidate it did not propose (below the floor, cooldown, duplicate, max open), so 'why did nothing happen?' has an answer. Any key role. Same as GET /api/v1/mandates/{id}.

    Annotations the server declares

    • title: Get a Lodestar mandate and its recent cycles
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • get_model_contractGet a model's machine-readable contract: required inputs with types and valid domains, cross-field constraints, sentinel-value meanings, and the government constants (with sources)…No findings

    Why it is in this group

    • The name "get_model_contract" says "get": a word for reading.
    Description, as the server wrote it
    Get a model's machine-readable contract: required inputs with types and valid domains, cross-field constraints, sentinel-value meanings, and the government constants (with sources) the model uses. Set include_spec to also receive the full specification markdown (exact formulas, assumptions, exclusions, known issues).

    Annotations the server declares

    • title: Get model contract
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_decisionsThe append-only history of coordination strategies run on a stored household, newest first — id, strategy, spec version, household version, record hash, when.No findings

    Why it is in this group

    • The name "list_decisions" says "list": a word for reading.
    Description, as the server wrote it
    The append-only history of coordination strategies run on a stored household, newest first — id, strategy, spec version, household version, record hash, when. Metadata only; get_decision returns one in full. Same as GET /api/v1/households/{id}/decisions.

    Annotations the server declares

    • title: List a household's decisions
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_example_householdsTwelve FICTIONAL households, each built to exercise a different part of the planning engine — accumulation, a Roth conversion window, drawdown on a low-basis portfolio, spousal Soc…No findings

    Why it is in this group

    • The name "list_example_households" says "list": a word for reading.
    Description, as the server wrote it
    Twelve FICTIONAL households, each built to exercise a different part of the planning engine — accumulation, a Roth conversion window, drawdown on a low-basis portfolio, spousal Social Security coordination, running out of money, negative amortization, and more. Use one as a starting point for try_household_projection, or as a worked shape when helping someone describe their own household. Pass an id to get the full document back. No API key required.

    Annotations the server declares

    • title: List example households
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_householdsList the organization's stored households — id, label, advisorRef, version, status, when it was last computed — without the documents (get_household returns one in full).No findings

    Why it is in this group

    • The name "list_households" says "list": a word for reading.
    Description, as the server wrote it
    List the organization's stored households — id, label, advisorRef, version, status, when it was last computed — without the documents (get_household returns one in full). Defaults to active households; GET /api/v1/households returns every status — pass status: "all" for the same listing.

    Annotations the server declares

    • title: List households
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_mandatesThe organization's mandates, newest first, optionally for one household or status, with an alert listing trigger events left open over an hour.No findings

    Why it is in this group

    • The name "list_mandates" says "list": a word for reading.
    Description, as the server wrote it
    The organization's mandates, newest first, optionally for one household or status, with an alert listing trigger events left open over an hour. Any key role. Same as GET /api/v1/mandates.

    Annotations the server declares

    • title: List Lodestar mandates
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_modelsList Worthune's Concordance-tested financial calculation models (an independent second implementation must agree with the engine, per the published spec).No findings

    Why it is in this group

    • The name "list_models" says "list": a word for reading.
    Description, as the server wrote it
    List Worthune's Concordance-tested financial calculation models (an independent second implementation must agree with the engine, per the published spec). Returns model names and spec versions. Call get_model_contract before running a model.

    Annotations the server declares

    • title: List verified models
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_proposalsProposals Lodestar filed for a person to decide, newest first, optionally filtered by status (pending, approved, rejected, expired, superseded, stale, withdrawn), mandate or househ…No findings

    Why it is in this group

    • The name "list_proposals" says "list": a word for reading.
    Description, as the server wrote it
    Proposals Lodestar filed for a person to decide, newest first, optionally filtered by status (pending, approved, rejected, expired, superseded, stale, withdrawn), mandate or household. Each carries the recommendation and its intents verbatim from the decision, the projected value (NOMINAL horizon-end dollars against the current plan, not discounted, not realized) with its basis, the alternatives considered, caveats, and the evidence (stored decision id, record hash, signature). Any key role. Same as GET /api/v1/proposals.

    Annotations the server declares

    • title: List Lodestar proposals
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • list_questionsLodestar's questions about one field of a household's data (a taxable account with no cost basis, a Social Security stream with no amount, living expenses of zero), asked by determ…No findings

    Why it is in this group

    • The name "list_questions" says "list": a word for reading.
    Description, as the server wrote it
    Lodestar's questions about one field of a household's data (a taxable account with no cost basis, a Social Security stream with no amount, living expenses of zero), asked by deterministic checks in every household cycle; at most one open per mandate. Filter by status (open, answered, confirmed, stale), mandate_id or household_id. Any key role. Same as GET /api/v1/questions.

    Annotations the server declares

    • title: Questions Lodestar is asking about household data
    • readOnlyHint: true
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.8.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http models https://worthune.com/api/mcp/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__models__list_models",
      "mcp__models__get_model_contract",
      "mcp__models__get_household",
      "mcp__models__list_households",
      "mcp__models__list_decisions",
      "mcp__models__get_decision",
      "mcp__models__get_household_picture",
      "mcp__models__list_example_households",
      "mcp__models__list_mandates",
      "mcp__models__get_mandate",
      "mcp__models__list_proposals",
      "mcp__models__get_ledger",
      "mcp__models__list_questions"
    ],
    "ask": [
      "mcp__models__run_model",
      "mcp__models__verify_claim",
      "mcp__models__create_household",
      "mcp__models__replace_household",
      "mcp__models__patch_household",
      "mcp__models__project_household",
      "mcp__models__try_household_projection",
      "mcp__models__import_households",
      "mcp__models__draft_import_mapping",
      "mcp__models__narrate_decision",
      "mcp__models__decide_household",
      "mcp__models__create_mandate",
      "mcp__models__run_mandate",
      "mcp__models__review_proposal",
      "mcp__models__answer_question",
      "mcp__models__manage_preferences"
    ],
    "deny": [
      "mcp__models__archive_household"
    ]
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as models. Review it before you use it.