Skip to main content
Glama

Worthune Verified Financial Models

create_mandate

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.

Input Schema

NameRequiredDescriptionDefault
typeNoDefault strategy-watch
statusNoDefault active
api_keyNoWorthune API key (wk_…)
objectiveYes
constraintsYesSee the description; validated exactly as REST validates it.
household_idNoRequired except for rules-change
approval_policyNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • addedInput schema / properties / household_id / description
      Added value: +"Required except for rules-change"
    • addedInput schema / properties / type
      Added value: +{
      +  "description": "Default strategy-watch",
      +  "enum": [
      +    "strategy-watch",
      +    "tax-optimization",
      +    "rules-change"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "household_id",
      -  "objective",
      -  "constraints"
      -]New value: +[
      +  "objective",
      +  "constraints"
      +]
  2. Added

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations only declare the safety profile (readOnly=false, idempotent=false, destructive=false). The description supplies what they cannot: the auth requirement ("Developer or owner key"), side effects ("files proposals for an approver"), cardinality ("One mandate per type per household"), and the activity side effect ("Each cycle's sweep counts the household as active for the month").

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the type enumeration before details, and dense but every clause carries operational fact. It is a single long paragraph rather than segmented lists, which slightly hurts scannability for such a rich payload.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 7-param tool with nested objects and no output schema, the description gives the constraints contract, type semantics, defaults, auth, and side effects an agent needs to invoke it correctly. Nothing material is left uncovered.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The constraints parameter is an open additionalProperties object, so the schema is uninformative about it; the description compensates heavily by requiring horizonYears and exactly one of profile/assumptions and listing defaults (materialityFloorUsd 1000, cooldownDays 30, maxOpenProposals 3, reviewCadence quarterly, planner default off) plus optional keys. This adds meaning well beyond the 71% schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Assign a standing mandate") and enumerates the three mandate types with their scope (one household vs whole book) and objective. It also maps to the REST endpoint and clearly distinguishes itself from read/run siblings (get_mandate, list_mandates, run_mandate).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description spells out each type's condition (rules-change requires no household_id, tax-optimization runs charitable-giving only when charitableGiving names gifts) and lists the triggers under which Lodestar acts on a mandate. It routes well among the three types but gives no explicit guidance against the read/run siblings beyond naming run_mandate as a trigger.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources