Skip to main content
Glama

Manage XMemo Ledger

ledger
Destructive

Manage Ledger transactions. For 'I paid 199 CNY for a membership', use ledger(action='add_expense'). For this-month totals, use action='summary' with months=1 and the user's real owner_timezone. Actions: add_expense, list, summary, overview, update_transaction.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
itemNoThe purchased item or service, for example 2 watermelons or Nintendo Switch 2.
noteNoOptional completion note.
pathNoA simple user-facing category or path for this memory, such as preferences, projects/xmemo, or personal/travel.finance/ledger/expenses
limitNoMaximum number of results to return.
patchNoMemory/update alias: content and/or tags.
queryNoNatural-language question or search text.
scopeNoOptional scope that narrows memory access; leave blank for the token default.
actionYesUsage action or audit-event action filter, depending on the tool.
amountNoPositive transaction amount as a number.
bucketNoMemory bucket or namespace to read from or write to; use % only for tools that support wildcard reads.
monthsNoNumber of recent ledger months to summarize.
offsetNoNumber of matching records to skip for pagination.
date_toNoOnly include ledger transactions on or before this YYYY-MM-DD date.
team_idNoOptional team/workspace identifier for team-scoped memory access.
agent_idNoOptional client-supplied agent label for memory attribution.
categoryNoOptional spending category, such as food, transport, or electronics.
currencyNoCurrency code or label, such as CNY, RMB, JPY, yen, or USD. For ledger search/list tools, leave blank unless the user explicitly requested one currency; labels are normalized to codes.
merchantNoOptional merchant or store name.
date_fromNoOnly include ledger transactions on or after this YYYY-MM-DD date.
device_idNoOptional client-supplied device identifier for attribution.
max_amountNoOnly include ledger transactions with amount less than or equal to this value.
min_amountNoOnly include ledger transactions with amount greater than or equal to this value.
project_idNoOptional project identifier to filter the Ledger or TODO workspace.
descriptionNoProject description for project/create.
output_jsonNoReturn a machine-readable JSON response instead of a human-readable summary.
device_labelNoOptional human-readable device label for attribution.
owner_timezoneNoThe user's real IANA timezone, such as Asia/Tokyo or America/Los_Angeles. Required for honest calendar periods; never guess UTC.
payment_methodNoOptional payment method, such as card, cash, Alipay, or WeChat Pay.
transaction_idNoInput value for the Ledger tool.
expected_versionNoOptimistic-concurrency version read from the current record; a stale value is rejected with VERSION_CONFLICT.
transaction_dateNoTransaction date in YYYY-MM-DD. Leave blank to use today's UTC date.
transaction_typeNoOptional ledger type filter: expense, income, refund, or transfer.
agent_instance_idNoOptional stable, non-secret agent instance ID for per-client attribution.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. Changed24 schema fields changed
    • removedInput schema / properties / account_hint
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Account Hint",
      -  "type": "string"
      -}
    • removedInput schema / properties / account_label
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Account Label",
      -  "type": "string"
      -}
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "add_expense",
      -  "list",
      -  "summary",
      -  "overview",
      -  "update_transaction",
      -  "subscription_create",
      -  "subscription_edit",
      -  "subscription_transition"
      -]New value: +[
      +  "add_expense",
      +  "list",
      +  "summary",
      +  "overview",
      +  "update_transaction"
      +]
    • removedInput schema / properties / amount_mode
      Removed value: -{
      -  "default": "fixed",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Amount Mode",
      -  "type": "string"
      -}
    • removedInput schema / properties / as_of
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "As Of",
      -  "type": "string"
      -}
    • removedInput schema / properties / cadence
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Cadence",
      -  "type": "string"
      -}
    • removedInput schema / properties / current_period_started_on
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Current Period Started On",
      -  "type": "string"
      -}
    • changedInput schema / properties / description / description
      Previous value: -"Input value for the Ledger tool."New value: +"Project description for project/create."
    • removedInput schema / properties / ended_on
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Ended On",
      -  "type": "string"
      -}
    • removedInput schema / properties / expected_amount
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Expected Amount",
      -  "type": "string"
      -}
    • removedInput schema / properties / interval_count
      Removed value: -{
      -  "default": 1,
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Interval Count",
      -  "type": "integer"
      -}
    • removedInput schema / properties / interval_unit
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Interval Unit",
      -  "type": "string"
      -}
    • removedInput schema / properties / next_charge_on
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Next Charge On",
      -  "type": "string"
      -}
    • removedInput schema / properties / notes
      Removed value: -{
      -  "default": "",
      -  "description": "Freeform notes explaining recall feedback or corrections.",
      -  "title": "Notes",
      -  "type": "string"
      -}
    • changedInput schema / properties / patch / description
      Previous value: -"Input value for the Ledger tool."New value: +"Memory/update alias: content and/or tags."
    • removedInput schema / properties / plan_name
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Plan Name",
      -  "type": "string"
      -}
    • removedInput schema / properties / plan_tier
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Plan Tier",
      -  "type": "string"
      -}
    • removedInput schema / properties / renewal_mode
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Renewal Mode",
      -  "type": "string"
      -}
    • removedInput schema / properties / review_lead_days
      Removed value: -{
      -  "default": 0,
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Review Lead Days",
      -  "type": "integer"
      -}
    • removedInput schema / properties / review_todo_opt_in
      Removed value: -{
      -  "default": false,
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Review Todo Opt In",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / service_key
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Service Key",
      -  "type": "string"
      -}
    • removedInput schema / properties / service_name
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Service Name",
      -  "type": "string"
      -}
    • removedInput schema / properties / subscription_id
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Subscription Id",
      -  "type": "string"
      -}
    • removedInput schema / properties / subscription_status
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Subscription Status",
      -  "type": "string"
      -}
  2. Changed24 schema fields changed
    • addedInput schema / properties / account_hint
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Account Hint",
      +  "type": "string"
      +}
    • addedInput schema / properties / account_label
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Account Label",
      +  "type": "string"
      +}
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "add_expense",
      -  "list",
      -  "summary",
      -  "overview",
      -  "update_transaction"
      -]New value: +[
      +  "add_expense",
      +  "list",
      +  "summary",
      +  "overview",
      +  "update_transaction",
      +  "subscription_create",
      +  "subscription_edit",
      +  "subscription_transition"
      +]
    • addedInput schema / properties / amount_mode
      Added value: +{
      +  "default": "fixed",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Amount Mode",
      +  "type": "string"
      +}
    • addedInput schema / properties / as_of
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "As Of",
      +  "type": "string"
      +}
    • addedInput schema / properties / cadence
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Cadence",
      +  "type": "string"
      +}
    • addedInput schema / properties / current_period_started_on
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Current Period Started On",
      +  "type": "string"
      +}
    • changedInput schema / properties / description / description
      Previous value: -"Project description for project/create."New value: +"Input value for the Ledger tool."
    • addedInput schema / properties / ended_on
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Ended On",
      +  "type": "string"
      +}
    • addedInput schema / properties / expected_amount
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Expected Amount",
      +  "type": "string"
      +}
    • addedInput schema / properties / interval_count
      Added value: +{
      +  "default": 1,
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Interval Count",
      +  "type": "integer"
      +}
    • addedInput schema / properties / interval_unit
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Interval Unit",
      +  "type": "string"
      +}
    • addedInput schema / properties / next_charge_on
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Next Charge On",
      +  "type": "string"
      +}
    • addedInput schema / properties / notes
      Added value: +{
      +  "default": "",
      +  "description": "Freeform notes explaining recall feedback or corrections.",
      +  "title": "Notes",
      +  "type": "string"
      +}
    • changedInput schema / properties / patch / description
      Previous value: -"Memory/update alias: content and/or tags."New value: +"Input value for the Ledger tool."
    • addedInput schema / properties / plan_name
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Plan Name",
      +  "type": "string"
      +}
    • addedInput schema / properties / plan_tier
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Plan Tier",
      +  "type": "string"
      +}
    • addedInput schema / properties / renewal_mode
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Renewal Mode",
      +  "type": "string"
      +}
    • addedInput schema / properties / review_lead_days
      Added value: +{
      +  "default": 0,
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Review Lead Days",
      +  "type": "integer"
      +}
    • addedInput schema / properties / review_todo_opt_in
      Added value: +{
      +  "default": false,
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Review Todo Opt In",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / service_key
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Service Key",
      +  "type": "string"
      +}
    • addedInput schema / properties / service_name
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Service Name",
      +  "type": "string"
      +}
    • addedInput schema / properties / subscription_id
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Subscription Id",
      +  "type": "string"
      +}
    • addedInput schema / properties / subscription_status
      Added value: +{
      +  "default": "",
      +  "description": "Input value for the Ledger tool.",
      +  "title": "Subscription Status",
      +  "type": "string"
      +}
  3. Changed22 schema fields changed
    • removedInput schema / properties / account_hint
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Account Hint",
      -  "type": "string"
      -}
    • removedInput schema / properties / account_label
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Account Label",
      -  "type": "string"
      -}
    • changedInput schema / properties / action / enum
      Previous value: -[
      -  "add_expense",
      -  "list",
      -  "summary",
      -  "overview",
      -  "update_transaction",
      -  "subscription_create",
      -  "subscription_edit",
      -  "subscription_transition"
      -]New value: +[
      +  "add_expense",
      +  "list",
      +  "summary",
      +  "overview",
      +  "update_transaction"
      +]
    • removedInput schema / properties / amount_mode
      Removed value: -{
      -  "default": "fixed",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Amount Mode",
      -  "type": "string"
      -}
    • removedInput schema / properties / as_of
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "As Of",
      -  "type": "string"
      -}
    • removedInput schema / properties / cadence
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Cadence",
      -  "type": "string"
      -}
    • removedInput schema / properties / current_period_started_on
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Current Period Started On",
      -  "type": "string"
      -}
    • removedInput schema / properties / ended_on
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Ended On",
      -  "type": "string"
      -}
    • removedInput schema / properties / expected_amount
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Expected Amount",
      -  "type": "string"
      -}
    • removedInput schema / properties / interval_count
      Removed value: -{
      -  "default": 1,
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Interval Count",
      -  "type": "integer"
      -}
    • removedInput schema / properties / interval_unit
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Interval Unit",
      -  "type": "string"
      -}
    • removedInput schema / properties / next_charge_on
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Next Charge On",
      -  "type": "string"
      -}
    • removedInput schema / properties / notes
      Removed value: -{
      -  "default": "",
      -  "description": "Freeform notes explaining recall feedback or corrections.",
      -  "title": "Notes",
      -  "type": "string"
      -}
    • removedInput schema / properties / plan_name
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Plan Name",
      -  "type": "string"
      -}
    • removedInput schema / properties / plan_tier
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Plan Tier",
      -  "type": "string"
      -}
    • removedInput schema / properties / renewal_mode
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Renewal Mode",
      -  "type": "string"
      -}
    • removedInput schema / properties / review_lead_days
      Removed value: -{
      -  "default": 0,
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Review Lead Days",
      -  "type": "integer"
      -}
    • removedInput schema / properties / review_todo_opt_in
      Removed value: -{
      -  "default": false,
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Review Todo Opt In",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / service_key
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Service Key",
      -  "type": "string"
      -}
    • removedInput schema / properties / service_name
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Service Name",
      -  "type": "string"
      -}
    • removedInput schema / properties / subscription_id
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Subscription Id",
      -  "type": "string"
      -}
    • removedInput schema / properties / subscription_status
      Removed value: -{
      -  "default": "",
      -  "description": "Input value for the Ledger tool.",
      -  "title": "Subscription Status",
      -  "type": "string"
      -}
  4. Changed2 schema fields changed
    • changedInput schema / properties / description / description
      Previous value: -"Input value for the Ledger tool."New value: +"Project description for project/create."
    • changedInput schema / properties / patch / description
      Previous value: -"Input value for the Ledger tool."New value: +"Memory/update alias: content and/or tags."
  5. Added

