Investboard
Server Details
Second brain for investing.
Investboard brings your portfolio, personal strategy and investment decisions together. Understand what you own, set out how you want to invest, and keep the reasons behind your choices. Bring that context into your AI assistant so each review can build on what you have already recorded.
What Investboard can do:
Investment Strategy Check: Assess proposed changes against your goals, allocation rules and constraints.
Investment Decision-Making: Work through alternatives, trade-offs and uncertainty, and reflect on previous decisions.
Investment Thesis: Develop and review your investment case, challenge its assumptions and define what would change your mind.
Portfolio Intelligence: Explore your holdings, look through equity funds, identify overlap and concentration, and understand diversification and historical correlations.
Connect your Investboard account to read your mandate, holdings, available analytics, saved checks, theses and journal entries.
Try prompts like:
Help me understand my portfolio's underlying holdings, overlap and diversification.
Check a change I am considering against my investment strategy.
Help me develop an investment thesis and work through the decision.
Explain what my portfolio's historical correlations can and cannot tell me.
Review my recent investment decisions and the journal reviews that are due.
I decided to defer the change we checked. Record that decision.
Connected features require an Investboard account, permissions and enabled sharing. Premium unlocks portfolio analytics, check history, thesis and journal reads. Requested hypothetical checks and stated outcomes are saved.
The four companion skills also work with supplied files. Install them separately from AI Toolkit. Update your strategy, save a thesis or complete a journal review in Investboard. You make every investment decision. Investboard does not place orders.
- Status
- Healthy
- Uptime
- 7.9% over 20 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP ยท MCP 2025-11-25
- URL
TDQS
Scored across 10 tools
Most tools have distinct resource/action targets: check_action evaluates a proposed change, record_decision records the outcome, and the get_* tools read different artefacts (policy, status, journal, thesis, holdings, correlations, analysis, reflection history). Mild boundary overlap exists between get_own_record and get_journal (both investor-authored records) and between get_status and check_action (both surface mandate state), but descriptions clarify the difference.
All names use snake_case verb_noun form, with a predictable split between get_* for reads and check_/record_ for actions. The convention is uniform and readable across all ten tools.
Ten tools is a well-scoped set for mandate checking, portfolio analytics and decision journaling. Each tool appears to earn its place with a distinct purpose, and the set is neither thin nor bloated.
Read coverage is strong (policy, status, holdings, analytics, correlations, journal, thesis, reflection history), and check_action plus record_decision cover the core check-and-record loop. However, descriptions explicitly mention saving a journal review in Investboard, yet no write tool for journals or reviews exists, and check_action returns a check_id with no dedicated tool to retrieve that saved check later.
Available Tools
10 toolscheck_actionCheck an intended changeADestructiveInspect
Check an intended change against the connected investor's mandate and return a rule-level verdict: ok, breach, cooling_off, no_rule, unavailable or unclassified. Accepts legs, each naming an ISIN or an asset class with an amount in euros or in percent of the portfolio; a single asset-class action (action_type, asset_class, amount_pct_of_portfolio) is also accepted. Every touched rule includes its current and projected state, plus evidence coverage and freshness. The verdict cites asset classes, the investor's rules and leg indices, never an instrument name. Each call saves a new check and verdict in the investor's history and returns its check_id, the identifier for that saved record. Stale or missing portfolio data produces an unavailable verdict with evidence recovery guidance and an optional next_step_href relative to the connected Investboard origin. A repeated call evaluates the then-current evidence and creates another saved check. Investboard never places, changes or transmits an order.
| Name | Required | Description | Default |
|---|---|---|---|
| legs | No | ||
| funding | No | Where the money for the buy legs comes from. within_book (the default): the book keeps its size and each leg moves only its own class, so a purchase paid from cash names its cash side as a sell leg of its own. new_money: money from outside the book, so the book grows by the buy legs; every class and position share is measured over the grown book, and an issuer's share over the equity book grown by the equity buys. The action_type does not set it: a contribute action is measured within the book unless funding is new_money. | |
| setup_id | No | ||
| rationale | No | ||
| action_type | Yes | ||
| asset_class | No | ||
| amount_pct_of_portfolio | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| reasons | Yes | |
| check_id | Yes | Use this saved check id in record_decision or get_reflection_history. |
| coverage | Yes | |
| checked_at | Yes | |
| unlocks_at | Yes | |
| cited_bands | Yes | |
| cited_rules | Yes | |
| next_step_href | Yes | |
| schema_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnlyHint false, destructiveHint true, idempotentHint false), the description explains that each call saves a new check in the investor's history, which justifies the non-idempotent hint, and that stale or missing data yields an 'unavailable' verdict with recovery guidance. It also clarifies that no order is ever transmitted, materially reducing the destructive-write risk perception.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The verdict vocabulary is front-loaded and each sentence adds facts (saved check, check_id, staleness handling, no order transmission). It is dense but slightly long, with some phrasing that could be tightened.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a complex mutation tool with 7 parameters and an output schema, the description covers verdicts, saved-check behavior, evidence freshness and stale-data handling well. Gaps remain around setup_id and rationale, which are unexplained in both schema and text.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With schema coverage at only 14%, the description compensates by explaining the two accepted shapes for 'legs' (ISIN/asset class with EUR or percent amounts) and the single asset-class alternative form. It leaves setup_id, rationale and the action_type enum semantics undocumented, so the coverage gap is only partially filled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Check an intended change against the connected investor's mandate and return a rule-level verdict', and enumerates the possible verdicts. An agent can distinguish this from siblings like get_policy or record_decision without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than specified: the agent should call it to pre-check a change, and the note 'Investboard never places, changes or transmits an order' bounds the scope. However, no explicit when/when-not or named alternative (e.g. record_decision for the follow-up step) is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_journalRead the decision journalARead-onlyIdempotentInspect
Read the investor's own decision journal, newest first: their memo, falsifier, conviction, mood, review date, their own later verdict and the check an entry began as. Useful when the investor asks what they decided or wrote, or when a review is due. Pagination uses before and before_id from the previous response; reviews_due_only selects entries whose promised review date has arrived, with no verdict yet, and whose backing thesis, when present, is still active on that entry's version. Returns no instrument names. Journal text is the investor's verbatim record, attributed to that investor, not an assistant opinion or advice. Follow agent_reflection_id with get_reflection_history({ id }) only; do not infer relationships from matching dates or text. A verdict contains the conclusion and date, not the full review observation and assessment. For a due review, ask for the investor's observation before quoting the original; save the review in Investboard. This tool cannot write a journal or review.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| before | No | A timestamp alone resumes at millisecond precision and may skip rows sharing that millisecond: send before_id with it. | |
| before_id | No | An entry id from this journal. A marker this journal does not recognize answers an empty page, which is not the end of the journal; restart from the newest page. | |
| reviews_due_only | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| next_before | Yes | |
| next_before_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/idempotent annotations: discloses that no instrument names are returned, that journal text is verbatim investor record rather than assistant opinion, that a verdict contains only conclusion and date, that an unrecognized before_id marker yields an empty page that is not the end of the journal, and what reviews_due_only actually filters on.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and core behavior are front-loaded, and nearly every sentence carries operational content (pagination, empty-page pitfall, verdict scope, review workflow). It is dense and clause-heavy, though, so the middle section requires careful parsing rather than skimming.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be described, and the description still covers the non-obvious response characteristics (no instrument names, partial verdict content) plus the review workflow and pagination edge cases. Nothing needed to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 50%, and the description compensates for the two undocumented params: before/before_id resume semantics plus the warning to pair them, and a precise definition of reviews_due_only (review date arrived, no verdict, backing thesis still active on that version). The limit parameter is never mentioned in the description, so semantics there rest solely on the schema's min/max bounds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read the investor's own decision journal') and enumerates exactly which fields come back (memo, falsifier, conviction, mood, review date, verdict, originating check). It also draws the boundary with get_reflection_history, so an agent can distinguish it from siblings without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger conditions ('when the investor asks what they decided or wrote, or when a review is due'), names the alternative for reflection data and instructs 'do not infer relationships from matching dates or text', and states an exclusion ('cannot write a journal or review').
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_own_recordRead the investor's own thesisARead-onlyIdempotentInspect
Read the investor's own recorded investment thesis for one instrument, identified by ISIN, or by ticker with an optional exchange: their statement and falsifier, recording and review dates, conviction and their own later verdict. Useful for recalling an investor's premise before discussing their own recorded instrument or when the investor asks what they thought about it. Statement and falsifier are the investor's verbatim words, attributed to that investor, not an assistant opinion, advice or mandate verdict. resolved=false means no instrument was identified among their holdings or recorded theses and no thesis lookup occurred; ambiguous matches return candidates without selecting one. gated=true indicates Premium entitlement is required and reveals no record details; it does not establish that a record is absent. An absent record is indicated only by resolved=true, found=false and no gated flag. The subject echoes supplied or owner-matched identifiers, never a security name. A different echoed ISIN identifies a different instrument or share class. This is the current projection, not a historical version lookup; a draft is not an activated version. An open verdict records an undecided review.
| Name | Required | Description | Default |
|---|---|---|---|
| isin | No | Trimmed and uppercased before matching. | |
| ticker | No | ||
| exchange | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| found | No | |
| gated | No | |
| state | No | |
| feature | No | |
| subject | No | |
| verdict | No | |
| resolved | No | |
| falsifier | No | |
| statement | No | |
| candidates | No | |
| conviction | No | |
| recorded_at | No | |
| review_due_at | No | |
| upgradeRequired | No | |
| candidates_truncated | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the tool is read-only, idempotent, non-destructive, and closed-world, and the description adds substantial behavior beyond that. It explains resolved=false, ambiguous matches, gated Premium entitlement, the specific absence signal, subject identifier echoing, current-projection versus historical-version semantics, and open verdict behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is long, but it is front-loaded with purpose and usage, then organized around distinct edge-case rules. Most sentences carry unique behavioral information, though some return-state detail may overlap with the output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the read-only annotations and the presence of an output schema, the description is largely complete for correct invocation and interpretation. It explicitly covers ambiguous, gated, and absent-record states, but leaves exchange parameter semantics under-specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 33%, so the description must compensate. It does clarify that identification can be by ISIN or by ticker with an optional exchange, but it does not explain exchange value semantics, precedence when both ISIN and ticker are supplied, or how ticker and exchange interact for matching.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: read the investor's own recorded investment thesis for one instrument. It also specifies the identifying modes (ISIN or ticker with optional exchange) and the substantive content returned (statement, falsifier, dates, conviction, verdict), which clearly separates it from siblings such as get_journal or get_reflection_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: recalling the investor's premise before discussing their own recorded instrument, or when the investor asks what they thought. It does not name alternatives or explicitly state when not to use this tool, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_policyRead the investment policyAIdempotentInspect
Read the signed original mandate or the current structured policy export as Markdown. Large documents return exact chunks: use page.next_offset with page.document_sha256 until null, then concatenate markdown in order. The signature applies to the complete original, never one chunk. A changed snapshot requires restarting. Investor-authored originals do not claim the generated export schema or instrument neutrality. Generated sections are instrument-neutral; attributed additions may be free-form. Supplying setup_id records this read and binds the setup receipt to the verified assistant; it does not change the mandate.
| Name | Required | Description | Default |
|---|---|---|---|
| offset | No | ||
| setup_id | No | ||
| max_characters | No | ||
| document_sha256 | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| page | No | |
| markdown | Yes | |
| signature | No | |
| composed_at | Yes | |
| schema_version | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare readOnlyHint=false, which would otherwise be puzzling for a 'read' tool; the description resolves this by explaining that supplying setup_id records the read and binds the receipt, while explicitly not changing the mandate. It also discloses chunk-consistency, signature-over-whole-document, and snapshot-restart semantics โ real behavioral context beyond the annotations. Minor gaps are the return shape and any rate/permission limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the paragraph is dense but purposeful โ nearly every clause (pagination, signature scope, snapshot restart, setup_id binding) conveys a distinct fact. A couple of sentences, such as the investor-authored originals note, are terse to the point of ambiguity, keeping it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values needn't be explained, and the description still covers pagination, signature integrity, and the setup_id side effect. The unexplained `max_characters` bound and the obliquely-referenced offset are the only meaningful omissions for a 4-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It explains `setup_id` thoroughly and effectively documents `offset`/`document_sha256` via the pagination instructions, but `max_characters` is never mentioned and the offset param is only referred to obliquely through response field names (page.next_offset), which is a notable gap at 0% coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence gives a specific verb (`Read`) and concrete resources (the signed original mandate or the structured policy export) in Markdown form. An agent can immediately tell this is the document-retrieval tool. It stops short of naming any sibling to distinguish itself from, so it lands at 4 rather than 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear in-tool usage (page with `page.next_offset` + `page.document_sha256` until null, then concatenate) and notes setup_id is optional and doesn't change the mandate. But there is no guidance on when to choose this over siblings like `get_own_record` or `get_portfolio_holdings`, so usage context is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolio_analysisRead portfolio exposuresARead-onlyIdempotentInspect
Read canonical whole-portfolio exposure dimensions, issuer concentration and shared fund holdings. Use to explain concentration, diversification and fund overlap. Weights are fractions with explicitly described denominators and coverage. Overlap is not historical correlation. Missing constituents, opaque sleeves and unresolved identities remain limitations; incomplete valuation withholds concentration and overlap. Does not apply a default issuer cap as an investor rule. Requires explicit portfolio:read consent and portfolio-detail entitlement.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| scope | Yes | |
| reason | Yes | |
| status | Yes | |
| overlap | Yes | |
| snapshot | Yes | |
| dimensions | Yes | |
| definitions | Yes | |
| limitations | Yes | |
| lookThrough | Yes | |
| concentration | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Although annotations already declare a safe read-only operation, the description adds substantial behavioral context beyond them: consent and entitlement requirements, incomplete valuation behavior, unresolved identity and opaque sleeve limitations, and the fact that no default issuer cap is applied as an investor rule.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but front-loaded, leading with what is read and immediately following with usage context. Every sentence carries relevant caveats or scope information, though it is longer than strictly necessary for some readers.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values. It covers the important caveats an agent needs: denominators and coverage for weights, limitations from missing constituents and unresolved identities, withholding behavior under incomplete valuation, and required consent/entitlement.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there are no parameter semantics to document. The baseline for a parameterless tool is 4, and the description appropriately does not invent parameter details.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: reading canonical whole-portfolio exposure dimensions, issuer concentration, and shared fund holdings. It also distinguishes the scope from sibling tools by clarifying that overlap is not historical correlation, which helps separate it from get_portfolio_correlations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: 'Use to explain concentration, diversification and fund overlap.' It also implicitly distinguishes overlap analysis from correlation analysis. However, it does not explicitly say when not to use it or name the sibling holdings/correlations tools as alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolio_correlationsRead historical correlationsARead-onlyIdempotentInspect
Read measured historical weekly EUR return correlations from the connected investor's current canonical correlation-lens observation. Use for how held investments moved together over the requested historical window, not constituent overlap. Returns the common sample dates, weeks, pair observations, confidence intervals, price-only exceptions, exclusions and covered value share. Never infers a numeric correlation from allocations or holdings. Returns unavailable when the evidence is insufficient or expired. Requires explicit portfolio:read consent and performance-depth entitlement. Send computed_at on further pages.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| offset | No | ||
| window | No | 5y | |
| computed_at | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| to | Yes | |
| from | Yes | |
| basis | Yes | |
| pairs | Yes | |
| scope | Yes | |
| total | Yes | |
| weeks | Yes | |
| anchor | Yes | |
| method | Yes | |
| reason | Yes | |
| status | Yes | |
| window | Yes | |
| omitted | Yes | |
| coverage | Yes | |
| frequency | Yes | |
| computedAt | Yes | |
| nextOffset | Yes | |
| commonWeeks | Yes | |
| definitions | Yes | |
| limitations | Yes | |
| returnCurrency | Yes | |
| largestGroupShare | Yes | |
| weightedMeanCorrelation | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: discloses the return contents (sample dates, weeks, pair observations, confidence intervals, price-only exceptions, exclusions, covered value share), states a no-inference guarantee ('never infers a numeric correlation from allocations or holdings'), documents the unavailable failure mode, and specifies required consent/entitlement. This is rich behavioral context for a read-only tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and use case, then supporting behavioral detail. Dense but each sentence carries information (returns, guarantees, failure mode, auth). Slightly long, but none of it is wasted filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-param read tool with an output schema, this is complete: it covers what is returned, the no-inference guarantee, auth/entitlement requirements, the unavailable path, and pagination continuation. An agent has everything needed to call it correctly and interpret edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It adds meaning to `window` ('requested historical window') and `computed_at` ('Send computed_at on further pages'), effectively documenting the pagination cursor. However, `limit` and `offset` are never explained beyond the vague 'further pages' hint, leaving half the parameters undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Read measured historical weekly EUR return correlations' from the canonical correlation-lens observation. It separates itself from the closest sibling by noting it is 'for how held investments moved together... not constituent overlap', so an agent can distinguish it from holdings/analysis tools without opening schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly frames the use case ('how held investments moved together over the requested historical window') and an exclusion ('not constituent overlap'). It also states entitlements/consent needed to invoke. It stops short of naming a sibling alternative tool by name, but the when/when-not framing is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_portfolio_holdingsRead portfolio holdingsARead-onlyIdempotentInspect
Read direct holdings or pooled fund look-through positions across the connected investor's imported accounts. Use for what the investor owns and shared direct/indirect exposure. These are alternative views of the same capital, never additive. Preserve the snapshot base currency, pricing and constituent dates, unknown mass, coverage and denominators. Returns a bounded page; send computed_at on further pages and restart if the snapshot changes. Requires explicit portfolio:read consent and portfolio-detail entitlement. Missing snapshots return unavailable; no analytics are fabricated.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | look_through | |
| limit | No | ||
| offset | No | ||
| computed_at | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| view | Yes | |
| items | Yes | |
| scope | Yes | |
| total | Yes | |
| reason | Yes | |
| status | Yes | |
| omitted | Yes | |
| snapshot | Yes | |
| nextOffset | Yes | |
| definitions | Yes | |
| limitations | Yes | |
| lookThrough | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the annotations (which already declare read-only, idempotent, closed-world): it discloses the required portfolio:read consent and portfolio-detail entitlement, the snapshot/pricing/constituent date stability contract, the computed_at re-pagination and restart-on-snapshot-change rule, and that missing snapshots return unavailable with no fabricated analytics. That is exactly the operational context an agent cannot get from structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the critical non-additivity warning are front-loaded, and nearly every clause carries unique information. The middle sentence ("Preserve the snapshot base currency, pricing and constituent dates, unknown mass, coverage and denominators") is telegraphic and packs three distinct contracts into one dense string, costing some readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the description nonetheless covers access prerequisites, snapshot consistency, pagination continuation, and the empty/unavailable case. For a read-only paginated tool with 4 optional params, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning. It explains view indirectly (alternative views, never additive) and computed_at thoroughly (send on further pages, restart if snapshot changes), but says nothing about limit/offset semantics or the enum default. Partial compensation only.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (read) and resource (direct holdings / pooled fund look-through positions) scoped to the connected investor's imported accounts. The direct-vs-look-through distinction is clearly drawn, though it never names the sibling analysis tools (get_portfolio_analysis, get_portfolio_correlations) it most needs to be separated from.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use for what the investor owns and shared direct/indirect exposure" gives a clear selection context, and "These are alternative views of the same capital, never additive" is an unusually valuable usage warning that prevents double-counting. No explicit when-not-to-use or named alternative tool, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reflection_historyRead the check historyARead-onlyIdempotentInspect
List the longitudinal audit of actions checked by an assistant and their verdicts for the connected user. Use id to read the check named by a journal entry's agent_reflection_id. Follow both returned cursor values when paging. Checks made in Investboard itself are not listed. Outcomes are investor-reported and never establish execution. Saved verdicts retain their original evidence dates. Each record carries linked_decision, a reading derived from the investor's own trades on the way out and never stored: it names the day an execution landed and how surely it was matched, never an instrument and never a value.
| Name | Required | Description | Default |
|---|---|---|---|
| id | No | A check id, e.g. a journal entry's agent_reflection_id. | |
| limit | No | ||
| before | No | ||
| before_id | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| items | Yes | |
| next_before | Yes | |
| next_before_id | No | |
| unreadable_count | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent/non-destructive annotations, the description discloses that paging requires following BOTH returned cursors, that Investboard-originated checks are absent from results, that outcomes are investor-reported and never establish execution, that saved verdicts keep original evidence dates, and that linked_decision is computed on read and never stored. These are substantive behavioral facts an agent could not infer from annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, followed by usage, paging, and scope caveats in a logical order. The final sentence on linked_decision is long and heavily qualified ('never an instrument and never a value'), which is partly redundant given an output schema exists, but it still carries non-obvious derivation semantics.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With four optional parameters, full annotations, and an output schema, the description covers scope, paging discipline, and confidence semantics well. Minor gaps remain: default ordering, whether id is an exclusive filter or combinable with cursors, and the meaning of 'limit' are not addressed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 25% (only id is documented), so the description must compensate โ and it does for the paging pair: 'before' and 'before_id' are revealed as two returned cursor values that must be followed together. 'id' semantics are reinforced via agent_reflection_id. 'limit' and the exact cursor ordering remain undocumented in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: list the longitudinal audit of actions checked by an assistant plus their verdicts, scoped to the connected user. That is clearly distinct from the mutating sibling check_action and from get_journal, and the mention of 'agent_reflection_id' from a journal entry links the two resources. It stops short of explicitly naming a sibling it must not be confused with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use id to read the check named by a journal entry's agent_reflection_id' gives a concrete trigger condition, and 'Follow both returned cursor values when paging' tells the agent how to continue. The exclusion 'Checks made in Investboard itself are not listed' bounds expectations. No explicit when-not-to-use versus check_action is stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statusRead where the mandate standsARead-onlyIdempotentInspect
Read where the mandate stands right now: the plan state and its severity, up to three drivers, the one item asking for attention with a link, and how fresh the evidence behind the reading is. Mirrors the Mein Mandat page. Names no instrument and no valuation.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| status | Yes | |
| drivers | Yes | |
| severity | Yes | |
| freshness | Yes | |
| plan_state | Yes | |
| composed_at | Yes | |
| schema_version | Yes | |
| status_unknown | Yes | |
| primary_attention | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive and closed-world, so the safety profile is covered. The description adds genuine context beyond that: a hard cap of three drivers, exactly one attention item surfaced (with a link), and a staleness signal about the underlying evidence โ all of which affect how an agent should interpret the response.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core purpose, with the scope exclusion last. The middle sentence is a dense enumeration of payload contents that overlaps with the existing output schema, which is the only mild redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the annotations plus the explicit scope boundary cover the rest. The 'Mirrors the Mein Mandat page' reference assumes product familiarity but does convey UI parity, so nothing an agent needs in order to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4. The description's remark that it 'names no instrument and no valuation' usefully confirms there is nothing to scope by, consistent with the empty input schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('read') and a specific resource ('where the mandate stands'), then enumerates exactly what the reading contains: plan state and severity, up to three drivers, the single attention item with a link, and evidence freshness. It also draws a boundary against sibling tools ('names no instrument and no valuation'), so an agent can separate it from get_portfolio_analysis, get_portfolio_holdings and get_own_record without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The scope statement ('names no instrument and no valuation') plus 'mirrors the Mein Mandat page' tells an agent this is the top-level summary read, not an instrument-level drill-down, which implicitly routes detail requests to the portfolio siblings. It does not explicitly name an alternative tool or state when not to use it, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_decisionRecord a stated decisionADestructiveInspect
Record what the investor decided after a check: proceeded, abandoned or deferred, with an optional note and their own broker reference. Write-once per check. This only writes a record of a decision the investor already made: Investboard never places, changes or transmits an order.
| Name | Required | Description | Default |
|---|---|---|---|
| note | No | ||
| outcome | Yes | ||
| check_id | Yes | ||
| broker_reference | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| check_id | Yes | |
| recorded | Yes | |
| decided_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
'Write-once per check' is real behavioral disclosure beyond the annotations: a repeat call will not overwrite, which an agent needs in order to avoid treating this as an update path. The explicit disclaimer that no order is placed/changed/transmitted adds safety context the destructiveHint annotation alone does not convey. It omits what an agent should expect on a second attempt (error vs. silently ignored) and does not mention that records cannot be removed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what gets written, then the write-once constraint, then the safety disclaimer. Every sentence adds information; nothing repeats the title or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return values need no explanation, and the description covers the essential traits: mutation, write-once, no order side effects. It leaves open what happens when the check_id does not exist or a decision was already recorded, which matters for a non-idempotent write.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry parameter meaning, and it partially does: it enumerates the three outcomes, marks the note and broker reference as optional, and implies the check linkage. It never mentions check_id as a required UUID identifying which check the decision attaches to, nor the length bounds, so the highest-value required parameter is left to the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (record a decision) plus the exact domain of values (proceeded, abandoned, deferred). The closing sentence sharply distinguishes it from any order-execution capability and, implicitly, from the read-only siblings such as get_journal or check_action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Record what the investor decided after a check' gives clear timing context: call it after a check exists. The exclusion ('never places, changes or transmits an order') rules out a tempting misreading. It does not name a sibling alternative or state what to do if the decision is later revised, so it stops short of 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
10 tool updates
- First observed
check_action - First observed
get_journal - First observed
get_own_record - First observed
get_policy - First observed
get_portfolio_analysis - First observed
get_portfolio_correlations - First observed
get_portfolio_holdings - First observed
get_reflection_history - First observed
get_status - First observed
record_decision
Related MCP Connectors
Your investing research inside Claude: watchlists, financial ratios, reverse-DCF valuations, investment theses, notes, portfolio, earnings calendar and news for the companies you follow. 70 read and write tools; ask what's on your morning desk, rank a watchlist by ROE, log a trade or save a thesis. OAuth sign-in. Free to start.
Connect your portfolio to Claude, ChatGPT, or Codex to analyze it and make smarter investments.
Portfolio analytics + US-equity market research for AI clients. ChatGPT deep-research compat.
Connect brokerage accounts to AI assistants: holdings, orders, asset lookup, and approved trading.
Related MCP Servers
- FlicenseNot gradedqualityCmaintenanceConnects AI assistants to a household net worth and portfolio ledger, enabling users to import statements, query assets and liabilities, analyze performance, simulate sales, and preview or undo audited changes.-
- AlicenseNot gradedqualityAmaintenanceEnables AI agents to manage and analyze personal investment portfolios, including fund and stock holdings, net value tracking, XIRR calculations, penetration analysis, and backtesting.Apache 2.0
- FlicenseNot gradedqualityDmaintenanceConnects AI assistants to Interactive Brokers for intelligent portfolio management, options analysis, risk monitoring, and automated trading strategy suggestions. Enables real-time account tracking, Greeks calculations, option chain analysis, and playbook-based risk adjustments through natural language.5-
- AlicenseNot gradedqualityAmaintenancePersonal investment management advisor that exposes tools for accounts, portfolios, trades, market data, strategies, risk control, and advice, enabling AI agents to analyze and provide structured investment recommendations.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.