Skip to main content
Glama

Household Ledger

get_household_ledger
Read-onlyIdempotent

Use this when a member asks what their household holds and who holds it: the X1 Ledger's own record, grouped under the household item that holds each thing (held personally, a trust, a company, a property), the way their Ledger page shows it. Each item has its label, kind (cash or investment account, property, private investment, business interest, life insurance policy, mortgage or other debt), the value X1 has with its date and source (connected account, connected books, document, valuation estimate, or entered by the household), how old a stale value is, and whether its holder is confirmed. A total appears only when every part is counted, sourced, current, in one currency and adds back to the Ledger's own figure, and then says what it covers and what it does not; otherwise it is withheld with the reasons. householdItemId is the same id list_household_entities returns, so the two join. Own household only, on the member's own connection; never another household. Read only: refreshes nothing and changes nothing.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_household_ledger"
  }
}

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
asOfYes
kindYes
totalYes
holdersYes
ledgerUrlYes
sourcesNotReadYes
holderNotConfirmedYes
householdItemsReadYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • addedOutput schema / properties / holders / items / properties / accountsToConfirm
      Added value: +{
      +  "items": {
      +    "additionalProperties": false,
      +    "properties": {
      +      "institution": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "lastFour": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      },
      +      "matchedBy": {
      +        "const": "name",
      +        "type": "string"
      +      },
      +      "name": {
      +        "type": "string"
      +      },
      +      "plaidAccountId": {
      +        "description": "The id file_plaid_account_under_entity takes, for the caller's own account. When proposing that filing, pass onlyIfUnfiled: true so a filing the household made since this read is never moved.",
      +        "type": "string"
      +      },
      +      "suggestedHouseholdItemId": {
      +        "anyOf": [
      +          {
      +            "type": "string"
      +          },
      +          {
      +            "type": "null"
      +          }
      +        ]
      +      }
      +    },
      +    "required": [
      +      "institution",
      +      "lastFour",
      +      "matchedBy",
      +      "name",
      +      "plaidAccountId",
      +      "suggestedHouseholdItemId"
      +    ],
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedOutput schema / properties / holders / items / properties / subtotal / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "assets": {
      -        "type": "number"
      -      },
      -      "covers": {
      -        "type": "string"
      -      },
      -      "currency": {
      -        "type": "string"
      -      },
      -      "debts": {
      -        "type": "number"
      -      },
      -      "doesNotCover": {
      -        "type": "string"
      -      },
      -      "net": {
      -        "type": "number"
      -      },
      -      "status": {
      -        "const": "shown",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "assets",
      -      "covers",
      -      "currency",
      -      "debts",
      -      "doesNotCover",
      -      "net",
      -      "status"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "reasons": {
      -        "items": {
      -          "enum": [
      -            "added_parts_differ",
      -            "currency",
      -            "estimate",
      -            "holder_open",
      -            "ledger_withheld",
      -            "needs_review",
      -            "no_value",
      -            "source_not_recorded",
      -            "source_unread",
      -            "stale",
      -            "typed_in",
      -            "undated",
      -            "unavailable"
      -          ],
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "status": {
      -        "const": "withheld",
      -        "type": "string"
      -      },
      -      "why": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "reasons",
      -      "status",
      -      "why"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "assets": {
      +        "type": "number"
      +      },
      +      "covers": {
      +        "type": "string"
      +      },
      +      "currency": {
      +        "type": "string"
      +      },
      +      "debts": {
      +        "type": "number"
      +      },
      +      "doesNotCover": {
      +        "type": "string"
      +      },
      +      "net": {
      +        "type": "number"
      +      },
      +      "status": {
      +        "const": "shown",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "assets",
      +      "covers",
      +      "currency",
      +      "debts",
      +      "doesNotCover",
      +      "net",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "reasons": {
      +        "items": {
      +          "enum": [
      +            "added_parts_differ",
      +            "currency",
      +            "estimate",
      +            "holder_open",
      +            "ledger_withheld",
      +            "needs_review",
      +            "no_value",
      +            "source_not_recorded",
      +            "source_unread",
      +            "stale",
      +            "typed_in",
      +            "unavailable",
      +            "undated"
      +          ],
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "status": {
      +        "const": "withheld",
      +        "type": "string"
      +      },
      +      "why": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "reasons",
      +      "status",
      +      "why"
      +    ],
      +    "type": "object"
      +  }
      +]
    • changedOutput schema / properties / holders / items / required
      Previous value: -[
      -  "holdings",
      -  "householdItemId",
      -  "kind",
      -  "label",
      -  "subtotal",
      -  "titledAs"
      -]New value: +[
      +  "accountsToConfirm",
      +  "holdings",
      +  "householdItemId",
      +  "kind",
      +  "label",
      +  "subtotal",
      +  "titledAs"
      +]
    • changedOutput schema / properties / total / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "assets": {
      -        "type": "number"
      -      },
      -      "covers": {
      -        "type": "string"
      -      },
      -      "currency": {
      -        "type": "string"
      -      },
      -      "debts": {
      -        "type": "number"
      -      },
      -      "doesNotCover": {
      -        "type": "string"
      -      },
      -      "net": {
      -        "type": "number"
      -      },
      -      "status": {
      -        "const": "shown",
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "assets",
      -      "covers",
      -      "currency",
      -      "debts",
      -      "doesNotCover",
      -      "net",
      -      "status"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "reasons": {
      -        "items": {
      -          "enum": [
      -            "added_parts_differ",
      -            "currency",
      -            "estimate",
      -            "holder_open",
      -            "ledger_withheld",
      -            "needs_review",
      -            "no_value",
      -            "source_not_recorded",
      -            "source_unread",
      -            "stale",
      -            "typed_in",
      -            "undated",
      -            "unavailable"
      -          ],
      -          "type": "string"
      -        },
      -        "type": "array"
      -      },
      -      "status": {
      -        "const": "withheld",
      -        "type": "string"
      -      },
      -      "why": {
      -        "items": {
      -          "type": "string"
      -        },
      -        "type": "array"
      -      }
      -    },
      -    "required": [
      -      "reasons",
      -      "status",
      -      "why"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "assets": {
      +        "type": "number"
      +      },
      +      "covers": {
      +        "type": "string"
      +      },
      +      "currency": {
      +        "type": "string"
      +      },
      +      "debts": {
      +        "type": "number"
      +      },
      +      "doesNotCover": {
      +        "type": "string"
      +      },
      +      "net": {
      +        "type": "number"
      +      },
      +      "status": {
      +        "const": "shown",
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "assets",
      +      "covers",
      +      "currency",
      +      "debts",
      +      "doesNotCover",
      +      "net",
      +      "status"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "reasons": {
      +        "items": {
      +          "enum": [
      +            "added_parts_differ",
      +            "currency",
      +            "estimate",
      +            "holder_open",
      +            "ledger_withheld",
      +            "needs_review",
      +            "no_value",
      +            "source_not_recorded",
      +            "source_unread",
      +            "stale",
      +            "typed_in",
      +            "unavailable",
      +            "undated"
      +          ],
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "status": {
      +        "const": "withheld",
      +        "type": "string"
      +      },
      +      "why": {
      +        "items": {
      +          "type": "string"
      +        },
      +        "type": "array"
      +      }
      +    },
      +    "required": [
      +      "reasons",
      +      "status",
      +      "why"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Added

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the annotations, the description explains grouping by holder, item types, value source and freshness, holder-confirmation status, and the exact conditions under which a total is shown or withheld with reasons. It also reinforces scope and read-only behavior by saying it refreshes nothing and changes nothing.

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?

The description is front-loaded with the usage condition and then proceeds through output structure, total logic, join behavior, scope, and read-only behavior. It is long and dense, with some nested parentheticals, but nearly every sentence carries operational information.

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?

Given that the tool has no input parameters, an output schema, and annotations covering read-only safety, the description supplies the missing context an agent needs: what is returned, how totals are handled, how it joins to list_household_entities, and the strict household scope.

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

Parameters4/5

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

There are zero input parameters, so the baseline is 4. The description mentions householdItemId as an identifier shared with list_household_entities, which adds useful join semantics, though it is not an input parameter to clarify.

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?

The description states a specific retrieval purpose: what the household holds and who holds it, presented as the X1 Ledger's own grouped record. It is concrete enough to distinguish this Ledger view from sibling household-context tools, and it explicitly links the returned householdItemId to list_household_entities.

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?

It gives a clear trigger — use when a member asks what their household holds and who holds it — and a clear exclusion: own household only, on the member's own connection, never another household. It does not name alternative sibling tools for adjacent needs, so it stops short of full when/when-not/alternatives guidance.

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.