TDQS

A3.7/5.0
Behavior3/5

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

The annotations already carry destructiveHint true and readOnlyHint false, so the agent knows this can mutate data. The desciption adds action-specific context, but it does not disclose what destruction or mutation can look like, such as whether update_transaction overwrites records or whether expected_version is required. With annotations present, the bar is lower, but the description adds little behavioral depth beyond listing actions.

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?

Three s- sentences, examples front-loaded, no wasted prose. The opening 'Manage Ledger transactions' and the closing action list overlap slightly, but the overall structure is tight and scannable for an agent.

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

Completeness3/5

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

With 33 parameters and 5 actions, the description is under-specified for some actions: list, overview, update_transaction are only named, not explained. An agent gets good guidance for add_expense and summary, but little orientation for choosing among list/summary/overview or for performing updates. The output schema and high param coverage soften the gap, but not enough for a tool this complex.

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?

Schema description coverage is 100%, so the baseline is a 3. The description adds real parameter semantics by linking action='add_expense' to a natural-language utterance and by specifying months=1 plus the user's real owner_timezone for summary. This meaningfully helps an agent map intents to parameter values beyond what the schema states.

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

Purpose4/5

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

The description identifies the resource (Ledger transactions) and lists the five supported actions, plus two concrete usage examples. 'Manage' is broad, but the examples and action list make the tool's purpose clear. It does not explicitly contrast with siblings like open_ledger, but the action enum disambiguates it sufficiently.

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 explicit when-to-use guidance: add_expense for natural-language expense statements and summary for this-month totals with months=1 and owner_timezone. This goes beyond the schema. It does not state when to avoid ledg er or prefer open_ledger, so it lacks full exclusion 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.

TDQS

A3.9/5.0
Disambiguation3/5

Multiple memory-retrieval tools (recall, search_memory, recall_context, read_memory, memory_overview) have overlapping purposes; detailed descriptions help but an agent could easily pick the wrong one. Similarly, ledger/open_ledger and todo/open_todo_board split text vs UI interaction, and forget overlaps with todo delete_all and ledger deletion.

Naming Consistency3/5

Most tools follow a verb_noun snake_case pattern (read_memory, update_memory, search_memory, open_ledger). However, several tools use bare nouns or verbs (forget, ledger, project, todo, recall, remember) and memory_overview is noun_noun, creating inconsistent conventions.

Tool Count3/5

19 tools is on the heavy side for the apparent scope, and the surface includes several pairs that duplicate the same domain in text vs UI form (ledger/open_ledger, todo/open_todo_board). Still, the count is defensible given the combined memory, project, TODO, and ledger coverage.

Completeness4/5

Memory has full lifecycle coverage (remember, read, search/recall, update, forget, restore), and TODO and Ledger workflows are largely complete. Minor gaps exist—no explicit project deletion and no pure text list-projects tool—but core workflows do not dead-end.