Skip to main content
Glama

Update an account held elsewhere

sync_external_account
DestructiveIdempotent

Create or update the client's own account held elsewhere, from a full snapshot. Writes.

For holdings at a bank or broker, not strategies, read from a screenshot or from
the bank's or broker's own MCP connector.

A new ``(source, account_ref)`` creates an account; a known one is made to match.
Update an account with the pair from its ``held_elsewhere`` in list_portfolios.
``holdings`` is the whole account: a holding left out is set to zero, so a source
that only reports changes cannot use this tool.

Size each line with ``units`` or ``market_value`` plus ``currency``; identify it
by ``isin`` (most reliable), ``ticker`` or ``name``. Cash is a line with
``cash_currency`` and no identifier. Market values convert at Analyzera's price.

The account counts toward wealth and concentration, cannot be traded here and
does not refresh itself. Instruments not carried are listed in ``unmatched`` and
excluded, so ``imported_value`` can be below the source's.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "source": "<source>",
      "account_ref": "<account_ref>",
      "holdings": "<holdings>"
    },
    "name": "sync_external_account"
  }
}

Input Schema

NameRequiredDescriptionDefault
as_ofNoISO date the snapshot describes. Defaults to the latest priced date, and a later date is moved back to it.
sourceYesA stable slug for where the holdings came from, e.g. `montrose`. The same slug every time for the same institution — it is half the account key.
currencyNoThe account's reporting currency. Defaults to the client's, and is ignored once the account exists.
holdingsYesThe complete account, not only the lines that changed. Anything missing from this list is treated as sold.
account_refYesThe source's own id for this account. It must be stable across calls: a reference that changes creates a new account each time instead of updating the one you meant.
account_nameNo
account_typeNoThe source's own label, e.g. `ISK` or `Depot`.

Output Schema

NameRequiredDescriptionDefault
sayNoWhat this result means for the client, in plain words.
as_ofYes
sourceYes
createdYesTrue when this call created the account.
node_idYes
currencyYes
unmatchedNo
account_refYes
account_nameYes
portfolio_idYes
imported_valueYesWhat the imported positions are worth, in `currency`.
unmatched_valueNoHow much reported value the unmatched lines carried, where they carried a value.
positions_closedYesHoldings the account had that the snapshot did not, now sold to zero.
positions_writtenYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare destructive/idempotent, but the description adds the operational meaning: holdings is the whole account, "a holding left out is set to zero." It further discloses downstream effects (counts toward wealth and concentration, cannot be traded here, does not refresh itself) and the unmatched/imported_value discrepancy, which annotations cannot convey.

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 verb and "Writes," and nearly every sentence carries a constraint the agent needs. It runs long across four paragraphs and a fragment, with some overlap against the nested schema description that could be trimmed.

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 destructive, full-snapshot upsert with an output schema, the description covers the risky semantics (missing holdings zeroed, no delta sources), key stability, currency conversion, and exclusion reporting. An agent has enough to call this correctly without further inference.

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 coverage is 86%, so the schema carries most parameter meaning, and the description's sizing rules (units vs market_value+currency, isin/ticker/name, cash_currency lines) largely restate the ExternalHolding doc. It still adds value with the composite-key semantics of (source, account_ref) and the pricing behavior ("Market values convert at Analyzera's price").

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?

Opens with a specific verb+resource+scope: "Create or update the client's own account held elsewhere, from a full snapshot," immediately followed by "Writes." It also carves out what this is not ("For holdings at a bank or broker, not strategies"), which no sibling name makes obvious.

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

Usage Guidelines5/5

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

Explicit routing: use it when reading from a screenshot or the bank's/broker's own MCP connector, and an explicit exclusion — "a source that only reports changes cannot use this tool." It also tells the agent how to source the update key ("the pair from its held_elsewhere in list_portfolios"), linking to a concrete sibling.

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