Skip to main content
Glama

NZXplorer (Remote)

Server Details

Remote streamable HTTP MCP for NZ Stock Exchange data — 188 tools (full Copilot surface) covering governance risk scores, insider trades, financials, ESG disclosures, stock screener with 87+ metrics, 64K+ announcements, and 11 proprietary scorecards across 131 NZX-listed companies. Auth via X-API-Key (free tier 10 req/min at nzxplorer.co.nz/developers).

Ownership verified
Status
Healthy
Uptime
0.7% over 61 days
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL

TDQS

B3.4/5.0

Scored across 189 tools

Disambiguation2/5

The server has many tools with overlapping purposes, especially around governance/board scoring (e.g., get_governance_scores, get_governance_scorecard, get_board_health_score), disclosure quality (get_disclosure_score, get_disclosure_language, get_annual_report_quality), and insider activity (get_insider_trades, get_insider_clusters, get_insider_ownership). While descriptions provide some routing hints, an agent would struggle to consistently select the right tool without deep familiarity.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (get_, list_, search_, analyse_, check_, etc.), making them predictable. Minor verb variety is still within the same structural convention, and there is no mixing of camelCase or other styles.

Tool Count1/5

189 tools is far beyond a manageable set for any single server. This extreme count creates cognitive overload and suggests scope creep, making it difficult to discover and correctly use tools.

Completeness4/5

The tool surface covers an enormous range of NZX data domains—financials, governance, directors, ESG, takeovers, and more—with deep coverage. However, user-specific resources like watchlists and portfolios lack create/update/delete operations, leaving minor lifecycle gaps.

Available Tools

189 tools
analyse_ir_draftA
Read-onlyIdempotent
Inspect

Analyse a draft NZX announcement before publication. Scans for FMA compliance risks, defamation language, superlatives, negative market trigger words, forward-looking statement count, hedging excess, and buried risks. Predicts likely market sentiment, estimates media pickup probability, generates analyst follow-up questions, detects corporate buzzwords, and assesses readability. Uses NZXplorer historical NZX language and sentiment data. POST endpoint — requires draft_text in body. $0 cost (pure regex/heuristic). Useful for IR teams, company secretaries, and communications professionals.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol for the company publishing the announcement (e.g. "AIR", "FPH")
draft_textYesThe draft announcement text to analyse (50-50,000 characters)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond that: '$0 cost (pure regex/heuristic)' discloses the method and cost profile, 'POST endpoint — requires draft_text in body' clarifies transport, and 'Uses NZXplorer historical NZX language and sentiment data' identifies the data source driving the analysis.

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?

Purpose and scope are front-loaded in the first sentence, followed by compact feature enumeration. The middle run-on of capabilities is dense and partially redundant (superlatives vs corporate buzzwords; sentiment vs media pickup), but nearly every clause carries actionable information about what the tool returns.

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

Completeness4/5

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 detail return values, and annotations cover the safety profile. Combined with its thorough enumeration of analysis dimensions and explicit method/cost/source disclosure, the definition is complete enough for an agent to select and call the tool correctly.

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

Parameters3/5

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

Schema description coverage is 100% with only two parameters, so the schema already documents ticker and draft_text including format and length limits. The description only restates that draft_text is required in the body, adding no syntax or semantic detail beyond the schema. Baseline 3 per the coverage rule.

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

Purpose5/5

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

States a specific verb (Analyse) and resource (draft NZX announcement) with the pre-publication scope clearly delineated. The enumerated scan categories (FMA compliance risk, defamation, superlatives, forward-looking statements, buried risks) make it unmistakably distinct from sibling tools like analyse_narrative_risk or get_disclosure_language, which operate on already-published content.

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

Usage Guidelines3/5

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

The description implies usage via 'before publication' and 'useful for IR teams, company secretaries, and communications professionals', giving an audience and timing context. However, it names no alternative tool and gives no explicit when-not guidance, leaving the agent to infer that this is for drafts rather than existing announcements.

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

analyse_narrative_riskA
Read-onlyIdempotent
Inspect

Multi-stakeholder narrative risk simulation for a draft NZX announcement. Predicts how institutions, retail investors, media, analysts, and regulators will react. Returns composite risk score (0-100), stakeholder reactions with severity and likely actions, signal conflicts, recommended IR actions, and reaction timeline. Uses IR Rehearsal engine + company context + optional Claude Haiku simulation (~$0.10). POST endpoint — requires draft_text.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH")
draft_textYesDraft announcement text to analyse (50-50,000 chars)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description goes further by disclosing the underlying engine (IR Rehearsal + company context + optional Claude Haiku), a concrete cost (~$0.10), and the required input. The 'POST endpoint' note is transport-level and, since the result is a non-persisted simulation, does not contradict readOnlyHint.

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

Conciseness5/5

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

Four tight sentences, each front-loaded with the purpose first, then outputs, then engine/cost, then the input requirement. No filler; the enumeration of return fields is arguably redundant given an output schema but it doubles as scoping and stays compact.

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

Completeness4/5

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

For a two-parameter simulation with an output schema and full annotation coverage, the description supplies the cost, engine, required input, and what the score/outputs look like. The only omission is guidance on interpreting the 0-100 score or how it compares to sibling analyses, which is minor.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters (ticker example, draft_text length bounds), so the schema carries the semantics. The description only restates 'requires draft_text' and adds nothing about format, ticker validity, or cost-driving length. Baseline 3 is correct.

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

Purpose5/5

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

States a specific verb + resource + scope: multi-stakeholder narrative risk simulation for a draft NZX announcement, and names the exact stakeholder set (institutions, retail, media, analysts, regulators). That is enough to distinguish it from siblings like analyse_ir_draft, simulate_event, simulate_investor_qa and get_narrative_tracker.

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

Usage Guidelines3/5

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

Usage is implied by 'for a draft NZX announcement' plus the 'requires draft_text' note, which tells the agent the necessary precondition. However, no sibling is named and there is no explicit statement of when to pick this over analyse_ir_draft or simulate_investor_qa, so routing is left to inference.

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

check_governance_policyA
Read-onlyIdempotent
Inspect

Run a governance policy compliance check across all NZX companies (or a subset). Evaluates board independence, gender diversity, director tenure, board size, non-exec chair, attendance, GRS score, auditor independence, committee structure, and financial health against configurable thresholds. 8 presets available (nzxplorer, conservative, progressive, market-friendly, iss-nz, nz-super, russell-nz, vanguard-aunz). Returns per-company pass/fail with rule breakdown and aggregate compliance statistics. Use when asked about governance compliance, policy screening, institutional governance standards, or market-wide governance scanning.

ParametersJSON Schema
NameRequiredDescriptionDefault
presetNoPolicy preset ID (default: "nzxplorer"). Options: nzxplorer, conservative, progressive, market-friendly, iss-nz, nz-super, russell-nz, vanguard-aunz
tickersNoComma-separated ticker list to check (default: all NZX companies)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false), so the bar is lower. The description adds real context beyond that: the nine evaluated dimensions, the eight named presets, and the return structure (per-company pass/fail with rule breakdown plus aggregate stats). No auth or rate-limit notes, but the added behavioral detail is substantial.

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-loads the purpose, then the evaluated dimensions, presets, and return shape. It is efficient overall, though enumerating all eight preset IDs duplicates the schema's preset description and the nine-dimension list is somewhat long, preventing a perfect score.

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

Completeness4/5

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

An output schema exists, so the return-value explanation is not strictly required, and the annotations carry the safety profile; the description still supplies scope, dimensions, and presets. The one loose end is 'configurable thresholds', which no parameter exposes (nor does the schema), leaving a minor ambiguity about how thresholds are tuned.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters, including the full preset list and the ticker default of all companies. The description mirrors this ('8 presets available', 'all NZX companies (or a subset)') without adding format or syntax meaning, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb+resource ('Run a governance policy compliance check') and immediately narrows scope to NZX companies. It enumerates the nine governance dimensions it evaluates, which distinguishes it from sibling score tools like get_governance_scorecard or get_governance_scores that report scores rather than run policy screens.

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

Usage Guidelines4/5

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

The final sentence gives explicit trigger conditions ('governance compliance, policy screening, institutional governance standards, or market-wide governance scanning'), which is clear when-to-use guidance. It stops short of naming a specific alternative sibling or stating when NOT to use it, so it falls just 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.

check_insolvency_statusA
Read-onlyIdempotent
Inspect

Check insolvency/bankruptcy history for any person in the NZXplorer database. Queries the MBIE Insolvency Register for bankruptcy, no-asset procedures, and summary instalment orders. Returns TTL-filtered records per MBIE Agreement cl 4.5-4.6. Use when asked about a person's insolvency history, bankruptcy status, financial fitness to serve as director, or due diligence screening. Uses person slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPerson slug from shared.people (e.g. "john-smith")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds real behavioral context beyond that: the external source register, that results are TTL-filtered, and the licensing constraint (MBIE Agreement cl 4.5-4.6). The 'any person in the NZXplorer database' scoping is also consistent with openWorldHint=false.

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 action and data source, then coverage, then when-to-use. Mostly waste-free, but the trailing 'Uses person slug' sentence duplicates the schema and could be dropped.

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?

Output schema exists, so return formatting need not be described. For a single-parameter, read-only lookup the description covers source, filtering rule, and selection context; 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.

Parameters3/5

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

One parameter at 100% schema coverage, so the schema already documents slug (including the 'john-smith' format and its shared.people origin). The description's 'Uses person slug' adds essentially nothing beyond the schema; baseline 3 applies.

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?

Specific verb (check) plus resource (insolvency/bankruptcy history), names the backing source (MBIE Insolvency Register) and the three record types covered (bankruptcy, no-asset procedures, summary instalment orders). An agent can distinguish this from near neighbours like get_director_due_diligence or get_litigation_history 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.

Usage Guidelines4/5

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

Explicit use cases are given: insolvency history, bankruptcy status, financial fitness to serve as director, and due diligence screening. There is no when-not guidance or named alternative tool for adjacent checks, so it stops 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.

check_thesisA
Read-onlyIdempotent
Inspect

Check if an investment thesis for an NZX company is still valid. Compares thesis direction (bullish/bearish/neutral) against 4 independent signals: analyst consensus, fair value model, management credibility, and insider activity. Returns invalidation score (0-100) and signal breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "MEL")
directionYesYour thesis direction

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuinely non-obvious context: the comparison method (thesis direction vs. four independent signals) and the invalidation score scale of 0-100. Auth, limits and failure modes remain unstated.

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

Conciseness5/5

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

Three dense sentences, front-loaded with the purpose, then the comparison logic, then the return shape. No filler or repetition.

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?

Inputs are just ticker plus direction, and an output schema already documents the return shape, so the description's explanation of the signal breakdown and score range is more than sufficient. Nothing an agent needs 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.

Parameters3/5

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

Schema coverage is 100% and the enum for direction is documented in the schema, so the description's restatement of bullish/bearish/neutral adds nothing beyond structured fields. Baseline 3 is correct when the schema does the work.

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

Purpose5/5

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

States a specific verb and resource ('Check if an investment thesis for an NZX company is still valid') and enumerates the four signals it aggregates, which distinguishes it from sibling signal tools like get_analyst_consensus and get_fair_value. An agent can tell this is the composite validity check rather than an individual data fetch.

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

Usage Guidelines3/5

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

The description implies the use case (you hold a thesis direction and want to test its validity) but never states when to use this versus the individual signal tools it wraps, nor any exclusions. Honestly adequate but leaves routing to inference.

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

get_accounting_qualityA
Read-onlyIdempotent
Inspect

Get accounting quality scores for an NZX company. Shows Beneish M-score (manipulation risk), Piotroski F-score (financial strength 0-9), Altman Z-score (bankruptcy risk), plus interest coverage and current ratio. 128 issuers scored.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear or range (e.g. "2024" or "2020-2024")
limitNoMax results
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and closed-world scope, so the safety profile is covered. The description adds genuine context with '128 issuers scored', signalling coverage limits, but says nothing about how scores are sourced or refreshed. No contradiction with annotations.

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

Conciseness5/5

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

Three short sentences, front-loaded with the core purpose, then the metric breakdown, then the coverage figure. Zero filler and nothing redundant.

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

Completeness4/5

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

An output schema exists, so return-value detail is unnecessary, and annotations cover the safety profile. What remains missing is routing guidance among the many financial-scoring siblings, but the core definition is otherwise complete for a 3-param read tool.

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

Parameters3/5

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

Schema description coverage is 100%, so ticker, year, and limit are already documented in the schema (including range syntax and ticker examples). The description adds no parameter-level meaning beyond that, making the baseline 3 correct.

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

Purpose5/5

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

States a specific verb ('Get') and resource (accounting quality scores) scoped to NZX companies, then enumerates the exact metrics returned (Beneish M, Piotroski F, Altman Z, interest coverage, current ratio). This lets an agent distinguish it from siblings like get_earnings_quality or get_financial_distress 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.

Usage Guidelines2/5

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

The description never says when to use this tool versus alternatives such as get_earnings_quality, get_financial_distress, or get_financials, nor does it state prerequisites. Usage is only implied by the metric list.

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

get_activist_vulnerabilityA
Read-onlyIdempotent
Inspect

Get activist vulnerability score for an NZX company. 8-factor composite (0-100) assessing vulnerability to activist campaigns: governance risk, ownership concentration, director failure rates, pay-performance misalignment, board entrenchment, shareholder dissent, capital allocation efficiency, political connections. Rating: Very High/High/Elevated/Moderate/Low. Use when asked about activist risk, governance vulnerability, board accountability, or whether a company could be an activist target.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, so the safety profile is covered. The description usefully adds that this is a derived composite score with a defined factor set and ordinal rating bands, which tells the agent what kind of value to expect. It doesn't discuss data freshness or coverage caveats, so not a 5.

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-loads the purpose and score definition, then the factor list, then the rating scale, then usage triggers. Every sentence carries information, though the eight-factor enumeration is dense and could be trimmed without much loss.

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?

An output schema exists, so return values need not be explained. The description covers what the score means, its components, its range and rating bands, and when to call it — enough for an agent to invoke correctly given the single well-documented parameter.

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

Parameters3/5

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

Schema description coverage is 100% and there is a single ticker parameter whose format is fully documented in the schema. The description adds no parameter-level detail beyond the implicit NZX scope, so the baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Get activist vulnerability score for an NZX company') and immediately defines the composite: 8 factors, 0-100 scale, rating bands. An agent can distinguish this from siblings like get_governance_scorecard or get_takeover_probability 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.

Usage Guidelines4/5

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

Explicit when-to-use triggers are given ('activist risk, governance vulnerability, board accountability, whether a company could be an activist target'), which is clear positive routing. However, it names no alternative tool or exclusion condition (e.g. when to prefer get_governance_scorecard instead), so it stops short of full 5-level guidance.

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

get_adviser_market_shareB
Read-onlyIdempotent
Inspect

NZX deal adviser league tables — annual and quarterly market share rankings by deal count and value. Shows which law firms, investment banks, and accounting firms dominate NZX capital markets. Includes sector specialization and historical trends.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.4/5.0
Behavior3/5

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 usefully adds scope detail (annual vs quarterly, count vs value, sector specialization, historical trends), but says nothing about result granularity, pagination, or how the ranking universe is defined.

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 sentences, front-loaded with the core resource and its dimensions, with no filler or restatement of the title. The middle sentence is slightly promotional ('dominate NZX capital markets') but still carries informational content.

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

Completeness4/5

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

For a no-parameter, read-only tool with an output schema and rich annotations, the description gives enough context to know what data comes back and over what periods. Only the sibling disambiguation and any coverage-scope caveats are missing.

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?

The tool takes zero parameters, so there is nothing for the description to clarify and the baseline of 4 applies. Schema coverage is reported at 100% with an empty property set, confirming no parameter burden.

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 names a specific resource (NZX deal adviser league tables) and states what it contains: annual/quarterly rankings by deal count and value, plus sector specialization and trends. It is clear on its own, though it never distinguishes itself from the nearby sibling get_deal_advisers, which an agent could easily confuse it with.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternative is named. With get_deal_advisers in the sibling list covering a closely related concept, the absence of any routing guidance is a real gap; usage can only be inferred from the subject matter.

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

get_agency_charity_fundingA
Read-onlyIdempotent
Inspect

Cross-platform agency↔charity funding graph. Combines two sources: (1) major contracts disclosed in charity annual reports (annualised values, expiry dates) and (2) GETS (Government Electronic Tenders Service) awarded contracts where the supplier is a registered charity. Three modes: (a) pass agency to list charities funded by that NZ govt agency, (b) pass charity to list agencies funding that charity, (c) pass neither for a platform-wide summary with top 25 of each. Use for questions like "which charities does MSD fund", "who funds Women's Refuge", "top charities by government funding", or "government funding expiry risk for NZ charities". Values: AR = annualised, GETS = awarded totals.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows returned in top_charities / top_agencies lists (default 25, max 200).
agencyNoAgency slug or name substring (e.g. "ministry-of-social-development", "MSD", "Te Whatu Ora"). Mutually exclusive with `charity`.
charityNoCharity slug or name substring (e.g. "womens-refuge", "Salvation Army"). Mutually exclusive with `agency`.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety burden is carried. The description still adds real behavioral context beyond them: it discloses the two upstream data sources, the AR vs GETS value semantics, and that mode (c) returns a bounded top-25-per-side summary. It doesn't discuss recency or coverage gaps of the sources.

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

Conciseness5/5

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

Front-loaded with the core concept, then structured into sources, modes, use cases, and value legend. Roughly 110 words that each carry distinct information; no filler or redundancy.

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?

With an output schema present, return-value documentation is unnecessary and the description correctly focuses on inputs, sourcing, and mode behavior. For a zero-required-parameter lookup tool, an agent has everything needed to call it correctly.

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 100%, so the baseline is 3, and the description earns above it by explaining what each parameter selects (agency→charities, charity→agencies, neither→platform summary) and illustrating accepted slug/name formats. It doesn't restate the limit default beyond what the schema already documents.

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

Purpose5/5

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

States a specific verb+resource ('agency↔charity funding graph') and decomposes it into two named data sources and three call modes. An agent can determine exactly what this returns without opening the schema. This meaningfully distinguishes it from generic siblings like get_government_contracts or get_corporate_giving.

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

Usage Guidelines4/5

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

The three modes (a/b/c) give explicit when-to-use conditions keyed to which parameter is passed, and the example questions ('which charities does MSD fund', 'who funds Women's Refuge') anchor intent. It lacks explicit exclusions or named alternative siblings, 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.

get_agent_eventsA
Read-onlyIdempotent
Inspect

Get enriched market events with full context for AI agent consumption. Each event includes company governance scores, insider conviction, dividend safety, financial/technical context, compound directives (GOVERNANCE_ALARM, DIVIDEND_RISK, INSIDER_CONVICTION, etc.), and machine-readable suggested actions. Use this instead of multiple individual lookups when you need to understand what is happening at a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback days (default 30)
limitNoMax results (default 50)
typesNoComma-separated signal/directive types (e.g., "insider_trade,GOVERNANCE_ALARM")
tickersNoComma-separated NZX tickers (e.g., "AIR,FPH")
severityNoMinimum severity: low, medium, high, critical

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety and idempotency are covered. The description goes beyond that by disclosing the enrichment contents and the presence of compound directives and machine-readable suggested actions, which tells the agent this returns pre-analyzed signals rather than raw events.

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?

Two sentences, front-loaded with what the tool returns and then the selection guidance. The content enumeration is slightly list-heavy but every item earns its place by signaling available signal types.

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

Completeness4/5

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

An output schema exists to carry return structure and annotations carry the safety profile, so the description only needs to convey purpose, enrichment scope and routing. It does all three; the only omission is any note on data freshness or coverage universe, which the schema's lookback params partially imply.

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

Parameters3/5

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

Schema description coverage is 100%, so days, limit, types, tickers and severity are all documented in the schema itself. The description adds no format, default or interaction detail beyond that, so the baseline 3 applies.

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?

States a specific verb and resource ('Get enriched market events') and enumerates the payload (governance scores, insider conviction, dividend safety, compound directives, suggested actions). It distinguishes itself from the broader family by positioning as an aggregator, but it never names a concrete sibling (e.g. get_market_signals, get_morning_brief) that an agent might otherwise pick.

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?

'Use this instead of multiple individual lookups when you need to understand what is happening at a company' gives a clear selection condition for the aggregate-over-singular choice. There is no explicit when-not guidance or named alternative, so it stops 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.

get_agm_notice_draftA
Read-onlyIdempotent
Inspect

Generate an automated draft Notice of Annual Meeting for an NZX company. Identifies directors due for re-election (3-year rotation), auditor re-appointment, fee pool resolution, and capital raise ratifications. Produces ~80% complete draft for company secretary review. Use when asked about AGM preparation, meeting notices, director re-election, or proxy forms.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. FPH)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already establish the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the description is only obligated to add context. It does: the output is '~80% complete' and is intended for company secretary review, which is a genuinely useful quality/trust disclosure an agent would not get from the annotations.

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 sentences, front-loaded with the purpose, then content scope, then use trigger — no filler or marketing language. Minor overlap between 'Generate an automated draft' and 'Produces ~80% complete draft', but nothing wasteful enough to penalize further.

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?

An output schema exists, so return structure need not be described. For a one-parameter generator, the description covers what it produces, how complete it is, and when to invoke it — 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.

Parameters3/5

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

Schema description coverage is 100% for the single ticker parameter, so the schema fully documents it and the description adds no syntax or format detail beyond it. Baseline 3 applies when structured fields carry the parameter burden.

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

Purpose5/5

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

States a specific verb and resource ('Generate an automated draft Notice of Annual Meeting') plus the exact jurisdiction (NZX company). It also enumerates the substantive content the draft covers (re-election rotation, auditor re-appointment, fee pool, capital raise ratifications), which cleanly separates it from retrieval siblings like get_agm_resolutions or predictive ones like predict_agm_outcome.

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?

Gives a clear use trigger: 'Use when asked about AGM preparation, meeting notices, director re-election, or proxy forms.' That is strong contextual guidance, but it names no alternative tool and does not state when NOT to use it (e.g. a proxy forms request against a different sibling).

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

get_agm_resolutionsA
Read-onlyIdempotent
Inspect

Get AGM resolution voting data for an NZX company. Shows resolutions, votes for/against/abstain, pass/fail status, support percentages. Use for governance and shareholder activism analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by meeting year
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already cover the non-destructive, read-only, idempotent behavior, so the bar for added disclosure is lower. The description adds meaningful context about the content returned (resolutions, votes, pass/fail, support percentages) and the NZX scope, without contradicting the annotations.

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

Conciseness5/5

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

Two short sentences with no filler or redundancy: the first states what the tool returns, and the second gives the use case. The key scoping element is front-loaded.

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 simple parameters, an output schema, and annotations that establish read-only/idempotent behavior, the description covers everything needed to invoke the tool correctly and interpret its purpose. There is no obvious missing context for this scope.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents ticker and year. The description adds no meaning beyond 'voting data for an NZX company,' which only reinforces the obvious ticker parameter, so it stays at the baseline 3.

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 names a specific verb ('Get'), a specific resource ('AGM resolution voting data'), and a scope ('for an NZX company'). It also lists the concrete data elements (votes for/against/abstain, pass/fail, support percentages), which distinguishes it from related governance siblings like get_governance_scores and get_board_changes.

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

Usage Guidelines4/5

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

The description gives an explicit intended use: 'Use for governance and shareholder activism analysis.' It does not name exclusion conditions or sibling alternatives, so an agent must infer when another tool is more appropriate, but the stated context is clear enough for a first selection.

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

get_agm_speechesA
Read-onlyIdempotent
Inspect

Get AGM speech analysis for an NZX company. Language Intelligence Score (LIS) measures communication quality. Includes sentiment, conviction, hedging, key themes. Use for governance quality and management communication analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter by speaker role (e.g. "Chair", "CEO")
yearNoYear or range
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear without the description. The description adds useful content about what the analysis includes (sentiment, conviction, hedging, key themes), but it does not disclose operational behavior such as rate limits, data freshness, or historical coverage beyond the year parameter.

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 four short sentences, front-loaded with the core action and resource. It avoids repetition and waste, though it could be slightly tighter by merging the LIS and content sentences.

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

Completeness4/5

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 explained in the description. With read-only annotations and complete parameter descriptions, the definition is largely self-contained. It could mention whether the analysis covers historical AGMs by default or requires the year filter, but otherwise it is complete for this tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents ticker, role, and year. The description does not add syntax, format, or filtering semantics beyond what is already in the schema. The baseline score of 3 is appropriate when the schema carries the full parameter burden.

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 states a specific verb and resource: 'Get AGM speech analysis for an NZX company.' It also clarifies the analytical content (LIS, sentiment, conviction, hedging, key themes), which distinguishes it from sibling tools like get_agm_resolutions or get_agm_notice_draft. However, it does not explicitly contrast itself with other language-analysis siblings such as get_disclosure_language or get_transcript_diffs.

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

Usage Guidelines3/5

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

It gives a usage context: 'Use for governance quality and management communication analysis.' That implies when the tool is relevant, but it does not state when not to use it or name alternative tools for related questions. The guidance is present but minimal.

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

get_alpha_factorsA
Read-onlyIdempotent
Inspect

Get Qlib-inspired alpha factor scores for an NZX company. Returns composite alpha score (0-100) across 1M/3M/12M horizons, factor exposures (percentile rank per significant factor), top contributing factors, headwind factors, and rating. Based on IC analysis of 36 fundamental/technical/governance metrics. Use for quantitative analysis, factor exposure, alpha signals, or stock scoring.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare this a safe, idempotent, non-destructive read, so the safety profile is covered. The description adds genuinely useful method context (Qlib-inspired, IC analysis over 36 metrics) but says nothing about coverage limits, freshness, latency, or cost for an analytical scoring tool.

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 sentences, no filler, and the core deliverable (composite alpha score across 1M/3M/12M horizons) is front-loaded. It is somewhat dense in enumeration but every clause carries information.

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

Completeness4/5

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

An output schema exists, so the enumerated return fields are redundant but harmless; scope (NZX), method, and inputs are all stated. The remaining gap is comparative context versus the many closely named factor/alpha siblings, which matters given this crowded tool family.

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

Parameters3/5

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

Single ticker parameter with 100% schema description coverage, including examples ('AIR', 'FPH', 'MEL'), so the schema fully carries semantics. The description adds only the NZX scope constraint, which is baseline-level value for a 1-param tool.

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?

States a specific verb and resource ('Get Qlib-inspired alpha factor scores') and names the scope (NZX company) plus what the score is built from (36 fundamental/technical/governance metrics). However, it offers no differentiation from close siblings such as get_alpha_score, get_factor_model, get_factor_grades, or get_factor_validation, so an agent cannot tell which of these to pick from the description alone.

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

Usage Guidelines3/5

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

It lists intended use cases ('quantitative analysis, factor exposure, alpha signals, or stock scoring'), which is clear enough context. But it names no alternatives and gives no when-not guidance, and 'stock scoring' overlaps heavily with sibling tools like get_alpha_score and screen_stocks, so routing remains ambiguous.

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

get_alpha_scoreA
Read-onlyIdempotent
Inspect

Get composite alpha score (0-100) for an NZX company combining 5 proprietary signal dimensions: governance (GRS + resignation clusters), insider conviction (buy/sell clusters), management credibility (tone analysis), financial quality (F-Score/Z-Score), and dividend sustainability. Each signal has been backtested on 10 years of NZX data. Returns score, rating (Strong Alpha/Moderate Alpha/Neutral/Moderate Risk/High Risk), component breakdown, and active signal flags with validated alpha spreads.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g., "FPH", "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the bar is lower. The description still adds real context beyond them: the signals are proprietary, backtested over 10 years of NZX data, and flagged with 'validated alpha spreads', which honestly frames the score's provenance and limits.

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?

Purpose is front-loaded in the first clause, followed by the component list and return shape. It is dense but each sentence carries information; the backtest sentence is slightly promotional yet relevant to interpreting the score.

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?

With an output schema present, return values need no elaboration, yet the description still summarises score, rating band, breakdown and active flags. For a one-parameter read tool with full annotation coverage, 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.

Parameters3/5

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

Only one parameter and schema coverage is 100%, with the schema itself giving format examples ("FPH", "AIR"). The description adds nothing about the ticker beyond 'NZX company', so the baseline 3 applies.

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?

Specific verb ('Get') plus a precisely scoped resource: a composite 0-100 alpha score for an NZX company, with the five constituent dimensions named. This clearly separates it from raw-factor siblings such as get_alpha_factors, get_factor_model and get_factor_grades, which surface individual signals rather than a single composite score.

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

Usage Guidelines3/5

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

The description implies the use case (a single aggregate alpha read on an NZX company) but never states when to prefer it over get_alpha_factors, get_factor_grades or get_factor_validation, nor any exclusions or prerequisites. Usage is inferable but not guided.

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

get_analyst_consensusB
Read-onlyIdempotent
Inspect

Get analyst consensus data for an NZX company — consensus rating (buy/hold/sell), analyst count, target prices (mean/median/high/low), buy/hold/sell breakdown, and list of covering brokers. Returns the latest consensus snapshot.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "SPK", "FPH")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so safety is covered structurally. The description adds one useful behavioral fact beyond that: the result is a 'latest consensus snapshot' (point-in-time, not a time series), which helps the agent set expectations. It adds nothing on staleness, refresh cadence, or coverage gaps.

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?

One sentence, front-loaded with the verb and resource, then a compact enumeration of returned fields. No filler. Slightly long due to the field list, but each item earns its place by telling the agent what to expect.

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

Completeness4/5

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

An output schema exists, so return formatting need not be explained, and rich annotations cover the safety profile. The description is complete enough for a one-parameter read tool, with the only real gap being explicit routing relative to sibling consensus/coverage tools.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, including inline examples ('AIR', 'SPK', 'FPH'), so the schema already carries the meaning. The description reinforces NZX scoping but adds no syntax or format detail beyond the schema. Baseline 3 applies.

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?

States a specific verb (Get) and resource (analyst consensus data for an NZX company) and enumerates the payload: rating, analyst count, target prices, buy/hold/sell breakdown, covering brokers. An agent can tell it apart from most siblings, though it does not explicitly distinguish itself from the close siblings get_consensus_estimates or get_broker_coverage.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of alternatives, and no prerequisites. The only contextual cue is 'Returns the latest consensus snapshot', which implies point-in-time data but does not tell the agent when to prefer this over get_consensus_estimates.

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

get_announcement_alertsA
Read-onlyIdempotent
Inspect

List the authenticated user's announcement alert subscriptions. Returns active alert configurations for NZX announcement content matching by keyword, announcement type, ticker, and sector.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish the safe read profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false), so the bar is lower. The description still adds real context: results are scoped to the authenticated user and limited to "active" configurations, and the matching dimensions (keyword, announcement type, ticker, sector) are disclosed.

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

Conciseness5/5

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

Two sentences, front-loaded with the verb and resource, no filler or restatement of the title. Every clause contributes new information about scope or payload.

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

Completeness4/5

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

An output schema exists, so return-value detail is not required here; the description nonetheless summarizes what comes back. For a zero-parameter read tool the definition is essentially complete, with the only shortfall being the absence of routing guidance against the many sibling alert tools.

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?

The tool takes zero parameters, so the schema has nothing to document and there is no parameter semantics to add. The mention of keyword/type/ticker/sector describes what the stored alerts match on, not call arguments, which is harmless clarification rather than a gap.

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?

States a specific verb ("List") and a specific resource ("the authenticated user's announcement alert subscriptions"), and further narrows the payload to "active alert configurations for NZX announcement content." It is clear what the tool does, though it never distinguishes itself from near-neighbors like list_alert_subscriptions or get_keyword_alerts.

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

Usage Guidelines2/5

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

The description implies scope ("the authenticated user's") but gives no explicit when-to-use or when-not-to-use guidance, and names no alternative. With siblings such as list_alert_subscriptions, get_keyword_alerts, and the subscribe_* alert tools in the same namespace, an agent gets no signal for choosing among them.

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

get_announcement_sentimentB
Read-onlyIdempotent
Inspect

Get AI-scored sentiment analysis of NZX announcements for a company. Returns per-announcement sentiment scores (-1 to +1), confidence, hedging level, buried risks, key topics, and guidance direction. Includes company-level summary with average score and sentiment breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date (YYYY-MM-DD)
fromNoStart date (YYYY-MM-DD)
limitNoMax results (default 20)
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "SPK")
hedgingNoFilter by hedging level: none, low, moderate, heavy
sentimentNoFilter by sentiment: positive, negative, neutral, mixed

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without the description. The 'AI-scored' wording signals derived rather than raw data, which is mild added context, but nothing is said about scoring latency, coverage gaps, or empty-result behavior for a company with no announcements.

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?

Two tight sentences with the core purpose front-loaded and the return detail following. No filler, though the enumerated return fields are somewhat list-like and redundant given an output schema exists.

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?

Output schema exists so return values need not be explained, yet the description spends its second sentence doing exactly that. Combined with full annotation coverage and 100% schema coverage, the only real omission is routing guidance against sibling sentiment tools.

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

Parameters3/5

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

Schema description coverage is 100%, so all six parameters (ticker, from, to, limit, hedging, sentiment filters) are already documented in the schema. The description adds no filter syntax or default behavior beyond that, so the baseline 3 applies.

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?

States a specific verb and resource: AI-scored sentiment analysis of NZX announcements for a company, plus the scope (-1 to +1 scores, confidence, hedging). Clear and non-tautological. However, it never differentiates itself from close siblings such as get_news_sentiment, get_capital_raise_sentiment, or get_disclosure_language, leaving the agent to guess which sentiment surface applies.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no when-not-to-use, no prerequisites, and no named alternative among the many sibling sentiment/disclosure tools. The description only says what the tool returns, not the situation that selects it.

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

get_annual_report_qualityA
Read-onlyIdempotent
Inspect

Get annual report quality score for an NZX company. 8-dimension composite (0-100): financial disclosure depth, segment reporting, governance disclosure, ESG reporting, director bio quality, board meeting transparency, earnings presentation quality, stakeholder communication frequency. Sector benchmarked with percentile. Rating: Exemplary/Strong/Good/Adequate/Weak. Use when asked about annual report quality, disclosure completeness, reporting standards, or how transparent a company's reporting is.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds real behavioral context beyond that: the eight scoring dimensions, the 0-100 range, sector benchmarking with percentile, and the five rating bands — enough for an agent to understand what the returned score means.

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 core purpose, then the scoring model, then the use cases. The dimension enumeration is long but each item is informative rather than filler, and there is no redundant restatement of annotations or schema.

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?

An output schema exists, so return values need no explanation, and the description still supplies the interpretive context (dimension set, scale, sector percentile, rating bands) an agent needs to use the result. Combined with full param coverage and confirming annotations, nothing material is missing.

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

Parameters3/5

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

Only one parameter, and the schema already documents it at 100% coverage including NZX ticker examples ('FPH', 'AIR', 'SPK'). The description adds nothing about ticker format or resolution beyond what the schema provides, so the baseline of 3 applies.

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?

Specific verb+resource ('Get annual report quality score for an NZX company') with the composite's composition, 0-100 scale, rating bands, and sector percentile made explicit. The dimension list implicitly separates it from siblings like get_disclosure_score or get_ir_quality, but it never names or contrasts an adjacent tool, so it stops short of full sibling differentiation.

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

Usage Guidelines4/5

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

The final sentence gives clear triggering contexts: annual report quality, disclosure completeness, reporting standards, and reporting transparency. It states when to use it but offers no when-not-to-use guidance or routing to similar-scoring siblings such as get_disclosure_score or get_accounting_quality.

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

get_annual_reportsA
Read-onlyIdempotent
Inspect

Get annual and interim report URLs for an NZX company. Shows report URLs, financial year, extraction status. Use this when asked about a company's annual reports, filings, or report history.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter: "annual" or "interim"
yearNoFiscal year or range (e.g. "2024" or "2020-2024")
tickerYesNZX ticker symbol (e.g. "AIR", "FPH")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds what the tool shows (report URLs, financial year, extraction status), but does not discuss pagination, data freshness, or other behavioral details. This is acceptable but not rich.

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

Conciseness5/5

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

Two sentences, zero filler, and the core function is stated first. The usage guidance is a natural second sentence with no redundancy.

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 simple read-only tool with full schema coverage, clear annotations, and an output schema, the description is complete enough. An agent can confidently select and invoke it without needing further context.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all three parameters. The description does not add meaningful parameter semantics beyond that baseline.

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?

Description states a specific verb ('Get') and resource ('annual and interim report URLs') and names the returned content (URLs, financial year, extraction status). It is clearly distinct from sibling tools like get_earnings or get_financials.

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?

Explicitly says 'Use this when asked about a company's annual reports, filings, or report history.' It does not mention when not to use it or name alternative tools, but the stated trigger is clear enough for most cases.

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

get_anomaliesA
Read-onlyIdempotent
Inspect

Get market anomaly detection results — an early warning system scanning all NZX companies for unusual patterns. Detects 16 anomaly types across 7 categories: insider trading clusters, insider exodus, conviction shifts, governance deterioration, director exodus, audit changes, dividend cut risk, capital raise patterns, earnings concerns, first-time risk language detection, technical breakdowns/breakouts, AGM revolts, active takeovers, sentiment-market disagreements, and buried risk detection. Use this when asked about "red flags", "warning signs", "anomalies", "governance concerns across the market", "which companies have problems", "sentiment disagreement", "buried risks", or market-wide risk assessment. ROUTING: this is the CROSS-MARKET SCANNER — use it only to find WHICH companies show unusual patterns. If the user already names a company or asks for that company's actual figures, prefer the specific tool: get_governance_scores or get_governance_deterioration for governance, get_agm_resolutions or get_vote_history for AGM outcomes, get_audit_history or get_auditor_red_flags for audit, get_capital_raises for raises.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back (default 180)
sectorNoFilter by sector (e.g. "Energy", "Healthcare")
tickerNoFilter by company ticker (e.g. "AIR", "MEL")
categoryNoFilter by category: insider, governance, financial, market, agm
severityNoFilter by severity: critical, warning, watch

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld=false, non-destructive), so the bar is lower. The description adds substantive scope context — it is an early-warning cross-market scanner over all NZX companies with a defined detection taxonomy — which tells the agent what breadth of results to expect. It stops short of noting result limits or pagination behavior.

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-loads the core purpose, then the detection list, then triggers, then routing — a sensible order. The 16-item anomaly enumeration and the trigger-phrase list are somewhat verbose, but each block carries distinct information an agent needs for selection.

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?

An output schema exists, so return-format detail is unnecessary. Combined with the annotations and full schema coverage, the description supplies everything needed to pick this tool over its siblings and call it correctly with zero required parameters.

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

Parameters3/5

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

Schema description coverage is 100%, so all five filters (days, sector, ticker, category, severity) are already documented in the schema. The description does not mention any parameter or its defaults, so it adds no meaning beyond the schema; the baseline 3 applies. The 7-category taxonomy mentioned loosely relates to the category filter but does not map cleanly onto its five enum values.

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

Purpose5/5

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

States a specific verb+resource (market anomaly detection results) and concretely enumerates the 16 anomaly types across 7 categories, so the agent knows exactly what signal is returned. It also explicitly distinguishes itself from sibling company-level tools via the ROUTING block.

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?

Gives explicit trigger phrases ('red flags', 'warning signs', 'governance concerns across the market') and a clear when-not rule: use it only to find WHICH companies show patterns, and prefer get_governance_scores, get_agm_resolutions, get_audit_history, get_capital_raises when a company is already named. Alternatives and the selecting condition are both spelled out.

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

get_audit_historyA
Read-onlyIdempotent
Inspect

Get audit opinion history and red flags for an NZX company. Returns auditor name/firm, opinion type (unmodified/qualified/adverse/disclaimer), going concern warnings, emphasis of matter, key audit matters, audit/non-audit fees, and computed risk signals. Use when asked about audit risk, auditor, going concern, audit opinion, audit fees, or auditor independence for a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds no behavior beyond the data surface — no auth requirements, latency, or coverage caveats — and its field list largely restates the return payload that the output schema already carries.

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?

Two sentences, front-loaded with the core action and followed by triggers; nothing is wasted. The enumerated return fields are slightly redundant against the output schema but do help an agent scan relevance quickly.

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

Completeness4/5

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, and it correctly focuses on scope and triggers. The one gap is sibling disambiguation against get_auditor_red_flags, which an agent choosing between the two would need.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, so the schema already documents the NZX ticker format and examples. The description only implies the ticker via 'for an NZX company' and adds no syntax or validation detail beyond the schema, making the baseline 3 correct.

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?

States a specific verb and resource ('Get audit opinion history and red flags') scoped to NZX companies, and enumerates the returned content (auditor, opinion type, going concern, fees, risk signals). It does not, however, distinguish itself from the sibling get_auditor_red_flags, which appears to overlap heavily.

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

Usage Guidelines4/5

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

The second sentence gives explicit trigger topics ('audit risk, auditor, going concern, audit opinion, audit fees, or auditor independence'), which is clear context for invocation. It stops short of naming alternatives or stating when NOT to use this tool versus the related auditor-red-flags sibling.

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

get_auditor_red_flagsA
Read-onlyIdempotent
Inspect

Get auditor red flags and risk signals for an NZX company. Returns qualified/adverse audit opinions, going concern warnings, auditor tenure concerns (>10 years), non-audit fee independence issues (ratio >1.0), key audit matters count, recent auditor changes, and composite risk level (critical/high/elevated/moderate/low). Use when asked about audit red flags, auditor risk, auditor independence, going concern, or audit quality for a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so safety is covered. The description earns credit by disclosing the substantive thresholds and classification scheme an agent needs to interpret results: tenure >10 years, non-audit fee ratio >1.0, and a critical/high/elevated/moderate/low composite scale.

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

Conciseness5/5

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

Two sentences: the first front-loads the resource and its full output inventory, the second is a pure routing cue. The dense enumeration is all load-bearing and nothing is redundant.

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?

With an output schema present the description need not detail return formatting, and annotations cover safety. Combined with the enumerated signal set and trigger conditions, an agent has everything needed to select and invoke this tool correctly.

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

Parameters3/5

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

There is one parameter with 100% schema description coverage (NZX ticker with examples), so the schema carries full parameter load. The description adds no format or constraint detail beyond what the schema already provides, making the baseline 3 the correct score.

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

Purpose5/5

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

States a specific verb and resource (get auditor red flags/risk signals for an NZX company) and then enumerates exactly what is returned: audit opinions, going concern warnings, tenure concerns, fee ratio issues, KAM counts, auditor changes, and a composite risk level. This level of specificity clearly separates it from broad siblings like get_audit_history or get_earnings_quality.

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

Usage Guidelines4/5

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

The final sentence gives explicit trigger phrases ('audit red flags, auditor risk, auditor independence, going concern, or audit quality'), which is strong contextual guidance. It does not, however, name a competing sibling (e.g. get_audit_history) or state when not to use this tool, so it stops 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.

get_beneficial_ownershipA
Read-onlyIdempotent
Inspect

Get reconstructed beneficial ownership for an NZX issuer. Cross-references top-20 shareholder registers with fund manager holdings and custodian mappings to identify who is behind nominee/custodian entries. Returns direct holders, nominee breakdowns with identified fund managers, fund holdings, and substantial holders.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "SPK", "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add context. It delivers that by disclosing the reconstruction methodology and the four categories of output (direct holders, nominee breakdowns with identified fund managers, fund holdings, substantial holders), which tells the agent this is an aggregated/derived view rather than a live feed.

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

Conciseness5/5

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

Three tight sentences: purpose first, methodology second, return contents third. No filler and the scope ('for an NZX issuer') is front-loaded.

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

Completeness4/5

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

With annotations covering safety and an output schema present, the definition is nearly complete for a single-parameter read tool. The only gap is the absence of routing guidance against the many ownership-adjacent siblings, which is minor given the distinctive 'beneficial/reconstructed' framing.

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

Parameters3/5

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

Single ticker parameter with 100% schema description coverage and a concrete example ('FPH', 'SPK', 'AIR'), so the schema carries the semantics. The description adds no further parameter detail, which is the expected baseline when coverage is complete.

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?

States a specific verb and resource (get reconstructed beneficial ownership) scoped to an NZX issuer, and the methodology clause ('cross-references top-20 shareholder registers with fund manager holdings and custodian mappings') makes clear this is a derived analysis rather than a raw register dump. It distinguishes itself conceptually from siblings like get_shareholders and get_substantial_holders, but never names them.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the emphasis on identifying 'who is behind nominee/custodian entries' suggests you reach for this when raw holder registers are insufficient, but no explicit when-to-use, when-not-to-use, or alternative (e.g. get_shareholders) is given. An agent must infer the routing decision.

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

get_board_benchmarkB
Read-onlyIdempotent
Inspect

Get quantitative board benchmarking for a company vs sector and market-cap peers — 6 dimensions: board size, independence ratio, gender diversity, skills coverage, meeting frequency, fee levels. Returns percentile rankings, P25/P75 ranges, 3-year trend, and overall assessment with strengths/improvements.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered. The description's genuinely additive behavioural detail is the comparison universe (sector and market-cap peers) and that results are percentile-based against it. The remaining disclosure (percentiles, P25/P75, trend, assessment) restates output that the output schema already carries.

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?

Two tight sentences, purpose and comparison scope front-loaded. The second sentence is largely a return-value inventory that the output schema already supplies, so it is slightly less economical than it could be, but nothing is padded or repeated.

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

Completeness4/5

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

With one fully documented parameter, complete annotations and an output schema, the only genuine gaps are scope (NZX-only market) and routing versus sibling board tools. The description covers what the tool computes and against whom, which is enough to invoke it correctly.

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

Parameters3/5

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

Single required parameter with 100% schema description coverage; the schema already defines 'ticker' as an NZX symbol with examples. The description adds nothing about the parameter, which is acceptable given full schema coverage, but it neither warns about unsupported tickers nor references the NZX-only scope.

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?

States a specific verb and resource ('Get quantitative board benchmarking') and pins the comparison universe to sector and market-cap peers, with the six dimensions enumerated. An agent can distinguish it from pure composition or health-score siblings. It stops short of naming which sibling to prefer, so it never fully disambiguates within the crowded board-* family.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance. The neighbouring tools include get_board_health_score, get_board_effectiveness, get_board_composition_report, get_board_skills_matrix and get_compensation_benchmark, and nothing in the description tells the agent which of these this replaces or complements. Usage is only inferable from the 'benchmarking vs peers' framing.

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

get_board_briefingA
Read-onlyIdempotent
Inspect

Get a comprehensive board meeting preparation briefing for a company. Includes governance scores, insider activity, announcements with sentiment, dividend analysis, financial health, peer comparison, AGM status, and board changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered structurally. The description adds scope value by disclosing that this is a composite briefing spanning eight analysis areas, but it says nothing about breadth cost, data freshness, or how the sections are assembled.

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?

Two sentences, front-loaded with the core purpose before the content list. The enumeration is long but each item earns its place by defining the briefing's scope; a slight trim of the list is possible without losing meaning.

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

Completeness4/5

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

An output schema exists, so return-value structure need not be explained, and annotations carry the safety profile. The description is adequate for an agent to know what the tool returns and when it is broadly relevant, with only the usage-routing detail left implicit.

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

Parameters3/5

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

There is one parameter with 100% schema coverage, and the schema already documents ticker as an NZX ticker symbol. The description adds no format, constraint, or example detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb (get) and resource (board meeting preparation briefing) and enumerates the component analyses it bundles (governance scores, insider activity, dividend analysis, financial health, AGM status, board changes). This distinguishes it as an aggregate/multi-section briefing rather than a single-metric sibling like get_board_composition_report. It stops short of explicitly naming the alternative tools it supersedes.

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

Usage Guidelines3/5

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

The phrase 'board meeting preparation briefing' implies the intended use case, but there is no explicit when-to-use, when-not-to-use, or reference to alternatives such as get_ir_briefing or get_board_health_score. Usage is only inferable from the name and the enumerated content.

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

get_board_changesA
Read-onlyIdempotent
Inspect

Get director appointment, resignation, and retirement events for an NZX company. Shows board composition changes over time with dates and reasons.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date YYYY-MM-DD
fromNoStart date YYYY-MM-DD
limitNoMax results (default 50)
actionNoFilter by action type: appointed, resigned, retired, removed, elected, re-elected
tickerYesNZX ticker symbol (e.g., FPH, AIR)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral context by specifying that the output includes 'dates and reasons', which is useful for understanding what the tool returns. No contradictions with annotations.

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

Conciseness5/5

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

Two sentences with no redundancy. The main purpose is front-loaded, and the additional detail about dates and reasons is concise and relevant. Every word earns its place.

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

Completeness4/5

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

The tool has 5 parameters, 1 required, and an output schema. The description covers what it does and the nature of the output (dates and reasons). It does not mention pagination or usage scenarios, but given the output schema and annotations, it is sufficiently complete for an agent to understand the tool's purpose and basic call pattern.

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

Parameters3/5

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

Schema description coverage is 100%, so all parameters (to, from, limit, action, ticker) are already documented in the schema. The description does not add extra meaning beyond mentioning that results include dates and reasons, which relates to the from/to parameters but does not expand on syntax or format. Baseline 3 is appropriate given the high coverage.

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

Purpose5/5

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

The description clearly states the specific verb 'Get', the resource 'director appointment, resignation, and retirement events', and the scope 'for an NZX company'. It further clarifies that it shows 'board composition changes over time with dates and reasons', distinguishing it from siblings like get_directors (which likely lists current directors) and get_director_detail (specific director info).

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

Usage Guidelines3/5

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

The description implies usage for historical board changes via 'over time', but does not explicitly mention alternatives or when not to use it. It lacks explicit routing to siblings like get_directors for current composition, so guidance is only implied, not stated.

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

get_board_composition_reportA
Read-onlyIdempotent
Inspect

Get a comprehensive board composition analytics report for an NZX company. Analyzes independence, diversity, tenure, skills matrix, attendance, remuneration, succession risk, turnover, and peer benchmarks. Returns risk flags and comparison against NZX Code and sector averages. Use this when asked about board composition, governance quality, board diversity, succession planning, or nomination committee analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

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 behavioral context beyond that: the report returns risk flags and benchmarking against the NZX Code and sector averages, telling the agent what kind of analysis comes back.

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 sentences, front-loaded with purpose followed by analysis scope and trigger conditions. The long nine-item enumeration is dense but each item genuinely delimits the report's coverage, so little is wasted.

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

Completeness4/5

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 needn't detail return values, yet it still signals the risk-flag and benchmark outputs. Combined with full annotation coverage and a single well-documented parameter, the definition is complete enough to invoke correctly.

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

Parameters3/5

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

Only one parameter (ticker) at 100% schema description coverage, so the schema fully documents it with examples. The description adds no format or validation detail beyond what the schema already provides; baseline 3 applies.

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?

States a specific verb and resource ('Get a comprehensive board composition analytics report for an NZX company') and enumerates the nine analysis dimensions, so an agent knows exactly what the tool produces. It does not explicitly distinguish itself from overlapping siblings like get_board_benchmark or get_board_skills_matrix, which is the only gap.

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

Usage Guidelines4/5

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

The final sentence gives an explicit trigger list (board composition, governance quality, board diversity, succession planning, nomination committee analysis), which is strong positive guidance. It offers no when-not conditions or named alternatives despite heavy sibling overlap.

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

get_board_credentialsB
Read-onlyIdempotent
Inspect

Get board qualifications, credentials, universities, and credential gaps for an NZX company. Shows academic degrees (BCom, MBA, LLB), professional designations (CA, FCA, CFA), governance certifications (CFInstD, GAICD), and university backgrounds for all current directors.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is fully covered. The description adds scope context ('all current directors') and enumerates the credential categories, which is useful, but says nothing about permissions, rate limits, or data freshness beyond that.

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?

Two sentences, front-loaded with the purpose, and the exhaustive parenthetical lists of degrees and designations are informative. Slight redundancy between the first sentence's 'qualifications, credentials, universities' and the second sentence's enumeration, but no genuine waste.

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

Completeness4/5

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 explained, and the single required parameter is fully documented by the schema. For a read-only, one-param lookup the description is nearly complete; the only gap is the absence of sibling disambiguation against closely overlapping board/director tools.

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

Parameters3/5

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

Schema coverage is 100% and the single ticker parameter is documented with examples ('FPH', 'AIR', 'SPK') in the schema itself. The description adds nothing about parameter format or constraints, so the baseline 3 applies when the schema does all the work.

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?

States a specific verb (Get) and resource (board credentials) and enumerates the concrete content: degrees, professional designations, governance certifications, university backgrounds, and credential gaps. An agent can tell what data comes back, but the description never distinguishes this from overlapping siblings such as get_iod_designations or get_board_skills_matrix.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no when-not-to-use, and no named alternative. The only implicit signal is that it applies to 'an NZX company,' leaving the agent to infer on its own whether to call this versus get_iod_designations, get_director_demographics, or get_board_skills_matrix.

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

get_board_effectivenessB
Read-onlyIdempotent
Inspect

Get comprehensive board effectiveness dashboard for a company — composition (independence, gender diversity, tenure), skills coverage (12-category heatmap with gaps), governance score (GRS v2.0 + sector percentile), peer benchmarking, succession risk, meeting attendance, and remuneration context.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds a useful breadth list of what the dashboard covers, but does not disclose behavior beyond what the output schema presumably shows (e.g., freshness, aggregation limits, or sourcing).

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?

One densely packed sentence front-loads the purpose and lists components efficiently. Nothing is wasted, though the long em-dash enumeration makes it list-heavy rather than optimally structured.

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 an output schema covering return values and annotations covering the safety profile, the main remaining gap is routing: the description never says when this aggregate view is preferable to the dozen-plus overlapping board siblings. For a broad dashboard tool in a crowded namespace, that omission is a real incompleteness.

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

Parameters3/5

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

Schema description coverage is 100% for the single required ticker parameter, and the schema already documents the NZX ticker format with examples. The description adds no additional meaning about the parameter, so the baseline of 3 applies.

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 states a specific verb+resource ("Get comprehensive board effectiveness dashboard") and enumerates the dashboard's contents (composition, skills heatmap, governance score, benchmarking, succession risk, attendance, remuneration). It is clear what the tool returns, but it never distinguishes itself from the many overlapping siblings (get_board_benchmark, get_board_skills_matrix, get_governance_scorecard, get_succession_plan, get_remuneration_benchmarks), leaving that differentiation to the agent.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus the numerous alternative board/governance tools. "Comprehensive dashboard" hints at an aggregate overview use case, but no condition selects it over get_board_composition_report, get_board_health_score, or the individual component tools.

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

get_board_gap_reportB
Read-onlyIdempotent
Inspect

Get a comprehensive Board Gap Intelligence Report for an NZX company. Includes board composition analysis, 12-category skills gap assessment, ideal next director profile, fee benchmarking vs sector, governance scores, risk flags, and sector benchmarks. PDF version available at /api/v1/board-gap-report/{ticker}/pdf.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds useful scope context (NZX-only, a fixed bundle of report sections, and a PDF alternative at a given path) but says nothing about auth requirements, rate limits, data freshness, or cost of generating a 'comprehensive' report.

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 tool's identity is front-loaded in the first clause and the content list is a single dense sentence with no filler. The trailing PDF-path note is slightly tangential but is genuinely actionable information rather than padding.

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

Completeness4/5

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

With one simple string parameter, full schema documentation, an output schema, and read-only annotations, the description is adequate: an agent knows what it gets back and that the call is safe. The main gap is the absence of routing guidance against near-duplicate board tools, which is a usage-guideline concern rather than a completeness one.

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

Parameters3/5

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

Schema description coverage is 100% and the single ticker parameter is documented with examples ('FPH', 'AIR', 'SPK') directly in the schema. The description adds no syntax, constraint, or format detail beyond that, so the baseline 3 applies.

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?

States a specific verb and resource — 'Get a comprehensive Board Gap Intelligence Report for an NZX company' — and enumerates the report's contents (composition, skills gap, director profile, fee benchmarking, governance scores, risk flags). However, it never distinguishes itself from the many similar siblings such as get_board_composition_report, get_board_skills_matrix, get_board_benchmark, or get_board_health_score, which overlap heavily with the listed contents.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no alternatives are named despite ~20 board-related siblings. The content enumeration weakly implies 'use this when you want everything at once' but the agent must infer that itself.

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

get_board_health_scoreA
Read-onlyIdempotent
Inspect

Get board health score for an NZX company. Composite 0-100 governance metric measuring 5 factors: board composition (size, independence, gender diversity), effectiveness (attendance, skills coverage), stability (tenure distribution, turnover), experience (qualifications, memberships, international), and transparency (GRS, fee disclosure). Use when assessing overall board governance quality.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered structurally. The description earns additional credit by disclosing the internal composition of the metric (five factors with sub-components, GRS and fee disclosure under transparency), which tells the agent what the number actually represents. It does not mention cost, latency, or failure behavior.

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 resource, then the metric definition, then the usage cue. Every clause carries information (factor names and sub-metrics), so the length is justified rather than padded, though the parenthetical lists make the middle sentence dense.

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

Completeness4/5

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 explained, and the description supplies the metric's meaning, scale, and factor breakdown. For a single-parameter read tool this is close to sufficient; the only real gap is the absence of sibling routing among a very crowded governance tool family.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, so the schema fully documents the ticker including format examples. The description's "for an NZX company" corroborates the NZX scoping but adds no syntax or constraint detail beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

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?

States a specific verb+resource (board health score) and unpacks what the metric is: a 0-100 composite over five named factor groups. That is far more than a restatement of the name. It stops short of a 5 because it never distinguishes itself from overlapping siblings such as get_board_effectiveness, get_board_skills_matrix, or get_governance_scorecard, which cover some of the same sub-factors.

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

Usage Guidelines3/5

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

"Use when assessing overall board governance quality" gives a general calling condition, so usage is implied rather than absent. However, it offers no exclusions and no routing to the many sibling governance tools, leaving the agent to guess whether this composite or a factor-level tool (e.g. get_board_composition_report) is the right pick.

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

get_board_pipelineA
Read-onlyIdempotent
Inspect

Directors who have recently freed up board capacity — resignations, retirements, and reduced workloads in the last 12 months. Use to identify available director talent for board recruitment.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
skillNoFilter by skill category (e.g. "governance", "financial", "technology")
sectorNoFilter by sector (e.g. "Energy", "Healthcare", "Financial Services")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds genuinely useful definitional context about what qualifies as 'freed up capacity' and the 12-month window. It says nothing about ordering, pagination, or result size behavior, so it adds only moderate value beyond the annotations.

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

Conciseness5/5

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

Two sentences: the first defines the population, the second states the use case. Front-loaded, zero filler, every clause earns its place.

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

Completeness4/5

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

With a full output schema and 100%-covered parameters, the description need not explain returns or args, and it covers purpose and scope adequately. The one missing piece is differentiation from the near-identical siblings in the board/director family.

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

Parameters3/5

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

Schema description coverage is 100% — limit, skill, and sector are each documented in the schema with examples. The description adds no parameter-level detail (no default, no combination guidance), so the baseline of 3 applies.

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 names a specific resource (directors who recently freed up board capacity) and defines its scope precisely — resignations, retirements, reduced workloads, last 12 months. It is clear what the tool returns, but it never distinguishes itself from closely related siblings like search_board_candidates, get_board_vacancies, or get_director_workload.

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

Usage Guidelines3/5

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

It gives one usage context ('identify available director talent for board recruitment'), which is a real when-to-use signal. However, it offers no when-not-to-use and no routing to the obvious alternatives (search_board_candidates, get_board_vacancies), leaving the agent to guess which sibling to pick.

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

get_board_skills_matrixB
Read-onlyIdempotent
Inspect

Get board skills matrix for an NZX company. Shows 12 skill categories (governance, financial, legal, strategy, technology, industry, risk, esg, international, people, commercial, government) with proficiency levels per director, gap analysis, and diversity score. Aligned with IoD NZ, ASX CGC, AICD frameworks.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds meaningful context about what the response contains (proficiency per director, gap analysis, diversity score) and framework alignment, but does not note data sources, staleness, or coverage limits. Adequate but not rich beyond the annotations.

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 core action in the first sentence, followed by the content breakdown and framework note. The 12-category list is somewhat enumeration-heavy but conveys concrete output value rather than padding.

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?

Output schema exists, so return values needn't be explained, and annotations cover the safety profile. However, given the dense set of adjacent board tools, the description omits the differentiation and scope boundaries an agent needs to select it correctly.

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

Parameters3/5

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

Schema description coverage is 100%; the single ticker parameter is fully documented with examples ('FPH', 'AIR', 'MEL'). The description adds no further parameter meaning, so the baseline 3 is correct.

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?

Clear specific verb+resource ('Get board skills matrix for an NZX company') and it enumerates the exact output content (12 skill categories, proficiency levels, gap analysis, diversity score). It does not differentiate itself from closely related siblings such as get_board_gap_report, get_board_effectiveness, or get_board_benchmark, so an agent can identify the tool but not easily pick it over neighbors.

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

Usage Guidelines2/5

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

No statement of when to use this tool versus the many overlapping board-analysis siblings, and no exclusions or prerequisites. Usage is only implied by the verb 'Get', which is insufficient against a sibling set packed with board_* tools.

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

get_board_vacanciesA
Read-onlyIdempotent
Inspect

Get current board vacancies scraped from Appoint Better Boards and IoD NZ. Filterable by source, sector, region, and remuneration type. Optionally returns candidate matches for a specific vacancy.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
regionNoFilter by NZ region (e.g. "Auckland", "Wellington", "Canterbury")
sectorNoFilter by sector (e.g. "Health", "Charity/NFP", "Government")
sourceNoFilter by source: "appoint" (Appoint Better Boards) or "iod" (IoD NZ)
vacancy_idNoGet details + candidate matches for a specific vacancy ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds genuinely new context: the upstream scraping sources and the dual-mode behavior where supplying vacancy_id switches the result to include candidate matches.

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 tight sentences that front-load the action and provenance before the optional mode. Every sentence carries information, though the phantom 'remuneration type' filter is wasted words.

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?

An output schema exists, so return values need no explanation. However, it is unclear how vacancy_id interacts with the other filters (are they applied together or ignored?), and the advertised remuneration filter does not exist, leaving a small but real gap for a 5-parameter tool.

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

Parameters3/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 3. The description restates the filter dimensions and adds the vacancy_id behavior, but also advertises filtering by 'remuneration type' for which no parameter exists in the schema, a mild inconsistency rather than added clarity.

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?

States a specific verb and resource ('Get current board vacancies') plus the data provenance (Appoint Better Boards and IoD NZ), which is useful disambiguation. It does not, however, distinguish itself from related siblings such as search_board_candidates or get_board_pipeline, so the agent is left to infer the boundary.

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

Usage Guidelines3/5

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

The description implies usage through its filters and the optional vacancy_id mode, but never states when to reach for this tool over search_board_candidates. There are no exclusions or prerequisites, so an agent must guess at the routing.

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

get_broker_coverageB
Read-onlyIdempotent
Inspect

Get analyst/broker coverage for an NZX company. Shows which brokers and analysts cover the stock, their latest ratings (buy/hold/sell), price targets, earnings forecasts, and recommendation distribution. Includes consensus summary with mean/median target prices.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")
includeNoComma-separated sections: ratings, forecasts, reports, summary, all (default: ratings,summary)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds the nature of the returned content (ratings, targets, forecast distribution, consensus summary), which is useful but not behavioral disclosure beyond annotations. No auth, rate limit, or freshness context is given.

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 front-loaded sentences with the subject (NZX company coverage) established immediately. Slightly list-heavy in enumerating return fields, but nothing is genuinely wasteful.

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

Completeness4/5

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 re-explained in the description, and both parameters are documented. Purpose and returned content are adequately conveyed for a simple two-parameter read tool; only usage routing to siblings is missing.

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

Parameters3/5

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

Schema coverage is 100%, so both the ticker and include parameters are fully documented in the schema, including section values. The description adds no parameter detail, so the baseline 3 applies.

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?

States a specific verb (get) and resource (analyst/broker coverage) for an NZX company, and enumerates the key data returned. It is clear on its own, but doesn't differentiate itself from overlapping siblings like get_analyst_consensus or get_consensus_estimates.

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

Usage Guidelines2/5

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

The description explains what the tool returns but gives no when-to-use guidance, no prerequisites, and does not name alternatives such as get_analyst_consensus or get_consensus_estimates. The agent must infer usage entirely from the name.

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

get_capital_raisesA
Read-onlyIdempotent
Inspect

Get capital raise history for an NZX company. Includes placements, rights issues, SPPs, IPOs, bonds, buybacks, DRPs with amounts, pricing, and dilution. ~11,700 structured events across 131 issuers.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoComma-separated raise types: placement, rights_issue, spp, ipo, bond, buyback, drp, options_exercise, employee_scheme, conversion
yearNoYear or range (e.g. "2024" or "2020-2024")
limitNoMax results
tickerYesNZX ticker symbol (e.g. "AIR", "FBU", "RYM")
buybacksNoSet to "true" to only show buybacks

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already indicate read-only, idempotent, and non-destructive behavior, so the bar is lower. The description adds useful context beyond annotations: the dataset is described as ~11,700 structured events across 131 issuers, and that it includes amounts, pricing, and dilution. This gives an agent a sense of data scope and content without contradicting the annotations.

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

Conciseness5/5

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

Two sentences with no filler. The first sentence states the primary purpose up front, and the second sentence adds valuable detail about event types and dataset scale. Every phrase contributes to understanding the tool.

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

Completeness4/5

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

With an output schema present and full parameter descriptions in the schema, the description is largely complete for invocation. It clearly identifies the resource and what is included. The only minor gap is that it does not clarify the relationship between the 'buybacks' filter parameter and the 'type=buyback' option, but this is not essential for basic use.

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

Parameters3/5

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

Schema description coverage is 100%, so the input schema already documents all five parameters including type values, year format, and limit. The description does not add meaning beyond the schema; it mentions event types and pricing information, but these do not clarify parameter formats or relationships.

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?

Description uses a specific verb ('Get') and resource ('capital raise history for an NZX company'), and clarifies the scope by enumerating event types such as placements, rights issues, SPPs, IPOs, bonds, buybacks, and DRPs. This clearly distinguishes it from sibling tools like get_dividends or get_takeovers.

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

Usage Guidelines4/5

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

The description gives clear context: this is for capital raise history of an NZX company, which implies when it should be used. It does not explicitly name alternative tools or exclusion criteria, but the domain is specific enough that an agent can infer appropriate use.

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

get_capital_raise_sentimentA
Read-onlyIdempotent
Inspect

Analyze whether capital raises by an NZX company were done from a position of financial strength or desperation. Returns sentiment, financial health, insider activity around ±30 days, and post-raise stock performance (30/90/180 day returns) for each raise. Composite score classifies as "strength", "neutral", or "desperation".

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by raise type (comma-separated): placement, rights_issue, spp, ipo, bond, options_exercise
yearNoFilter by year or range (e.g. "2024" or "2020-2024")
tickerYesNZX ticker symbol (e.g. "AIR", "FPH")
contextNoFilter by context classification: "strength", "neutral", or "desperation"

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful behavioral context beyond that: insider activity window of ±30 days, post-raise return windows of 30/90/180 days, and the composite score classifications. It does not mention auth or rate-limit behavior, but the added analytical scope is substantial.

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

Conciseness5/5

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

Three sentences, front-loaded with the purpose, then the return contents, then the classification. Every sentence earns its place with no repetition or filler.

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 the existing output schema and annotation coverage, the description provides enough context for correct invocation: it states the analytical purpose, the data windows, and the classification output. No critical invocation detail is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents all four parameters, including the context filter and its strength/neutral/desperation values. The description does not add parameter syntax or format guidance beyond what the schema provides, so the baseline 3 is appropriate.

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 states a specific analysis verb and resource: analyzing capital raises by an NZX company for strength vs desperation. It is clearly distinct from a raw capital-raises listing, but it does not name or explicitly differentiate from the sibling get_capital_raises.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative-tool guidance is provided. The description explains what the tool returns but not why an agent should choose it over get_capital_raises or other sentiment tools.

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

get_chair_ceo_alignmentA
Read-onlyIdempotent
Inspect

Get Chair vs CEO communication alignment analysis for a company. Compares Language Intelligence Scores (LIS), sentiment, conviction, and transparency between Chair and CEO AGM speeches. Flags divergence (>10 point LIS gap) as a governance signal. Shows historical trend (widening/narrowing).

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the bar is lower. The description adds real behavioral substance beyond that: the >10 point LIS gap divergence threshold, the fact that divergence is treated as a governance signal, and that historical trend direction (widening/narrowing) is included in the result.

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?

Four short sentences, purpose front-loaded, no filler or restatement of the tool name. Dense with substantive detail; a tighter consolidation of the metric list and threshold sentence is the only minor room for improvement.

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 single-parameter read tool with full annotation coverage and an output schema, this description covers everything an agent needs: what is compared, the interpretation threshold, and the trend content. Return-value detail beyond this is already carried by the output schema.

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

Parameters3/5

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

Only one parameter (ticker) and schema description coverage is 100%, so the schema already fully documents it with an example format. The description adds no additional meaning about the ticker beyond what the schema provides, which matches the baseline 3 for schema-carried parameters.

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

Purpose5/5

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

States a specific verb (get) plus a distinctive resource (Chair vs CEO communication alignment for a company) and enumerates the compared dimensions: LIS, sentiment, conviction, transparency. This is readily separable from adjacent siblings like get_agm_speeches (raw text) or get_disclosure_language (single-entity language scoring).

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

Usage Guidelines3/5

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

Usage is implied by the governance-signal framing, but there is no explicit 'use this when / use X instead' routing. An agent must infer that this is the comparative counterpart to get_agm_speeches and get_disclosure_language, with no stated prerequisites or exclusions.

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

get_chair_networkA
Read-onlyIdempotent
Inspect

Analyze the NZX board chair interlock network. Shows which chairs sit on multiple boards and how they are interconnected. Returns a list of all current chairs with their board seats, interlock pairs (chairs who share a board), and network metrics including total chairs, serial chairs (2+ boards), most connected chair, and average boards per chair. Use when asked about chair networks, board interlocks among chairs, serial chairs, or how NZX board chairs are connected.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds meaningful scope context beyond the annotations: the analysis is restricted to NZX and to current chairs, plus it enumerates the three output components (chair list, interlock pairs, network metrics).

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 core purpose, then return contents, then usage triggers in a logical order. The metric enumeration is slightly list-heavy but every clause carries useful information, so it is close to optimally sized.

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

Completeness4/5

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, yet it does so helpfully. Combined with annotations covering the safety profile, an agent has enough to call this correctly; the only minor gap is the absence of an explicit alternative tool for director-level networks.

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?

The tool takes no parameters, so there is nothing for the description to disambiguate; the baseline for a zero-parameter tool applies. No misleading parameter claims are made.

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

Purpose5/5

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

States a specific verb (Analyze) and a precisely scoped resource (the NZX board chair interlock network), and clarifies the unit of analysis is chairs with multiple board seats. This is distinguishable from adjacent siblings like get_director_network and get_network_intelligence, which cover directors or generic networks rather than chair interlocks.

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?

Explicit trigger phrases ('chair networks, board interlocks among chairs, serial chairs, or how NZX board chairs are connected') tell the agent exactly when this tool applies. It does not, however, name the closest alternative (e.g., get_director_network) and state when to prefer that one instead, so the routing guidance is one-sided.

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

get_climate_gap_analysisA
Read-onlyIdempotent
Inspect

Get NZ Climate Standards (NZ CS 1-4) gap analysis for an NZX company. Assesses 23 XRB requirements across governance (5), strategy (6), risk management (4), and metrics & targets (8). Returns per-requirement status (met/partial/gap), evidence, recommendations, overall score (0-100), and mandatory reporter status. Use when the user asks about climate compliance, NZ CS readiness, XRB requirements, or TCFD gaps.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "MEL", "CEN", "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds real behavioral colour — it enumerates per-requirement status, evidence, recommendations, an overall 0-100 score, and mandatory-reporter status — which tells the agent the shape and depth of the assessment.

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 framework and scope, then the breakdown, then the use cases — no filler sentences. The enumeration of requirement counts and return fields is dense but each clause carries information; only mild overlap with the output schema.

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

Completeness4/5

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

Covers scope, framework, requirement breakdown, and trigger conditions, and an output schema exists so return values need not be spelled out further. Minor gaps remain around prerequisites (must the ticker be an NZX-listed reporter?) and failure behaviour for non-covered companies.

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

Parameters3/5

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

Only one parameter (ticker) and its schema description coverage is 100%, so the schema already documents it fully with examples. The description adds no ticker-level semantics (e.g. listed-company requirement, invalid-ticker behaviour), so baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb+resource (gap analysis against NZ CS 1-4) plus exact scope: 23 XRB requirements broken into governance/strategy/risk/metrics counts, for an NZX company. This is clearly distinguishable from near neighbours like get_esg_disclosure_gap and get_property_climate_risk 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.

Usage Guidelines4/5

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

The final sentence gives explicit trigger conditions: climate compliance, NZ CS readiness, XRB requirements, TCFD gaps. That is strong positive routing, but it names no exclusions or the sibling tool to choose instead (e.g. ESG disclosure gap) for overlapping queries.

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

get_committee_chairsA
Read-onlyIdempotent
Inspect

Get board committee membership data — chairs, committee types, and composition across NZX companies. Use when user asks about audit committees, remuneration committees, committee chairs, or board committee structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50, max 200)
sectorNoFilter by sector
tickerNoFilter by company ticker (e.g., "AIR")
committeeNoFilter by committee type (e.g., "Audit", "Risk", "Remuneration", "Nomination")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered elsewhere. The description's only added behavioral context is the NZX scope, which is modest value on top of structured data already present.

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

Conciseness5/5

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

Two sentences with no waste: the capability statement leads and the routing sentence follows. Front-loaded and appropriately sized.

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

Completeness4/5

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 explained, and annotations carry the safety profile. The description covers scope, content, and triggers adequately; the only residual gap is distinguishing this tool from the semantic overlap with sibling committee/board-composition tools.

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

Parameters3/5

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

Schema description coverage is 100%, with each of the four filters (limit, sector, ticker, committee) self-documented including examples and the default/max for limit. The description adds no filter syntax, combination behavior, or default semantics beyond what the schema already states, so baseline 3 applies.

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?

Specific verb ('Get') plus resource ('board committee membership data') with the returned facets enumerated (chairs, committee types, composition) and the universe named (NZX companies). However, it does not differentiate itself from closely-named siblings such as get_select_committee_activity or get_board_composition_report, so the agent must still infer which one to pick.

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

Usage Guidelines4/5

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

The 'Use when user asks about...' sentence gives concrete trigger phrasings (audit committees, remuneration committees, committee chairs, board committee structure), which is genuinely useful routing guidance. It stops short of any when-not or explicit alternative-tool redirection, so it is context without exclusions.

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

get_company_changesA
Read-onlyIdempotent
Inspect

Get recent material changes for a company based on AI-extracted announcement data. Shows revenue, profit, dividend, and guidance changes detected from recent filings. Compares key financial figures across consecutive announcement extractions to surface meaningful deltas.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback period in days (default 30, max 365)
tickerYesNZX ticker symbol (e.g., "FPH", "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive and non-open-world, so the safety profile is covered. The description adds genuinely new context by disclosing the data provenance (AI-extracted from filings) and the comparison mechanism (deltas across consecutive extractions), which affects how the agent should interpret results.

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 tight sentences that front-load the core purpose before elaborating on the compared fields and mechanism. Minor redundancy between 'recent material changes' and 'recent filings', but no wasted padding.

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

Completeness4/5

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 no prose, and annotations carry the safety profile. Given a two-parameter, read-only tool, the description covers source, scope and mechanism adequately; only the when-to-use routing is missing.

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

Parameters3/5

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

Schema description coverage is 100% for both parameters, so the schema already documents 'days' (default 30, max 365) and 'ticker' (NZX symbol). The description adds no syntax, format or constraint detail beyond what the schema provides, so the baseline 3 applies.

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?

States a specific verb and resource ('Get recent material changes for a company') and pinpoints the domain: revenue, profit, dividend and guidance deltas from AI-extracted announcement data. The 'compares consecutive announcement extractions' framing differentiates it from static siblings like get_financials or get_dividends, though it does not name any sibling explicitly.

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

Usage Guidelines2/5

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

The description implies a 'recent changes' use case but never says when to choose this over get_announcement_alerts, get_earnings_surprise, get_dividends or get_financials, and gives no exclusions or prerequisites. An agent must infer the routing decision entirely.

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

get_company_connectionsA
Read-onlyIdempotent
Inspect

Get recorded connections between NZX companies, each with its source. With only ticker: the NZX companies linked to it, strongest first, through shared directors (current and past), substantial or top-20 shareholdings, business relationships classified from filings (supplier, customer, partner, competitor and similar, each citing the filing), and shared auditors, legal advisers or share registrars. With other_ticker as well: every link between the two companies, with up to 5 source filings per relationship. An empty result means none of these records links them, not that they are unconnected. Related-party transactions and fund holdings are not included.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "CEN")
other_tickerNoOptional second NZX ticker, to get the links between the two companies (e.g. "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already establish readOnly, idempotent, non-destructive and closed-world. Beyond that the description discloses ordering ('strongest first'), result-shape limits ('up to 5 source filings per relationship'), what is deliberately not included, and the critical empty-set interpretation. It stops short of any auth, rate-limit or pagination detail, but for this access pattern that is a minor omission.

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 purpose leads and the mode-specific behaviour follows, so it is front-loaded correctly. The long second sentence enumerates relationship types, which is dense but each item is load-bearing for disambiguation from sibling tools; nothing reads as filler.

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

Completeness4/5

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

An output schema exists, so return-value formatting need not be repeated, and the description still covers both invocation modes, exclusions and the empty-result interpretation. What remains unaddressed is pagination or result-size behaviour for the single-ticker mode, which is a small gap for a graph-listing tool.

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 100%, so the baseline is 3, but the description adds real meaning the schema does not: what each parameter combination returns, the ranking of results, and the per-relationship filing cap. That is substantive semantic content beyond 'NZX ticker symbol' and 'Optional second NZX ticker'.

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

Purpose5/5

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

States a specific verb and resource ('Get recorded connections between NZX companies') and enumerates the exact relationship types covered, each tied to its evidence source. It also carves out scope by excluding related-party transactions and fund holdings, which separates it from siblings like get_hidden_connections, get_corporate_relationships and get_entity_graph without the agent needing to open their schemas.

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

Usage Guidelines4/5

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

The two modes are spelled out clearly: with only ticker you get the links radiating from one company, and with other_ticker you get every link between the pair. It also warns that an empty result means no recorded links rather than no real-world connection, which is a genuine usage caveat. It does not, however, name a specific alternative tool for cases where another connection view is wanted.

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

get_company_detailA
Read-onlyIdempotent
Inspect

Get detailed info for a specific NZX company by ticker. Can include directors, financials, governance score, and latest stock price.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")
includeNoComma-separated includes: directors, financials, governance, price, all (e.g. "governance,price")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds that the result 'can include' optional categories, but it does not clarify default behavior when the include parameter is omitted or explain any other behavioral nuances such as pagination or response size.

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

Conciseness5/5

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

The description is a single sentence that front-loads the core action and resource, then lists the relevant optional content. There is no filler or redundant elaboration; every clause contributes useful information.

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?

Given the output schema exists and annotations carry the safety profile, the description is mostly adequate for a simple read tool. However, for an agent choosing among many similar sibling tools, it would benefit from clarifying how the aggregate response relates to specialized getters and what happens when the include parameter is not supplied.

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

Parameters3/5

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

Schema description coverage is 100%, so the ticker and include parameters are already fully documented with examples. The description reinforces the include categories but adds no meaning beyond the schema, such as default values, validation rules, or behavior when include is absent.

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 clearly identifies a specific verb and resource: 'Get detailed info for a specific NZX company by ticker.' It also lists the data categories included (directors, financials, governance score, stock price), which helps distinguish it from narrower sibling tools like get_directors or get_financials, though it does not explicitly name those alternatives.

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

Usage Guidelines3/5

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

The description implies that this tool is appropriate when you need broad company detail by ticker, and the 'Can include' phrasing hints at selecting categories. However, it does not explicitly state when to prefer this aggregate tool over the many specialized getter siblings, nor does it mention any exclusions or fallback conditions.

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

get_company_directorshipsA
Read-onlyIdempotent
Inspect

Get full directorship history for any person from the NZ Companies Register. Shows all company roles (NZX-listed + private companies), current and historical, with company status (active/struck off/liquidating) and failure rate analysis. Use when asked about a person's full board network, private company roles, directorship workload, or company failure history. Uses person slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPerson slug from shared.people (e.g. "rob-campbell")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the bar is lower. The description still adds meaningful behavioral context: results span current AND historical roles, include company status values (active/struck off/liquidating), and include a computed failure-rate analysis. It does not mention limits, pagination, or what happens for an unknown slug.

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

Conciseness5/5

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

Three dense sentences, front-loaded with the core capability, then coverage detail, then usage triggers. No filler and no repetition of the title.

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?

With an output schema present, return-value detail need not be restated, and the safety profile is covered by annotations. The description delivers what remains necessary: what data is included, its currency range, and when to reach for this tool.

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

Parameters3/5

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

Schema description coverage is 100%, so the single slug parameter is already fully documented as a person slug from shared.people. The trailing 'Uses person slug.' restates what the schema says, adding no format, resolution, or error behavior beyond it. Baseline 3 is appropriate.

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?

States a specific verb+resource ('Get full directorship history for any person') and names the data source (NZ Companies Register). It enumerates the scope well (NZX-listed + private, current and historical, status, failure rate). It does not explicitly differentiate itself from close siblings such as get_director_history or get_director_network, which the agent may conflate.

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?

Provides clear trigger conditions ('Use when asked about a person's full board network, private company roles, directorship workload, or company failure history'). No exclusions or named alternatives are given, so the agent still has to infer why this beats get_director_history for a given query.

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

get_company_failuresA
Read-onlyIdempotent
Inspect

Get a director's association with failed or distressed companies — struck off, liquidated, in receivership. Shows failure rate, timeline of failures, and whether the person was director before/during/after failure. Uses person slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPerson slug from shared.people (e.g. "rob-campbell")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds useful analytical framing (failure rate, timeline, before/during/after relationship), but since an output schema exists this return-content detail is partially redundant and no auth or scoping caveats are disclosed.

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 tight sentences, front-loaded with the core action and scope, followed by what is returned. No filler, though the trailing 'Uses person slug' slightly duplicates the schema.

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

Completeness4/5

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

For a single-parameter read tool with rich annotations and an output schema, the description supplies enough scope and return-content context to call it correctly. Missing only explicit alternative-selection guidance.

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

Parameters3/5

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

Schema coverage is 100% and the single slug parameter is fully documented in the schema. The description only restates that it 'uses person slug' without adding format or lookup-source detail, so baseline 3 is appropriate.

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?

States a specific verb+resource and clarifies that despite the company-oriented name, this is a person-centric lookup keyed by slug, returning struck-off/liquidated/receivership associations. An agent can distinguish it from company-level tools. It doesn't explicitly contrast with the many adjacent director-risk siblings, keeping it just below a 5.

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

Usage Guidelines3/5

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

Usage is implied (director due-diligence on failure exposure) but there is no explicit when-to-use or when-not guidance, and no alternative tools are named even though siblings like get_prohibited_directors, get_director_risk, and get_financial_distress overlap in scope.

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

get_company_pagerA
Read-onlyIdempotent
Inspect

Generate a one-page company snapshot with key financial metrics (revenue, profit, EBITDA, margins, ratios), governance score (GRS, board composition, independence), dividend data (DPS, yield, payout ratio, streak), insider activity (90-day trades, net direction), risk flags, and recent announcements. Use for quick due diligence, adviser client meetings, or company overview summaries. Also available as a branded PDF at /api/v1/company-pager/{ticker}/pdf.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint, so the safety profile is clear. The description adds the scope of the generated content and an alternative branded PDF endpoint, but does not discuss permissions, rate limits, or other operational behavior beyond what annotations and the output schema provide.

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?

It is front-loaded with the tool's purpose and contents, then use cases, then the PDF endpoint. The first sentence is dense with enumerations but each item earns its place by scoping the pager; the structure is otherwise efficient and there is no redundant fluff.

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?

With an output schema present, the description need not explain return values. The annotations cover the safety profile, the schema fully documents the only parameter, and the description supplies content scope, use cases, and an alternative format, making it complete for an agent to call correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the single ticker parameter is fully documented as an NZX symbol with examples. The description adds no syntax or format details beyond the schema, so the baseline of 3 is appropriate.

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 names a specific verb ('Generate') and a well-defined composite resource ('one-page company snapshot'), then enumerates the exact contents (financial metrics, governance, dividends, insider activity, risk flags, announcements). This lets an agent distinguish it from single-metric siblings like get_financials or get_dividends 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.

Usage Guidelines4/5

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

It explicitly gives three use cases: quick due diligence, adviser client meetings, and company overview summaries. It does not name alternatives or state when not to use it, so it falls just 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_compensation_benchmarkA
Read-onlyIdempotent
Inspect

Get compensation percentile benchmarking for a specific executive or board role across all NZX companies. Returns P10/P25/P50/P75/P90 percentiles, mean, min, max, plus breakdowns by sector and market cap tier (micro/small/mid/large). Valid roles: ceo, cfo, coo, chair, director, cto, cio, cro, general-counsel, company-secretary. Use when asked about pay benchmarks, market rates, how much CEOs/CFOs earn, or whether a company overpays vs peers.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleYesRole to benchmark: ceo, cfo, coo, chair, director, cto, cio, cro, general-counsel, company-secretary
yearNoFinancial year to filter (default: latest available per company)
sectorNoFilter by sector (e.g. "Healthcare", "Energy")
market_capNoFilter by market cap tier: micro, small, mid, large

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description's return-value enumeration (P10–P90, mean, min, max, sector/market-cap breakdowns) largely duplicates the existing output schema rather than adding new behavioral context such as data recency or coverage caveats. With annotations doing the heavy lifting, a 3 is appropriate.

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 core purpose and scope, then returns, then valid values, then usage triggers. The return-value sentence is somewhat redundant given the output schema exists, but the overall structure is tight and every clause is actionable.

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

Completeness4/5

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

With a complete schema, full annotation coverage, and an output schema, the description needn't explain return shape; it correctly focuses on scope and trigger conditions. The one gap is sibling disambiguation against get_remuneration_benchmarks and get_executive_compensation, which would be valuable in a tool set this crowded.

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

Parameters3/5

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

Schema description coverage is 100% and every parameter (role, year, sector, market_cap) is documented in the schema itself. The description restates the valid role list and market-cap tiers, which mirrors rather than extends the schema, so baseline 3 applies.

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?

States a specific verb and resource ('Get compensation percentile benchmarking') plus an explicit scope ('across all NZX companies') and a concrete role set, which distinguishes it from a single-company tool like get_executive_compensation. However, it never names or differentiates from its very close sibling get_remuneration_benchmarks, so the agent must infer the boundary.

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

Usage Guidelines4/5

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

The final sentence gives clear triggering contexts ('pay benchmarks, market rates, how much CEOs/CFOs earn, or whether a company overpays vs peers'). There are no when-not conditions and no explicit routing to alternative tools such as get_remuneration_benchmarks or get_executive_compensation, so the guidance 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.

get_consensus_estimatesA
Read-onlyIdempotent
Inspect

Get unified analyst consensus estimates for an NZX company. Combines Yahoo Finance consensus (target prices, buy/hold/sell), company guidance (revenue/NPAT/EBITDA ranges with accuracy history), individual broker ratings and forecasts, earnings surprise probability, and valuation context. The most complete view of market expectations for any NZX stock.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the agent knows this is a safe, idempotent, closed-world read. The description adds that the result is an aggregate of several external sources (Yahoo consensus, guidance, broker ratings), which is useful behavioral context, but omits freshness/staleness, coverage gaps, or rate-limit behavior for a multi-source aggregation.

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 sentences, front-loaded with the verb and resource, then the components, then the positioning claim. Efficient overall, though 'The most complete view of market expectations for any NZX stock' is unverifiable marketing that consumes space without adding selection value.

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

Completeness4/5

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

An output schema exists, so return format needn't be documented, and the description still characterizes the categories of data returned. Combined with full annotation coverage of the safety profile, an agent has enough to call it correctly; only explicit sibling routing is missing.

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?

Only one parameter, with schema description coverage at 100% including format examples ('FPH', 'AIR', 'MEL'). The description adds no syntax beyond the schema, so the schema does the work; with a single fully documented parameter the baseline is high rather than a gap.

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?

States a specific verb ('Get') and resource ('unified analyst consensus estimates') scoped to NZX companies, then enumerates the aggregated sources. It implicitly positions itself against siblings like get_analyst_consensus and get_broker_coverage via 'unified' and 'most complete view', but never names them, so differentiation is inferred rather than stated.

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

Usage Guidelines3/5

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

Usage context is implied by 'for an NZX company' and the 'most complete view' framing, which hints at when to prefer this over narrower siblings. However, there is no explicit when-to-use/when-not-to-use guidance, no mention of the narrower alternatives, and no prerequisites stated.

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

get_corporate_givingB
Read-onlyIdempotent
Inspect

Get corporate donations, sponsorships, and community investment for an NZX company. Shows recipients, amounts, donation types (cash/sponsorship/community_investment/grant/in-kind), foundation name, and total community investment. Cross-linked to registered charities where possible.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "SPK", "AIR", "GMT")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, so the safety profile is covered. The description adds the shape of returned data (recipients, amounts, types, foundation, totals) and a data-quality caveat ('cross-linked to registered charities where possible'), which is useful context beyond the annotations.

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?

Two tight sentences, front-loaded with the core action and scope. The second sentence is a field enumeration that partially duplicates the output schema, but it is short and readable rather than padded.

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

Completeness4/5

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

For a one-parameter lookup with an output schema and full annotation coverage, the definition gives enough to call it correctly; return values need not be re-explained. The main gap is the lack of any disambiguation from the charity/ESG siblings, which is a minor omission rather than a blocker.

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

Parameters3/5

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

Schema description coverage is 100% for the single ticker parameter, and the schema already gives the format and examples. The description adds nothing about the parameter, so the baseline 3 applies.

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?

States a specific verb (get) and resource (corporate donations, sponsorships, community investment) scoped to an NZX company, and enumerates the donation types returned. It is clear on its own, but never names or distinguishes itself from related siblings like get_agency_charity_funding or get_esg_data, so an agent must infer the boundary.

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

Usage Guidelines2/5

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

There is no explicit when-to-use, when-not-to-use, or alternative routing. The only implicit guidance is the 'for an NZX company' scope, which leaves the agent to guess how this differs from get_agency_charity_funding or the ESG tools.

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

get_corporate_relationshipsA
Read-onlyIdempotent
Inspect

Get all professional service relationships for an NZX company — auditors, law firms, share registrars, and bankers. Returns current and historical relationships, audit fee data, and companies sharing the same advisers. Useful for understanding corporate dependencies and hidden connections.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SKC")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world behaviour, and the description adds genuine context beyond them: the result spans current AND historical relationships, includes audit fee data, and surfaces other companies sharing the same advisers. It stops short of noting freshness, coverage limits, or what happens for a ticker with no recorded advisers.

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 short sentences, front-loaded with the verb/resource and coverage list, then the return contents, then the use case. Tighter than most, though the final usefulness sentence is soft rather than operational.

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

Completeness4/5

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

An output schema exists, so return explanation is a bonus rather than a requirement, and the description nevertheless summarises what comes back. Combined with rich annotations and a fully documented single parameter, an agent has what it needs to invoke this correctly; only edge-case behaviour (unknown ticker, empty adviser history) is unaddressed.

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

Parameters3/5

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

Only one parameter and schema coverage is 100%, so the schema already documents the ticker and its format. The description reinforces that the ticker identifies an NZX company but adds no new detail about the parameter itself; baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource and enumerates the coverage (auditors, law firms, share registrars, bankers), which cleanly separates it from near-neighbours such as get_audit_history (audit-only) and get_deal_advisers (deal-specific). The NZX scoping is explicit, so an agent can pick this tool without opening either schema.

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

Usage Guidelines3/5

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

'Useful for understanding corporate dependencies and hidden connections' implies a context of use but names no alternative tools and gives no when-not guidance, despite many overlapping siblings (get_hidden_connections, get_company_connections, get_adviser_market_share). Usage is inferable 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_councillor_interestsA
Read-onlyIdempotent
Inspect

Get pecuniary interests declared by councillors on a specific NZ council. Shows financial interests including company directorships, shareholdings, trusts, property, employment, gifts, hospitality, and organisation memberships. Data from council interest registers under the Local Authorities (Members' Interests) Act 1968. Use when asked about councillor conflicts of interest, council member business interests, or local government transparency.

ParametersJSON Schema
NameRequiredDescriptionDefault
termNoFilter by council term (e.g. "2025-2028"). Omit for all terms.
includeNoComma-separated extras: "entities" (top entities), "summary" (aggregate stats)
council_slugYesCouncil slug (e.g. "wellington-city-council", "auckland-council", "christchurch-city-council")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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 bar is covered. The description adds real value beyond that by disclosing the data source (council interest registers under the Local Authorities (Members' Interests) Act 1968) and the full content scope. Auth/pagination behavior is not mentioned, keeping it from a 5.

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

Conciseness5/5

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

Three sentences, front-loaded with the verb and resource, then content scope, then triggers. No filler or repetition; every sentence earns its place.

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

Completeness4/5

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 not be described, and annotations cover the safety profile. The description supplies purpose, content scope, and legal provenance, leaving only minor gaps such as auth or rate behavior for a read-only tool whose parameters are fully documented.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents council_slug, term, and include with examples. The description adds no parameter-level syntax or filtering semantics beyond the schema, which is the expected baseline at full coverage.

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

Purpose5/5

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

Specific verb (Get) plus resource (pecuniary interests declared by councillors) plus scope (a specific NZ council). The list of included interest types and the statutory source make it unmistakable against siblings like get_interest_register or get_director_conflicts.

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?

Explicit triggers are given: conflicts of interest, council member business interests, local government transparency. No sibling is named as an alternative nor is an explicit 'when-not' provided, so it stops 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.

get_credibility_momentumA
Read-onlyIdempotent
Inspect

Get management credibility momentum for an NZX company. Measures whether management credibility is improving or declining over time by comparing recent vs historical guidance accuracy, tone stability, insider alignment, and transparency trends. Returns momentum score (-100 to +100) and direction. Use when assessing whether management quality is on an upward or downward trajectory.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so safety is covered. The description adds genuine context beyond them: the four component signals being compared, the temporal comparison method (recent vs historical), and the score scale and direction of the output.

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

Conciseness5/5

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

Three sentences with a clean progression: purpose, methodology/output, usage trigger. No filler, no repetition of the parameter schema, and the most important information is front-loaded.

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

Completeness4/5

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 needn't explain return structure, and annotations cover the safety profile; the description still supplies the composite methodology and score range. The only gap is the failure to disambiguate from get_management_credibility in a toolset crowded with management-quality variants.

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

Parameters3/5

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

A single ticker parameter with 100% schema description coverage that already includes concrete examples ('FPH', 'AIR', 'SPK'). The description adds nothing about the parameter (e.g. required format, error behavior for unknown tickers), so the baseline 3 for high coverage applies.

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 gives a specific verb+resource ('Get management credibility momentum'), names the market domain ('NZX company'), and specifies the composite inputs (guidance accuracy, tone stability, insider alignment, transparency trends). It is clearly distinct from a static score in spirit, but it never names or contrasts with the near-identical sibling get_management_credibility, leaving the agent to infer the level-vs-trajectory distinction.

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?

'Use when assessing whether management quality is on an upward or downward trajectory' gives a clear situational trigger. However, it offers no exclusions or explicit alternative routing (e.g. use get_management_credibility for a point-in-time level), so sibling selection remains partly inferential.

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

get_credit_ratingsA
Read-onlyIdempotent
Inspect

Get credit rating history for an NZX company. Shows S&P, Moody's, Fitch, AM Best ratings with upgrades, downgrades, and outlook changes. ~20 NZX companies have credit ratings.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear or range (e.g. "2024" or "2020-2024")
limitNoMax results
actionNoFilter by action: affirmed, upgraded, downgraded, assigned, withdrawn
agencyNoFilter by agency: "S&P", "Moody's", "Fitch", "AM Best"
tickerYesNZX ticker symbol (e.g. "ANZ", "MEL", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds useful behavioral detail beyond annotations: it shows what event types are included (upgrades, downgrades, outlook changes) and warns about limited company coverage. It does not mention pagination or empty results, but that is partly covered by the output schema and parameter descriptions.

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

Conciseness5/5

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

Two tightly written sentences. The first sentence states the purpose, and the second adds content detail and a valuable coverage caveat without wasted words or repetition of schema fields.

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 read-only look-up tool with one required parameter, a fully described schema, and an output schema, the description is complete. It explains the domain, the included data types, and the sparse coverage for NZX companies. Nothing an agent needs in order to decide whether and how to call this tool is missing.

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

Parameters3/5

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

Schema description coverage is 100%, with every parameter already documented. The description does not add substantial parameter-specific meaning beyond the schema; it merely reinforces the domain context. A baseline of 3 is appropriate because the schema carries the parameter documentation burden.

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 opens with a specific verb and resource ('Get credit rating history for an NZX company') and immediately clarifies the subject matter by naming the agencies and event types. This clearly distinguishes it from other NZX company tools like get_financials or get_stock_prices, even without an explicit sibling comparison.

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

Usage Guidelines4/5

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

The description states clear context: this is for NZX company credit rating history, covering four named agencies. The caveat that only ~20 NZX companies have credit ratings helps the agent set expectations and avoid calling it for tickers likely to have no data. It does not name alternatives, but no direct alternative exists among the siblings, so the context is sufficient.

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

get_daily_market_wrapA
Read-onlyIdempotent
Inspect

Get the daily NZX market wrap — a market-wide digest covering all active NZX issuers. Returns price moves, market breadth (gainers/decliners/unchanged), announcements, insider trades, upcoming dividends, board changes, plus AI-generated video script and written narrative summary. Use when asked about overall market conditions, today's market, what happened on the NZX, or market summary.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback days (1-7, default 7). Use 1 for last trading day, 7 for the week.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds output composition but does not reveal behavioral nuances like data freshness, market-hours limitations, or failure behavior. It is adequate but not enriched beyond what annotations already provide.

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

Conciseness5/5

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

Two focused sentences: the first states the resource and what it returns, the second gives concrete usage triggers. There is no filler and the essential information is front-loaded.

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 read-only tool with one optional parameter, full schema coverage, and an output schema present, the description fully supports selection and invocation. Nothing critical is missing for an agent to decide when to call it.

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

Parameters3/5

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

Schema coverage is 100% for the single optional 'days' parameter, including minimum, default, and usage guidance ('Use 1 for last trading day, 7 for the week'). The description adds no new parameter semantics, but none are needed because the schema fully documents it.

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 specifies a precise verb and resource: it gets a market-wide NZX digest covering all active issuers, and enumerates contents (price moves, breadth, announcements, insider trades, dividends, board changes, AI summary). This clearly distinguishes it from sibling company-specific tools like get_stock_prices or get_dividends.

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

Usage Guidelines4/5

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

The description explicitly gives invocation triggers: 'when asked about overall market conditions, today's market, what happened on the NZX, or market summary.' It does not explicitly mention when not to use it or name alternatives, but the market-wide scope and trigger phrases are clear.

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

get_deal_advisersA
Read-onlyIdempotent
Inspect

Get professional advisers (law firms, investment banks, valuers) who advised on capital raises and takeovers for an NZX company. Shows which firms acted as legal counsel, underwriter, lead manager, independent adviser, or valuer on each deal. Includes deal details (amount, type, date) and adviser roles. Use for deal intelligence, adviser league tables, or capital markets analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter by adviser role: legal_issuer, underwriter, lead_manager, independent_adviser, valuer, etc.
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "CEN")
deal_typeNoFilter by deal type: capital_raise or takeover

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful content detail (roles acted, deal details included) but says nothing about pagination, result limits, or auth requirements for a tool with no such disclosure elsewhere; with annotations doing the heavy lifting, a 3 is appropriate.

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?

Four clean sentences, front-loaded with the returned entity and scope before the use cases. The 'Includes deal details (amount, type, date) and adviser roles' sentence is somewhat redundant given a full output schema, but overall there is little waste.

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

Completeness4/5

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

With annotations, a 100%-covered schema, and an output schema, the description only needs to establish scope and intent, which it does ('professional advisers who advised on capital raises and takeovers for an NZX company'). It omits how results are scoped per ticker versus market-wide, a minor gap.

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

Parameters3/5

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

Schema description coverage is 100% and each of the three parameters already carries its own description and example values. The description only echoes the filterable facets (deal type, adviser roles) without adding syntax, defaults, or combination rules beyond the schema, so baseline 3 applies.

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?

States a specific verb and resource (professional advisers: law firms, investment banks, valuers for an NZX company) and enumerates the roles returned, so the agent knows exactly what comes back. It distinguishes the tool from generic company data tools, though it does not explicitly separate it from near-neighbours like get_adviser_market_share despite claiming 'adviser league tables' as a use case.

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?

Gives clear positive contexts — 'deal intelligence, adviser league tables, or capital markets analysis' — which an agent can match against an intent. There are no exclusions or conditionals pointing at sibling tools (e.g. get_capital_raises, get_takeovers, get_adviser_market_share), so routing between them is left to inference.

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

get_deal_conflictsA
Read-onlyIdempotent
Inspect

Detect potential conflicts of interest in NZX capital markets deals. Cross-references deal advisers with director appointments (cross-board conflicts), MP interests, auditor independence (same firm audits and advises), and councillor declarations. Use ticker "all" for market-wide scan.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol or "all" for market-wide

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds meaningful context by specifying what data sources it cross-references (director appointments, MP interests, auditor independence, councillor declarations), which helps an agent understand the tool's behavioral scope beyond the annotations.

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

Conciseness5/5

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

Three sentences, each front-loaded and purposeful: purpose, cross-referenced domains, then scoping instruction. No filler or redundancy, and the most important information appears first.

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

Completeness4/5

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 not be described. The description covers purpose, data sources, and the market-wide scope flag, which is nearly complete for a single-parameter conflict-detection tool. It could add a sentence on limitations or freshness, but no critical invocation information is missing.

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

Parameters3/5

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

Schema description coverage is 100%, and the description's only parameter note ('Use ticker "all" for market-wide scan') simply restates what the schema already says. It adds no new syntax, format, or semantic detail beyond the structured field, so the baseline 3 applies.

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?

States a specific verb ('Detect') and resource ('potential conflicts of interest in NZX capital markets deals'), and elaborates the exact cross-referencing domains. However, it never names or distinguishes itself from closely related siblings such as get_director_conflicts or get_auditor_red_flags, so an agent must infer the boundary.

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

Usage Guidelines3/5

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

The description implies its use case by enumerating conflict types, and it tells the agent how to scope the ticker parameter. But it gives no explicit when-to-use versus alternatives, no prerequisites, and no exclusions, leaving routing decisions to inference.

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

get_deal_insider_signalsA
Read-onlyIdempotent
Inspect

Detect insider trading patterns before capital raises and takeovers. Cross-references director share transactions (9,453 records) with deal announcements to flag pre-deal buying or selling within 30/60/90 days. Returns signal type (buy/sell/mixed), severity (critical/high/medium/low), volume anomaly vs 12-month average, and individual director activity. Use to detect insider confidence signals, potential information leakage, or dilution concerns ahead of deals.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback window in days before deal (30, 60, or 90). Default 90.
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL"), or "all" for market-wide scan
deal_typeNoFilter by deal type: capital_raise or takeover

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld=false, non-destructive), so the bar is lower. The description still adds real value beyond them: data provenance (9,453 director transaction records), the cross-referencing methodology, the 30/60/90-day windows, and the output fields (signal type, severity, volume anomaly, director activity). It does not note rate limits or data freshness, keeping it from a 5.

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 sentences, front-loaded with the core purpose, then method/data, then use cases. Every sentence carries weight, though the final clause ('insider confidence signals, potential information leakage, or dilution concerns') slightly overlaps and could be tightened.

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 read-only analytical tool with a full schema and an output schema present, the description supplies enough: what it detects, how, over what windows, and what it returns. Nothing an agent needs to select or invoke it correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents ticker, days (30/60/90, default 90), and deal_type. The description only echoes the 30/60/90-day framing already in the schema and adds no syntax or edge-case guidance (e.g. how 'all' interacts with deal_type). Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb (detect) and resource (insider trading patterns around deals), plus the concrete method (cross-referencing director transactions with deal announcements). This clearly separates it from siblings like get_insider_trades or get_insider_clusters, which surface raw holdings rather than pre-deal signals.

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?

Explicitly lists use cases: insider confidence signals, potential information leakage, dilution concerns ahead of deals. That gives clear when-to-use context, but it never names an alternative tool (e.g. get_insider_trades, get_deal_prediction) or a when-not-to-use condition, so it stops 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.

get_deal_predictionA
Read-onlyIdempotent
Inspect

Score an NZX company 0-100 for likelihood of capital raise in next 12 months. 8-factor model: raise frequency, recency, cash position, debt pressure, insider buying, dividend stress, adviser appointments, capex needs. Use ticker "all" for market-wide rankings. Identifies companies most likely to need capital.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol or "all" for market-wide

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds meaningful context beyond that: the 0-100 scoring scale, the prediction window, the composition of the 8-factor model, and the market-wide vs single-company modes.

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 sentences, front-loaded with the core purpose and horizon before the factor list and the special parameter value. The factor enumeration is dense but informative; nothing is wasted.

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

Completeness4/5

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

An output schema exists, so return-value formatting need not be described. For a single-parameter read-only prediction tool, the description covers purpose, model basis, and the market-wide mode, leaving little an agent needs to call it correctly.

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

Parameters3/5

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

Schema description coverage is 100% and the single ticker parameter is fully documented in the schema. The description's "all" hint duplicates what the schema already states, so it adds no semantic value over structured data; baseline 3 applies.

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?

States a specific verb (Score), resource (NZX company), output scale (0-100), and the prediction horizon (next 12 months), plus the full 8-factor basis. It is clearly distinguishable from historical siblings like get_capital_raises, though it does not explicitly name an alternative tool to differentiate itself.

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

Usage Guidelines3/5

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

The only usage instruction is "Use ticker 'all' for market-wide rankings," which is a parameter-value hint rather than when-to-use guidance. There is no statement of when-not-to-use or which sibling to pick for a related question, so usage is only implied.

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

get_deep_researchA
Read-onlyIdempotent
Inspect

Run a comprehensive 5-phase agentic deep research pipeline on a company. Gathers fundamentals, governance, market position, dividends, and recent events using 20+ data tools, then synthesizes into a McKinsey-style structured investment report. Takes 30-90 seconds. Use for deep-dive, multi-faceted research requests where the user wants a thorough analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "SPK")
questionNoOptional specific question to focus the research on
templateNoResearch template: general (default), investment_thesis, due_diligence, board_meeting, or earnings_preview

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorld. The description adds genuinely useful context beyond that: a 30-90 second latency expectation, the five-phase structure, that it fans out to 20+ tools, and that output is a McKinsey-style structured report. This materially helps an agent set expectations for a long-running call.

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?

Four sentences, front-loaded with the core action and its phases, then latency, then selection guidance. Efficient and well-ordered, though the phase/tool detail is slightly dense for the up-front position.

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

Completeness4/5

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 annotations cover the safety profile. The description supplies the remaining essentials: scope, duration, and use case. Only the lack of explicit sibling routing keeps it from a 5.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents ticker, question, and template fully. The description adds only that research is performed 'on a company,' which is marginal beyond the schema. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Run a comprehensive 5-phase agentic deep research pipeline on a company') and details what the pipeline gathers and produces. An agent can distinguish this from narrowing siblings like get_deep_research_qa or get_research_briefing based on the described scope.

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?

'Use for deep-dive, multi-faceted research requests where the user wants a thorough analysis' gives clear positive selection criteria. It does not name alternatives (e.g. get_deep_research_qa, get_research_briefing) or state when NOT to use it, so it falls short of full when/when-not guidance.

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

get_deep_research_qaA
Read-onlyIdempotent
Inspect

Validate a deep research report against ground-truth NZXplorer data. Cross-checks financial figures (revenue, NPAT), governance scores (GRS), accounting quality (M/F/Z-scores), director counts, ESG data, and investment thesis structure. Returns per-check pass/fail/warn status, overall confidence score (0-100), and critical failures. Use after generating a deep research report to verify accuracy before sharing.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description adds real behavioral context: what ground truth is compared against, and the response shape (per-check pass/fail/warn, 0-100 confidence, critical failures). Auth requirements, rate limits, and behavior when no report exists are still undisclosed.

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 purpose, then a compact enumeration of check categories, then the usage trigger. The long middle sentence is dense but each item earns its place by telling the agent what validation coverage to expect.

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

Completeness4/5

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

With a rich annotation set, a single fully documented parameter, and an output schema present, the description supplies everything needed: purpose, workflow position, validation scope. Only minor gaps remain, such as prerequisites (does a report for the ticker need to exist first?) and handling of missing data.

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

Parameters3/5

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

One parameter with 100% schema description coverage ('ticker': 'NZX ticker symbol'), so the schema already does the work; baseline 3 applies. The description implicitly clarifies that only a ticker is needed rather than the report body, but adds no format or scoping detail about the parameter itself.

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?

Specific verb+resource: 'Validate a deep research report against ground-truth NZXplorer data', followed by an explicit inventory of what is cross-checked (revenue/NPAT, GRS, M/F/Z-scores, director counts, ESG, thesis structure). This distinguishes it from siblings like get_deep_research (which generates) and check_thesis (which checks a narrower artifact).

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?

Gives a clear trigger: 'Use after generating a deep research report to verify accuracy before sharing.' It places the tool in a workflow, but names no alternatives and no when-not conditions (e.g., what to do if no report exists yet). Solid context, no exclusions.

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

get_digital_presenceA
Read-onlyIdempotent
Inspect

Get digital presence metrics, AI visibility, and perception gap analysis for an NZX company. Shows how investors find the company online, what AI search engines say about it, and where market perception diverges from filing truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds valuable content context (what the metrics reveal about online discovery, AI search results, and perception divergence) but discloses nothing about data freshness, coverage limits, or rate behavior.

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

Conciseness5/5

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

Two tight sentences, front-loaded with the verb and resource, then expanding into the three outputs. No filler or redundancy.

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

Completeness4/5

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 covers the three analytical dimensions it surfaces. It is essentially complete for a single-parameter read tool, with only minor gaps around which specific metrics are returned.

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

Parameters3/5

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

Schema coverage is 100%, so the single ticker parameter is fully documented in the schema. The description only implies an NZX scope that the schema already states explicitly, adding no syntax or format detail. Baseline 3 when the schema does the heavy lifting.

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?

Specific verb 'Get' plus resource 'digital presence metrics', and it enumerates three concrete sub-dimensions (AI visibility, investor discovery, perception gap). The 'where market perception diverges from filing truth' framing makes it easily distinguishable from siblings like get_ir_dashboard or get_news_sentiment.

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

Usage Guidelines3/5

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

Scopes usage to 'an NZX company', which implies the appropriate context, but gives no when-to-use vs when-not guidance and names no alternative sibling for overlapping reputation/perception needs. Usage must be inferred from the purpose statement.

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

get_director_conflictsB
Read-onlyIdempotent
Inspect

Detect conflicts of interest for directors of an NZX company. Returns cross-directorships (directors on multiple NZX boards), overboarding risk (too many positions), related entity overlaps (directors sharing roles at same charities/public sector), and cross-company insider trading flags.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds real content beyond that by naming the four conflict categories detected, but says nothing about permissions, data freshness, or rate limits.

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?

A single dense sentence that front-loads the purpose and then lists outputs; every clause earns its place. Slightly long but no wasted filler.

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

Completeness4/5

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

For a read-only, single-parameter tool with a full output schema and complete parameter docs, the description is sufficient: it establishes scope (NZX company) and the nature of the results. Only the missing sibling routing keeps it from a 5.

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

Parameters3/5

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

Schema coverage is 100% for the single ticker parameter with a format example, so the schema carries the parameter documentation. The description adds no syntax or constraint detail beyond what the schema provides, making 3 the appropriate baseline.

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?

States a specific verb and resource ("Detect conflicts of interest for directors of an NZX company") and enumerates four concrete output categories, so the agent knows what it gets back. It does not explicitly differentiate itself from close siblings like get_director_risk or get_deal_conflicts, which keeps it below a 5.

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

Usage Guidelines2/5

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

No when-to-use or when-not-to-use guidance, and no alternative sibling is named. The agent must infer from the purpose that this is a governance/diligence step rather than, say, get_director_workload or get_director_network.

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

get_director_demographicsA
Read-onlyIdempotent
Inspect

Get board demographics for a company — estimated director ages, international experience (countries worked in), professional body memberships, career length, and gender split. Uses AI-extracted data from director biographies.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so safety is covered. The description adds genuinely useful provenance context the annotations cannot: the figures are AI-extracted from director biographies and the ages are 'estimated', warning the agent that the data is inferential rather than reported.

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

Conciseness5/5

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

Two sentences, zero filler, with the core output list front-loaded and the data-provenance caveat placed last where it belongs. Every clause earns its place.

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

Completeness4/5

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

An output schema exists, so return structure needn't be described, and annotations carry the safety profile. The description covers subject matter and data reliability well; only minor gaps remain, such as whether results cover the full board or a period, and no guidance on ticker validity or error cases.

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

Parameters3/5

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

Only one parameter (ticker) with 100% schema description coverage including worked NZX examples ('FPH', 'AIR', 'MEL'). The description confirms the scope is a single company but adds no syntax or format detail beyond the schema, so baseline 3 applies.

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?

States a specific verb and resource ('Get board demographics for a company') and then enumerates the exact data domains returned — ages, international experience, professional body memberships, career length, gender split. This is far more informative than sibling names like get_board_composition_report or get_directors, though it never explicitly routes the agent away from those tools.

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

Usage Guidelines2/5

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

There is no when-to-use statement, no prerequisite, and no named alternative. With dozens of adjacent board/director tools in the sibling list, an agent gets no help deciding between this and get_board_skills_matrix, get_board_credentials, or get_director_detail.

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

get_director_detailA
Read-onlyIdempotent
Inspect

Get detailed profile for a specific director by slug. Includes biography, board seats, compensation, share trades.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesDirector slug (e.g. "dame-therese-walsh")
includeNoComma-separated: trades, remuneration, exec_comp

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds the return-content scope (biography, board seats, compensation, share trades), which is useful, but it does not disclose additional behavioral traits such as error behavior or data freshness. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is a single, front-loaded sentence that states the action, the resource, the lookup key, and the main content categories. There is no filler, redundancy, or unnecessary caveat.

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 simple two-parameter read-only tool with a full output schema and rich annotations, the description supplies everything an agent needs to invoke it correctly: the resource type, the identifier mechanism, and the scope of returned data. Missing items like explicit alternatives are not required for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents both parameters and the slug example. The description only repeats the slug concept and lists returned fields, which maps loosely to the include parameter but adds little beyond the schema. A baseline 3 is appropriate.

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 opens with a specific verb and resource: 'Get detailed profile for a specific director by slug.' It clearly distinguishes this singular detail endpoint from the plural listing tool get_directors and other director-related siblings by emphasizing the slug-based lookup and the included content areas (biography, board seats, compensation, share trades).

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

Usage Guidelines3/5

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

The description implies usage: use this when you have a director slug and need a detailed single-director profile. However, it does not explicitly state when not to use it or name alternatives such as get_directors for listing directors. This is adequate but relies on inference.

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

get_director_due_diligenceA
Read-onlyIdempotent
Inspect

Get a comprehensive due diligence report for any NZX director. Returns all board positions (current + historical), overboarding assessment, remuneration across all boards, AGM election voting record, insider trading activity, governance contribution (GRS scores of companies served), stock performance during tenure, and risk flags. Use this when asked about a director's governance track record, suitability for board appointment, or comprehensive background.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesDirector slug (e.g. "joan-withers", "mark-cross"). Use get_directors with search param to find the slug first.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so the safety profile is covered. The description adds meaningful behavioral context: it is a comprehensive aggregation spanning many data domains, and the schema note directs the agent to resolve the slug via get_directors first. No auth/rate-limit notes, but the breadth disclosure is genuinely useful beyond the annotations.

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 core purpose, followed by a scannable enumeration of report contents and a usage clause. The inventory is long but each item earns its place by defining the report's scope; no filler sentences.

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?

An output schema exists so return structure needn't be explained, yet the description still previews the contents. For a single-param read-only tool scoped to NZX directors, nothing an agent needs for correct selection or invocation is missing.

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

Parameters3/5

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

Only one parameter with 100% schema coverage; the schema already documents the slug format and the workflow to find it via get_directors. The description adds no parameter-level detail, which is acceptable at this coverage level, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Get') and resource ('comprehensive due diligence report for any NZX director') and then enumerates the exact contents (board positions, overboarding, remuneration, AGM voting, insider trading, GRS scores, performance, risk flags). This enumeration is detailed enough that an agent can distinguish it from granular siblings like get_director_detail or get_director_risk.

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?

Explicitly states when to use it: 'when asked about a director's governance track record, suitability for board appointment, or comprehensive background.' Clear context is provided, but no when-not guidance or named alternatives (e.g. use get_director_detail for a lighter lookup) despite many adjacent director siblings.

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

get_director_historyA
Read-onlyIdempotent
Inspect

Get a director's full company history and failure rate. Shows all NZX board positions, biographical company mentions, and associations with failed companies (liquidations, receiverships). Includes failure rate percentage and risk level. Use when asked about a director's track record, past boards, failure rate, or corporate history.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesDirector slug (URL-friendly name, e.g. "rob-campbell")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so safety behavior needs no restating. The description adds scope detail (liquidation/receivership associations, risk level), but says nothing about data freshness, coverage limits, or what an unknown slug yields – and with an output schema present, the payload list is partly redundant.

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?

Four tight sentences with the core capability front-loaded and the usage cue last. No filler, though the enumeration of returned artifacts is somewhat redundant with the output schema.

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

Completeness4/5

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

For a single-parameter, read-only lookup with an output schema and full annotation coverage, the description is sufficient to call the tool correctly. The one real gap is sibling disambiguation across the many get_director_* tools.

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

Parameters3/5

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

One required parameter at 100% schema description coverage; the schema already explains the slug format with an example. The description adds no slug syntax, lookup behavior, or resolution guidance, so the baseline 3 is appropriate.

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?

Specific verb+resource ('Get a director's full company history and failure rate') with an enumerated payload: NZX board positions, biographical mentions, failed-company associations, failure rate percentage and risk level. Clear on its own, but it never distinguishes itself from close siblings like get_director_risk, get_director_detail, get_company_directorships or get_director_due_diligence.

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

Usage Guidelines4/5

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

The final sentence gives explicit trigger intents: 'track record, past boards, failure rate, or corporate history.' That is clear context for when to reach for this tool, but it offers no exclusions or alternative routing despite a large overlapping director-tool family.

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

get_director_networkA
Read-onlyIdempotent
Inspect

Analyze director network patterns — cross-directorships, board interlocks, shared entities. Three modes: (1) company mode (ticker param) shows network for a company's board, (2) director mode (director param) shows a person's full network including all shared boards and connected directors, (3) network mode (no params) shows NZX-wide cross-directorship map with most connected directors. Use when asked about "director network", "who is connected to", "board interlocks", "cross-directorships", "overlapping boards", "shared directors", or "who sits on multiple boards".

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerNoNZX ticker to analyze board network for (e.g. "AIR"). Omit for director or network mode.
directorNoDirector slug or name to find network around (e.g. "joan-withers" or "Joan Withers"). Omit for company or network mode.
include_historicalNoInclude historical positions, not just current. Default: false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuine behavioral context beyond that: the tool operates in three distinct modes with materially different outputs (company board vs. a person's full network vs. a whole-market map), which is information 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 core verb and resource, then modes, then trigger keywords; each block earns its place. The keyword list is long, but it is routing value rather than filler, and the whole thing fits in two sentences.

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?

With an output schema present, the description needn't document return values, and it nonetheless sketches what each mode surfaces. Mode routing, parameter roles, and trigger vocabulary are all present, so an agent has everything needed to call it correctly.

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 100%, so the baseline is 3. The description earns above baseline by clarifying the mutual exclusivity of ticker/director and what happens when neither is supplied (network mode), resolving an ambiguity the schema only hints at with "Omit for director or network mode."

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

Purpose5/5

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

States a specific verb and resource ("Analyze director network patterns") and immediately enumerates the scope: cross-directorships, board interlocks, shared entities. The three-mode breakdown makes it clearly distinguishable from narrower siblings like get_chair_network or get_company_connections, which cover only one slice of the same graph.

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?

Provides explicit routing: which parameter selects which mode (ticker for company, director for person, neither for NZX-wide), plus a rich list of trigger phrases ("board interlocks", "overlapping boards", "who sits on multiple boards"). It does not name an alternative tool or state when NOT to use it, so it stops 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.

get_director_questionnaireA
Read-onlyIdempotent
Inspect

Get a pre-filled D&O (Directors & Officers) insurance questionnaire for a specific director at a specific company. Auto-fills 75-85% of a typical questionnaire from cross-platform data: all directorships (NZX + private + charity + iwi + public sector), insider trades, shareholdings, skills matrix, qualifications, committees, regulatory actions, court cases, disciplinary records, political connections, career history, board fees, and executive compensation.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR")
director_slugYesDirector slug from their profile URL (e.g. "rob-campbell", "scott-st-john")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds meaningful behavior beyond that: output is pre-filled rather than blank, sourced cross-platform, and covers ~75-85% of a typical questionnaire, which tells the agent to expect partial completeness. It does not disclose data freshness, rate limits, or cost.

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 purpose sentence leads, followed by a single long data-source list. The list is dense but each item is a genuinely useful signal of coverage scope. Slightly list-heavy, but front-loaded and free of padding.

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

Completeness4/5

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

With an output schema present, return-value explanation is unnecessary, and the description still characterizes the payload and its completeness. Combined with 100% parameter coverage and clear annotations, the definition is nearly self-sufficient; only usage routing to siblings is missing.

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

Parameters3/5

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

Schema coverage is 100% and both parameters (ticker, director_slug) are fully documented with format examples in the schema. The description reinforces that scope is one director at one company but adds no syntax or format detail beyond what the schema provides, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (Get) and a highly distinctive resource (a D&O insurance questionnaire) scoped to one director at one company, and enumerates what it aggregates. No sibling produces a questionnaire, so an agent can distinguish it immediately despite the crowded get_director_* namespace.

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

Usage Guidelines2/5

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

The description says what it returns but gives no when-to-use guidance and names no alternative. It never distinguishes this from adjacent tools like get_director_detail, get_director_due_diligence, or get_director_risk, leaving the agent to infer the selection criteria.

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

get_director_riskA
Read-onlyIdempotent
Inspect

Get composite risk score (0-100) for an NZX director. Aggregates failure rate, litigation, regulatory actions, professional disciplinary, offshore exposure, and overboarding into a single weighted score. Use when assessing director suitability, governance risk, or board appointment due diligence.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesDirector slug (e.g. "rob-campbell"). Use get_directors with search param to find the slug first.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is fully covered. The description meaningfully adds that the score is a weighted aggregation of six named inputs, telling the agent the output is a synthesized judgement rather than raw evidence.

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

Conciseness5/5

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

Two sentences, front-loaded with the verb and score range, followed by the aggregation detail and the use case. Every clause earns its place with no redundancy.

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

Completeness4/5

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

With a rich output schema and strong annotations, the description needn't explain return values, and it correctly points the agent to slug resolution. The only gap is any differentiation from the closest due-diligence siblings, which would round out routing.

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

Parameters3/5

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

Schema coverage is 100% and the slug parameter's own description already tells the agent to resolve it via get_directors with a search param. The description adds nothing about the parameter, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (get), resource (NZ director), and output (composite risk score 0-100), then enumerates the six aggregated components. The composite-aggregation framing distinguishes it from the many single-signal siblings like get_litigation_history or get_regulatory_actions.

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?

Explicitly names three use contexts (director suitability, governance risk, board appointment due diligence), which is clear when-to-use guidance. However, it names no alternatives or exclusions, so an agent weighing this against get_director_due_diligence or get_board_health_score gets no routing help.

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

get_directorsA
Read-onlyIdempotent
Inspect

Search NZX company directors. Returns name, bio, board seats. Filter by company or search by name.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results
searchNoSearch director name
companyNoFilter by company ticker
currentNoOnly current directors (default true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds return-field and filtering context, but no additional behavioral traits such as pagination behavior, matching semantics, or response limitations beyond the schema.

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

Conciseness5/5

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

Two short sentences deliver the core purpose, return contents, and operational modes with no filler. The most important information is front-loaded, making it easy for an agent to parse quickly.

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

Completeness4/5

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

For a read-only, optional-parameter search tool with an output schema and comprehensive annotations, the description covers the essentials: what it searches, what it returns, and how to filter. It could add a pointer to get_director_detail for cases requiring single-director depth, but that is a minor gap rather than a blocking omission.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents limit, search, company, and current. The description's mention of filtering by company or searching by name mirrors the schema rather than adding new semantic detail, keeping this at the baseline.

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 opens with a specific verb and resource: 'Search NZX company directors,' and lists concrete return fields (name, bio, board seats). It is clear on function but does not explicitly differentiate itself from the sibling get_director_detail beyond implying a list/search focus.

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

Usage Guidelines3/5

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

'Filter by company or search by name' communicates the two primary usage modes, so when to use the tool is implied. However, it does not explicitly state when not to use it or mention get_director_detail as the alternative for individual director information, leaving some routing to inference.

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

get_director_workloadA
Read-onlyIdempotent
Inspect

Get workload analysis for a director — current NZX board seats, active Companies Office directorships, overboarding status, board meeting attendance rate, tenure at each board, and chair/committee roles. Uses person slug.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPerson slug from shared.people (e.g. "rob-campbell")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description adds only data-provenance context (NZX register vs Companies Office) and the slug-based lookup key, without discussing coverage limits, missing-data behavior, or freshness — modest added value above the annotations.

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?

A single front-loaded sentence opened with the verb and resource, followed by a dense payload list. Nearly every clause earns its place, though the long em-dash enumeration is on the heavy side and slightly dilutes the opening statement.

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

Completeness4/5

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 needn't explain return values, and annotations cover the safety profile; the payload enumeration plus slug note is sufficient for an agent to call it correctly. Only edge-case behavior (no slug match, partial data) is unaddressed, which is a minor gap.

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

Parameters3/5

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

One parameter with 100% schema description coverage; the schema already explains the slug format with an example ("rob-campbell"). The description only restates 'Uses person slug,' adding no extra syntax, sourcing, or lookup semantics beyond the schema.

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 gives a specific verb+resource (workload analysis for a director) and enumerates the concrete payload: NZX board seats, Companies Office directorships, overboarding status, attendance rate, tenure, chair/committee roles. This distinguishes it reasonably well from vague siblings like get_director_detail or get_director_risk, but it never explicitly contrasts itself with those tools.

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

Usage Guidelines3/5

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

No when-to-use or when-not-to-use statement and no named alternatives. The enumerated contents imply the use case (assessing director overboarding/board load), which is implied usage rather than explicit guidance, so it lands at the minimum-viable level.

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

get_disclosure_languageA
Read-onlyIdempotent
Inspect

Analyze disclosure language evolution for an NZX company. Detects shifts in hedging patterns, sentiment volatility, buried risk frequency, guidance consistency, and forward-looking statement density. Returns 5 dimension scores (0-100) and an overall rating (Transparent/Adequate/Opaque/Concerning). Use when asked about disclosure quality, language analysis, hedging, transparency trends, or communication style.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. FPH)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds genuinely useful behavior beyond that: it discloses the exact output shape (five 0-100 dimension scores plus a Transparent/Adequate/Opaque/Concerning rating) and the specific signals detected, which helps an agent interpret results.

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 sentences, front-loaded with the purpose, then the detected signals, then the usage trigger. Dense but every clause contributes; the dimension enumeration is long but maps directly to what the tool reports.

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

Completeness4/5

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 needn't detail return values, and it still summarizes them. Annotations cover safety, the single required param is schema-documented, and usage contexts are given, leaving only sibling differentiation as a minor gap.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, which already documents 'ticker' with an example (FPH). The description adds no format, validation, or lookup nuance beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Analyze disclosure language evolution for an NZX company') and enumerates the five detection dimensions. The 'evolution' framing distinguishes it from siblings like get_disclosure_language_benchmark (comparison) and get_disclosure_score (point score), so an agent can route correctly.

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?

Explicitly says 'Use when asked about disclosure quality, language analysis, hedging, transparency trends, or communication style,' giving clear triggering contexts. However, it names no alternatives and offers no when-not guidance against close siblings such as get_risk_language or get_disclosure_language_benchmark.

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

get_disclosure_language_benchmarkA
Read-onlyIdempotent
Inspect

Get sector-benchmarked disclosure language analysis for an NZX company. Returns the company's absolute disclosure language score plus sector-adjusted score (relative to sector peers), sector percentile, and sector average breakdown by dimension. Mining companies naturally hedge more — this tool adjusts for that. Use when asked about how a company's disclosure language compares to its sector peers, or whether hedging/opacity is normal for its industry.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and closed-world safety, so the bar is lower; the description adds real context beyond that by enumerating what is returned (absolute score, sector-adjusted score, percentile, per-dimension sector average) and by justifying the adjustment ('Mining companies naturally hedge more'). It stops short of auth/rate-limit or pagination detail, but for a read-only analytical tool this is solid supplemental disclosure.

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

Conciseness5/5

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

Four sentences, front-loaded with the core purpose, then output contents, then the interpretive rationale, then the usage trigger. Every sentence carries distinct information; nothing is redundant padding.

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?

With an output schema present, the return-value explanation is not strictly required, yet the description still conveys what the tool yields and when to reach for it. For a one-required-parameter, read-only, closed-world tool with full annotation coverage, 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.

Parameters3/5

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

Schema description coverage is 100% and the single ticker parameter is already documented in the schema with examples (FPH, AIR, SPK). The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb (get) and resource (sector-benchmarked disclosure language analysis) and explicitly distinguishes the output from a plain disclosure score by emphasizing sector-benchmarking, sector-adjustment, percentile, and peer comparison. An agent can tell this apart from siblings like get_disclosure_language or get_disclosure_score 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.

Usage Guidelines4/5

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

Gives explicit triggering conditions: 'Use when asked about how a company's disclosure language compares to its sector peers, or whether hedging/opacity is normal for its industry.' This is clear context for when to use it, though it does not name the alternative (e.g. get_disclosure_language for absolute-only scoring) or state when-not to use it.

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

get_disclosure_scoreA
Read-onlyIdempotent
Inspect

Get the NZX Disclosure Transparency Score for an NZX company. Scores 0-100 across 5 dimensions: announcement frequency, disclosure completeness, guidance quality, timeliness, and sentiment transparency. Returns overall score, rating (Exemplary/Strong/Adequate/Limited/Minimal), and per-dimension breakdowns. Use when asked about disclosure quality, transparency score, reporting transparency, or how well a company communicates with the market.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. FPH)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered structurally. The description adds useful behavioral context about output bands (0-100, Exemplary/Strong/Adequate/Limited/Minimal) and per-dimension breakdowns, but says nothing about failure modes, whether the ticker must be NZX-listed, or data freshness. Adequate, not rich.

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?

Four sentences, well front-loaded: identity first, then the dimension breakdown, then the return shape, then the when-to-use triggers. Each sentence carries information, though the return-value sentence partially duplicates the output schema and could be trimmed without loss.

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

Completeness4/5

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

For a single-parameter, read-only scoring tool with an output schema available, the description covers purpose, scoring dimensions, rating bands, and invocation triggers, which is nearly everything an agent needs. The remaining gap is minor: no statement about coverage universe restrictions or behavior for an unrecognized/foreign ticker.

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

Parameters3/5

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

There is a single required parameter and schema description coverage is 100%, with the schema itself supplying format and example ('NZX ticker symbol (e.g. FPH)'). The description only implies the ticker via 'for an NZX company' and adds no format, casing, or exchange-scoping detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Get the NZX Disclosure Transparency Score for an NZX company') and immediately enumerates the five scoring dimensions, so the agent knows exactly what metric is produced. It is clearly distinguishable from nearby siblings such as get_disclosure_language, get_esg_disclosure_benchmark, and get_annual_report_quality without opening any schema.

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

Usage Guidelines4/5

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

The final sentence gives explicit trigger phrases ('disclosure quality, transparency score, reporting transparency, or how well a company communicates with the market'), which is strong positive routing guidance. It does not, however, say when to prefer this over adjacent siblings like get_ir_quality or get_disclosure_language, so it stops short of full alternative-based guidance.

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

get_dividend_cut_probabilityA
Read-onlyIdempotent
Inspect

Get dividend cut probability for an NZX company. 9-factor model (0-95%) predicting likelihood of a dividend cut based on: earnings trajectory, payout ratio, dividend cover, capital raise recency, historical cut pattern, DPS trend, OCI divergence, share dilution, and macro environment. Use when evaluating dividend sustainability or screening for at-risk dividends.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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 behavioral context beyond that: the output is a probabilistic 9-factor score bounded 0-95% and the inputs it is derived from. It does not discuss latency, caching or score interpretation thresholds.

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 purpose and score range, then the factor list, then the usage condition. The nine-factor enumeration is dense but earns its place by explaining what the score represents. Slightly long, but no sentence is wasted.

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

Completeness4/5

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; the description still supplies the score range and composition, which is the key interpretive context. For a single-parameter read tool with full annotations and an output schema, this is near-complete.

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

Parameters3/5

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

Schema description coverage is 100% and there is only one parameter (ticker), which the schema already documents with examples. The description adds nothing about the ticker format or constraints, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Get dividend cut probability for an NZX company') and immediately narrows scope with the model definition (9-factor, 0-95%). This distinguishes it clearly from adjacent siblings like get_dividend_stress_test and get_dividends without the agent opening any schema.

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?

'Use when evaluating dividend sustainability or screening for at-risk dividends' gives a concrete triggering context for the tool. It stops short of naming alternatives (e.g. get_dividend_stress_test) or stating when not to use it, so it is clear context without explicit routing.

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

get_dividendsA
Read-onlyIdempotent
Inspect

Get dividend history for an NZX company. Includes ex-date, payment date, amount (DPS), imputation %, DRP availability, summary stats. Company pages also show Dividend Safety Score (0-100 with 5 components), Forward Dividend Cut Probability (0-100% with risk factors), and Payout Ratio Trend Charts with sector benchmarks.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoDividend type: final, interim, special
yearNoYear or range (e.g. "2024" or "2020-2024")
limitNoMax results
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, and the description adds substantial behavioral context by listing the exact response contents: ex-date, payment date, DPS, imputation %, DRP availability, safety score, cut probability, and payout ratio charts. This goes beyond the structured hints.

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

Conciseness5/5

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

The description is two sentences: the first gives the core purpose and the second lists key outputs with no filler. It is front-loaded and information-dense without being bloated.

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

Completeness4/5

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

With an output schema present and annotations covering safety, the description is sufficient for an agent to understand what the tool returns and when to call it. Minor gaps like default time ranges or pagination behavior are not critical here.

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

Parameters3/5

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

Schema description coverage is 100%, so all four parameters are already documented. The description does not add parameter-level detail beyond what the schema provides, so the baseline of 3 is appropriate.

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 verb ('Get'), resource ('dividend history'), and scope ('NZX company'), and enumerates the exact data fields returned. This makes it easy for an agent to distinguish from sibling tools like get_earnings or get_financials.

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

Usage Guidelines4/5

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

The description clearly scopes the tool to dividend history and dividend-related company page metrics, which provides strong context for when to use it. It does not explicitly name alternatives or exclusions, but the context is specific enough to guide selection.

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

get_dividend_stress_testA
Read-onlyIdempotent
Inspect

Stress-test dividend safety under recession scenarios. Models what happens to the Dividend Safety Score if earnings decline 20%, 30%, or 50%. Returns base vs stressed DSS, breakpoint (the earnings decline % where DSS drops below Moderate), recession resilience rating (Strong/Adequate/Vulnerable/Fragile), and sector-typical recession context. Answers: "Is the dividend safe in a recession?" Use custom scenarios param for specific decline levels.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")
scenariosNoComma-separated earnings decline percentages (default "20,30,50"). E.g. "10,25,40"

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (read-only, idempotent, non-destructive), and the description adds substantive behavioral context: it discloses what the modeling computes and the categorical outputs (breakpoint, resilience rating scale, sector context). It stops short of stating limits such as whether results are cached or how sensitive the model is.

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 core action and well organized, but it enumerates several return fields that the output schema already carries, making it longer than strictly necessary.

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 two-parameter read-only analysis tool with a full output schema, the description covers the modeling intent, the answers it produces, and the scenario customization path. 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.

Parameters3/5

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

Schema coverage is 100%, with ticker format and scenarios defaults already documented in the schema. The description restates the default and the custom-scenario use case but adds no syntax or format meaning beyond what the schema provides, so the baseline 3 applies.

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?

States a specific verb and resource ('Stress-test dividend safety under recession scenarios') and specifies the modeling activity (earnings decline 20/30/50%). It is clearly distinct from sibling tools like get_dividends or get_dividend_cut_probability by framing itself as scenario modeling, though it never names an alternative to route the agent explicitly.

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?

Gives clear situational context via the framing question 'Is the dividend safe in a recession?' and directs custom analysis through the scenarios param. It does not, however, state when to prefer this over siblings like get_dividend_cut_probability or get_financial_distress.

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

get_earningsA
Read-onlyIdempotent
Inspect

Get earnings results for an NZX company. Extracted from full-year and half-year announcements. Includes revenue, net profit, EBITDA, EPS, DPS, and management guidance.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear or range
limitNoMax results
periodNoPeriod: annual, interim, or all
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already cover read-only, idempotent, and non-destructive nature, and the description adds context by specifying the source (full-year and half-year announcements) and the inclusion of management guidance, which is not apparent from annotations. No contradictions.

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 two sentences with no fluff wants. It front-loads the primary resource and then lists included metrics, which is efficient and structured for quick scanning.

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

Completeness4/5

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

Given the tool's moderate complexity, full schema coverage, and an output schema that likely defines return structure, the description is sufficient. It provides essential behavioral context (source, included metrics) without over-explaining. No critical gaps.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all parameters. The description does not add extra meaning beyond the schema; it merely implies the tool uses ticker and filters. Baseline 3 is appropriate.

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?

States a specific verb ('Get') and resource ('earnings results for an NZX company'), and lists key fields included (revenue, net profit, etc.). It differentiates clearly from siblings such as get_financials and get_dividends, but does not explicitly name or differentiate against a specific sibling tool beyond the general resource.

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

Usage Guidelines3/5

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

The description implies usage by indicating it is for earnings results from announcements, but it does not explicitly state when to use this tool versus alternatives like get_financials or get_metrics. No exclusions or conditions are given.

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

get_earnings_previewA
Read-onlyIdempotent
Inspect

Generate a pre-reporting season earnings preview report for an NZX company. Analyses consensus vs price (upside/downside %), guidance accuracy history (last 3 years), management tone trends, insider trading alignment, earnings surprise probability (8-factor model), management credibility score, key financial metrics to watch, and a "what to watch" summary. Uses the deep research pipeline with the earnings_preview template. Takes 30-90 seconds. Use when a user asks about upcoming results, earnings expectations, or wants to prepare for a reporting season.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "SPK")
questionNoOptional specific question to focus the earnings preview on

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover readOnly/idempotent/non-destructive/openWorld, so the safety profile is free. The description adds genuine context beyond that: it discloses the underlying mechanism ('deep research pipeline with the earnings_preview template') and a concrete latency window (30-90 seconds), which materially affects how an agent should set expectations.

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 verb and resource, then the component list, then mechanism, latency, and usage. The enumerated analysis list is long but earns its place by defining the report's scope. Slightly verbose, but every sentence carries 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?

For a composite report tool this is complete: an output schema covers return values, annotations cover safety, schema documents both params, and the description adds scope, mechanism, latency, and when-to-use. An agent has everything needed to select and invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both ticker and question are already documented in the schema, including the ticker example. The description adds no format or syntax detail about the optional question parameter beyond what the schema provides, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb (Generate) and resource (pre-reporting season earnings preview report for an NZX company), then enumerates exactly what the report contains (consensus vs price, guidance accuracy, tone trends, surprise probability, etc.). This distinguishes it clearly from atomic siblings like get_earnings, get_earnings_surprise, and get_analyst_consensus, which return individual metrics rather than a composite preview.

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?

Gives explicit when-to-use context: 'Use when a user asks about upcoming results, earnings expectations, or wants to prepare for a reporting season.' Solid routing signal, but it never names an alternative (e.g., use get_earnings_surprise for just the probability) or states when not to use it, so it stops short of full exclusion guidance.

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

get_earnings_qualityA
Read-onlyIdempotent
Inspect

Get earnings quality score for an NZX company. 0-100 composite score measuring how cash-backed and sustainable reported earnings are. 5 components: accruals ratio (net income vs operating cash flow burden), cash conversion (OCF/NI ratio), working capital efficiency (receivables/inventory trends vs revenue growth), earnings persistence (profitability consistency and volatility), capital intensity (capex vs depreciation reinvestment). Use when assessing whether profits are real cash or accrual-driven, evaluating dividend sustainability, or filtering fair value models.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds genuine behavioural substance by enumerating the five scoring components (accruals, cash conversion, working capital, persistence, capital intensity) and the resulting scale, which tells the agent what the output actually represents. No auth, rate-limit, or freshness/staleness disclosure, hence not a 5.

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 purpose, scale and scope before the component list and usage triggers. The five-component breakdown is dense but each clause maps to a distinct scoring input, so it largely earns its length; the single paragraph is slightly heavy for a one-parameter tool.

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?

An output schema exists, so return values need not be described. The description supplies everything else an agent needs: what the score means, its range, what drives it, and when to reach for it, which is complete for a single-parameter scoring tool.

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

Parameters3/5

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

Schema description coverage is 100% and there is a single parameter, so the schema already documents the ticker format including examples. The description adds nothing about the ticker beyond what the schema states, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Get earnings quality score for an NZX company') and immediately defines the artifact as a 0-100 composite measuring how cash-backed and sustainable earnings are. This is clearly distinguishable from neighbours like get_accounting_quality or get_earnings by its explicit focus on cash-backing of reported profit.

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?

Gives three concrete when-to-use triggers: assessing whether profits are real cash vs accrual-driven, evaluating dividend sustainability, and filtering fair value models. It stops short of naming an alternative tool or stating when NOT to use it (e.g. vs get_accounting_quality), so it is strong context without explicit routing.

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

get_earnings_surpriseA
Read-onlyIdempotent
Inspect

Get earnings surprise probability for a company — predicts beat/miss likelihood using 9-factor model calibrated from 716-event backtest (guidance accuracy, tone consistency, analyst consensus, historical beat/miss pattern, insider alignment, transparency, volatility, capital stress, forward-looking density). Directional accuracy: 53% upside, 45% downside. Returns surprise_probability (0-100%), direction (upside/downside/inline), risk level, and factor breakdown.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g., "FPH", "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description goes beyond them by disclosing the model's calibration basis (716-event backtest) and its directional accuracy (53% upside, 45% downside and an implied ~50/50 downside), which is genuinely valuable for setting expectations about a probabilistic forecast.

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?

One long but front-loaded sentence leads with purpose, then evidence, then return shape. The nine-factor list is dense but earns its place by explaining what drives the score. A reader can stop after the first clause if they only need the purpose.

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

Completeness4/5

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

For a single-parameter read-only tool with annotations and an output schema, this is close to complete. The closing enumeration of return fields partially duplicates the output schema, so it is slight redundancy rather than a true gap.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, and the schema already documents the ticker format with examples. The description adds nothing about the parameter, so the baseline 3 applies.

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 gives a specific verb+resource ('Get earnings surprise probability for a company') and immediately qualifies it as a beat/miss prediction from a 9-factor model, which separates it in spirit from siblings like get_earnings_preview or get_consensus_estimates. It stops short of explicitly naming a sibling it is not, which is the only thing keeping this from a 5.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no named alternatives among the ~140 siblings. The agent is told what the tool computes but not when to reach for it over get_earnings_quality, get_earnings_preview, or get_consensus_estimates.

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

get_entity_graphA
Read-onlyIdempotent
Inspect

Get the cross-platform entity relationship graph for a person or company. Returns nodes (people, companies, charities, iwi, agencies) and edges (board roles, executive roles, interests, donations, ownership) across NZXplorer, CharityData, IwiData and PublicData. Use for questions about a person's full governance footprint, cross-platform connections, or company relationship maps. Pass a person slug for people, a ticker for companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoEntity type: "person", "company", or "auto" (default: auto-detect)
depthNoRelationship depth: 1 (direct connections) or 2 (includes co-directors/other boards). Default: 1.
identifierYesPerson slug (e.g. "joan-withers") or NZX ticker (e.g. "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

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

The annotations already cover the safety profile (readOnly, idempotent, closed-world, non-destructive), so the bar is lower. The description adds genuinely useful context beyond annotations: the union of source platforms (NZXplorer, CharityData, IwiData, PublicData) and the concrete node/edge vocabulary, which tells the agent the scope of the result set.

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?

Four tight sentences, front-loaded with the core purpose before the return shape, use cases, and input convention. The node/edge enumeration is slightly dense but informative rather than padded, and nothing reads as filler.

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

Completeness4/5

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

With an output schema present and annotations carrying the safety profile, the description only needs to convey scope and usage, which it does well. The remaining shortfall is the absence of any disambiguation from sibling network/graph tools, which a consumer in this large namespace would benefit from.

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

Parameters3/5

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

Schema description coverage is 100%, including the type/depth enum-like values and identifier format, so the baseline is 3. The description restates the slug-vs-ticker convention already documented in the schema and adds nothing about how depth or type interact with results, so it does not exceed the baseline.

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?

States a specific verb and resource (cross-platform entity relationship graph) and defines the exact node and edge types returned, so the agent knows precisely what this produces. It does not, however, differentiate itself from the many structurally similar siblings (get_knowledge_graph, get_director_network, get_company_connections, get_network_intelligence), which the description never mentions.

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?

Explicitly lists when to reach for it: questions about a person's full governance footprint, cross-platform connections, or company relationship maps, plus how to format the identifier per entity type. It stops short of any when-not guidance or naming an alternative sibling, which is a real gap given how crowded this namespace is with network/graph tools.

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

get_esg_dataA
Read-onlyIdempotent
Inspect

Get ESG (Environmental, Social, Governance) data for an NZX company. 255 emissions records, 760 diversity records, 270 safety records across NZX issuers. Includes emissions (scope 1/2/3, targets, verification), diversity (board/SLT/employee gender, Māori/Pasifika representation), safety (LTIFR/TRIFR, fatalities, FTE), and reporting standards (GRI/TCFD/SBTi).

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter by fiscal year
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already declare read-only, idempotent, and non-destructive behavior, so the description does not need to restate safety. It adds useful dataset context such as record counts and coverage categories, but does not disclose additional behavioral traits like default year behavior, pagination, or result shape.

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?

Two front-loaded sentences: the first identifies the operation and scope, the second itemizes included data categories. The record counts add useful context even if not strictly necessary, and the text remains compact and scannable.

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

Completeness4/5

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

For a simple two-parameter read-only tool with a full output schema and complete parameter descriptions, the definition is sufficient for correct tool selection. It does not explain optional-year semantics, but that is not critical given the schema and annotations.

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

Parameters3/5

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

Both parameters are already described in the schema with 100% coverage, so the schema carries the parameter meaning. The description adds no detail about ticker format, year ranges, or how the optional year behaves, providing no parameter-level value beyond the schema.

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

Purpose5/5

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

States a specific action and resource: retrieving ESG data for an NZX company. The description enumerates emissions, diversity, safety, and reporting standards, which clearly distinguishes it from overlapping sibling getters like get_governance_scores or get_metrics.

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

Usage Guidelines3/5

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

The description gives implied context: this is the tool for ESG data for NZX issuers. However, it does not explicitly state when to choose it over overlapping siblings or provide exclusion criteria, leaving alternative selection to inference.

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

get_esg_disclosure_benchmarkA
Read-onlyIdempotent
Inspect

Get ESG disclosure quality benchmark for an NZX company. 3-component composite (0-100): claim-evidence alignment (40%, narrative vs actual ESG data), disclosure transparency (30%, hedging/sentiment/buried risks), ESG data coverage (30%, emissions/diversity/safety breadth). Sector benchmarked with percentile. Rating: Exemplary/Strong/Adequate/Weak/Poor. Use when asked about ESG reporting quality, greenwashing risk, disclosure benchmarking, or how a company's ESG reporting compares to peers.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already establish the safe read-only/idempotent/closed-world profile, and the description adds real substance: the 40/30/30 component weighting, that disclosure transparency covers hedging/sentiment/buried risks, that results are sector-benchmarked with a percentile, and the five-tier rating scale. This output-characterizing context goes well beyond the annotations.

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 core purpose, then a compact breakdown of components and rating tiers, then usage triggers. Dense but every clause carries information; no filler sentences.

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

Completeness4/5

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

With a full output schema, complete parameter schema, and safety annotations already present, the description supplies the interpretive layer (composite weights, rating bands, sector percentile) an agent needs to explain or reason about results. Complete enough for a single-parameter read tool.

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

Parameters3/5

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

Schema description coverage is 100% and there is a single parameter, so the schema fully documents the ticker. The description only implies the NZX-company scope without adding format or syntax detail beyond the schema. Baseline 3 applies.

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?

States a specific verb and resource ('Get ESG disclosure quality benchmark for an NZX company') and details the resource's three-component composite structure. Very clear on what it does, but does not name or contrast any sibling (e.g. get_esg_disclosure_gap, get_disclosure_score, get_greenwashing_detection), so an agent must infer differentiation.

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?

'Use when asked about ESG reporting quality, greenwashing risk, disclosure benchmarking, or how a company's ESG reporting compares to peers' gives strong trigger conditions. However, it offers no when-not guidance or named alternatives, and overlaps thematically with siblings like get_greenwashing_detection and get_esg_disclosure_gap without routing between them.

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

get_esg_disclosure_gapA
Read-onlyIdempotent
Inspect

Get multi-framework ESG disclosure gap analysis for an NZX company. Compares against three international standards: TCFD (11 recommendations), ISSB/IFRS S2 (climate disclosure requirements), and NZ XRB Climate Standards (NZ CS 1-4). Returns per-framework scores, requirement-level gaps with evidence and recommendations, mandatory reporter status, and overall multi-framework readiness score. Use when the user asks about ESG gaps, disclosure readiness, TCFD compliance, ISSB alignment, or multi-framework comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "MEL", "CEN", "AIR")
frameworkNoFilter to a specific framework (default: all)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds analytical context (per-framework scoring, requirement-level gaps, mandatory reporter status), but since an output schema already exists, this mostly restates return shape rather than disclosing new behavioral traits such as cost, latency, or NZX-listing prerequisites.

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 purpose first, then framework scope, then a return-value enumeration, then usage triggers. Every sentence is relevant, though the return-value list is long and partially redundant against the output schema, which costs a little density.

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

Completeness4/5

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

With a rich output schema, full annotation coverage, and 100% parameter description coverage, the description only needs to carry purpose and routing — both are present. The one gap is that it does not explain how it relates to the ESG disclosure benchmark and climate gap siblings, which matters in a toolset this dense.

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

Parameters3/5

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

Schema description coverage is 100% with only two parameters, so the schema fully documents 'ticker' and the 'framework' enum. The description implies framework filtering through 'multi-framework comparison' but adds no syntax, default, or interpretation detail beyond what the schema already supplies.

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 gives a specific verb and resource ('multi-framework ESG disclosure gap analysis'), scopes it to an NZX company, and enumerates the three standards scored (TCFD, ISSB/IFRS S2, NZ XRB NZ CS 1-4). It is unambiguous about what the tool computes, but it never differentiates itself from close siblings such as get_esg_disclosure_benchmark or get_climate_gap_analysis, leaving the agent to infer boundaries.

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

Usage Guidelines4/5

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

The final sentence gives explicit triggering conditions: 'Use when the user asks about ESG gaps, disclosure readiness, TCFD compliance, ISSB alignment, or multi-framework comparison.' That is a clear usage context, but there is no when-not guidance and the adjacent benchmark/climate-gap siblings are never named as alternatives.

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

get_esg_target_credibilityA
Read-onlyIdempotent
Inspect

Assess the credibility of an NZX company's net zero and emissions reduction targets. Evaluates Scope 3 disclosure (materiality, trend, coverage), target credibility (7 factors: emissions trajectory, SBTi validation, timeline, baseline, multi-year data, intensity metrics, Scope 3 inclusion). Returns combined score (0-100), credibility rating (Strong/Moderate/Weak/No Target), sector materiality assessment, and key findings. Use when asked about climate targets, net zero credibility, Scope 3 emissions, or ESG target quality.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), and the description goes beyond them by disclosing the internal method (7 named factors, Scope 3 materiality/trend/coverage), the 0-100 score scale and the four rating bands. It does not mention data recency, coverage limits, or any cost/latency characteristics, so it falls short of a 5.

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 sentences, front-loaded with purpose, then method, then output and usage. The parenthetical factor list is dense but informative rather than filler. Slightly more enumeration than an agent strictly needs, which keeps it off a 5.

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?

An output schema exists and the description still briefly signals what comes back (score, rating, sector materiality, key findings), and together with purpose, method and usage triggers nothing an agent needs to call this correctly is missing. Complete for a single-parameter analytical tool.

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

Parameters3/5

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

Only one parameter, ticker, and schema coverage is 100% with an example set ('FPH', 'AIR', 'SPK') already in the schema. The description adds no new meaning about the parameter, so the baseline 3 applies.

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?

States a specific verb and resource ('Assess the credibility of an NZX company's net zero and emissions reduction targets') and enumerates the seven credibility factors, so the tool's scope is unambiguous. However, it never names or contrasts the adjacent siblings an agent could confuse it with, notably get_climate_gap_analysis, get_greenwashing_detection and get_esg_disclosure_benchmark.

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

Usage Guidelines4/5

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

The closing sentence gives concrete triggers: climate targets, net zero credibility, Scope 3 emissions, ESG target quality. That is a clear when-to-use signal, but there is no when-not-to-use and no routing to the neighbouring ESG/climate tools, so the agent must infer the boundary.

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

get_esg_xbrlA
Read-onlyIdempotent
Inspect

Get machine-readable NZ Climate Standards (NZ CS) tagged ESG/climate disclosure for an NZX company. Returns emissions (Scope 1/2/3), diversity metrics, safety data, and reporting framework compliance. Use when the user wants ESG data, climate disclosures, emissions, diversity stats, or sustainability data in structured format.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFiscal year (default: latest available)
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: it discloses the payload categories (Scope 1/2/3 emissions, diversity, safety, framework compliance) and that the output is machine-readable XBRL. It omits coverage limits (only NZ CS-tagged NZX reporters, not all NZX companies).

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?

Two sentences, front-loaded with the core purpose and format before the trigger list. The second sentence is a useful but slightly listy restatement of use cases; nothing is wasted, though it is not maximally tight.

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

Completeness4/5

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

With an output schema present, return-value detail need not be repeated, and annotations fully cover the safety profile; the description still adds the payload overview. Missing pieces are scope caveats (which companies actually file NZ CS XBRL, coverage years) and routing against the many adjacent ESG tools.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters (ticker, year with latest-available default) are documented in the schema. The description only implies the ticker via 'for an NZX company' and adds no year semantics, so it neither compensates nor regresses — the baseline 3 applies.

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?

States a specific verb (Get) and a precisely scoped resource: machine-readable NZ CS-tagged ESG/climate disclosure for an NZX company. The framework name (NZ Climate Standards) and format (XBRL) inherently separate it from generic siblings like get_esg_data or get_esg_disclosure_benchmark, but no sibling is named explicitly.

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

Usage Guidelines3/5

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

The trigger list ('ESG data, climate disclosures, emissions, diversity stats, or sustainability data in structured format') gives reasonable when-to-use guidance. However, it names no alternatives and gives no exclusions, which is a real gap given heavy sibling overlap with get_esg_data, get_esg_disclosure_benchmark, and get_greenwashing_detection.

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

get_executive_compensationA
Read-onlyIdempotent
Inspect

Get CEO and executive compensation for an NZX company. Shows base salary, STI, LTI, total compensation, shares granted. Use this for pay analysis and pay-for-performance questions.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter by role (e.g. "CEO", "CFO")
yearNoYear or range (e.g. "2024" or "2020-2024")
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds the content shape (which pay components appear), which is useful, but says nothing about coverage limits such as whether figures are absent when a company does not disclose, and an output schema already exists so return-value detail is partly redundant.

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

Conciseness5/5

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

Two sentences, no waste, resource scope front-loaded and the intended use placed second. Every clause earns its place with no filler.

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

Completeness4/5

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

For a read-only single-company lookup with a fully described 3-parameter schema and an output schema, the description supplies enough to call it correctly: entity scope (NZX), subject (executives) and purpose. Only the sibling-routing detail is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so ticker, role and year are already documented in the schema with format examples ('CEO', '2020-2024'). The description adds no filtering syntax, defaulting, or interaction semantics beyond that, so the baseline 3 applies.

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?

States a specific verb and resource ('Get CEO and executive compensation for an NZX company') and enumerates the fields returned (base salary, STI, LTI, total compensation, shares granted). It is distinguishable from generic peers, but it never names the close siblings get_compensation_benchmark or get_remuneration_benchmarks, so the agent must infer the boundary on its own.

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

Usage Guidelines3/5

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

'Use this for pay analysis and pay-for-performance questions' gives a clear positive context for invocation. However, there is no when-not guidance and no routing to the remuneration/compensation benchmark siblings, which is where an agent is most likely to choose the wrong tool.

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

get_factor_gradesB
Read-onlyIdempotent
Inspect

Get A-F factor grades for an NZX company across 6 dimensions: Value (PE/PB/EV vs sector), Growth (revenue/profit growth), Profitability (ROE/margins), Momentum (price returns), Dividends (yield/safety/payout), Governance (GRS score). Sector-relative percentile ranking. Composite grade included.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only methodological context (sector-relative percentile ranking, composite grade), not behavioral traits like caching, rate limits, or freshness.

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-loads the core purpose and packs the six dimensions into a compact parenthetical list, with two short supporting sentences. Dense but every clause carries information; no filler.

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

Completeness4/5

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 no explanation, and annotations carry the safety profile. The description supplies scope and grading methodology, leaving only sibling routing unaddressed, which is a minor gap for a single-parameter read tool.

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

Parameters3/5

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

With a single parameter at 100% schema description coverage, the schema already documents the ticker format with examples. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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?

States a specific verb and resource (A-F factor grades for an NZX company) and enumerates the six graded dimensions with their underlying metrics, so an agent knows exactly what it gets. It does not explicitly distinguish itself from nearby siblings such as get_alpha_score or get_factor_model, which keeps it short of a 5.

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

Usage Guidelines2/5

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

The description says what the tool returns but never says when to reach for it versus alternatives like get_alpha_score, get_factor_model, or get_governance_scorecard, nor does it state any prerequisites. No when-to-use or when-not guidance is present.

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

get_factor_modelA
Read-onlyIdempotent
Inspect

Get NZ Equity Factor Model — market-wide 6-factor scores (Value, Growth, Quality, Momentum, Dividends, Governance) for all NZX companies. Sector-relative percentile ranking (0-100) with A-F grades. Filter by sector, factor, grade. Use for factor-based stock selection and quantitative screening.

ParametersJSON Schema
NameRequiredDescriptionDefault
gradeNoFilter by composite grade (e.g. "A,B")
limitNoLimit results (default: all)
factorNoSort by: value, growth, profitability, momentum, dividends, governance
sectorNoFilter by sector (e.g. "Healthcare")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is fully covered. The description usefully adds the scoring semantics (sector-relative percentile 0-100, A-F grades, six factors), which goes beyond the annotations, but says nothing about data freshness, universe size, or pagination.

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 sentences, front-loaded with what the tool returns before the filters and the use case. No filler, though the factor enumeration in sentence one partly duplicates the schema's factor parameter.

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

Completeness4/5

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, and it does supply scope, filter dimensions and a use case. It stops short of clarifying how this differs from sibling factor tools, which is the one gap an agent would still hit.

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

Parameters3/5

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

Schema coverage is 100%, so the schema already documents all four parameters, and the description's 'Filter by sector, factor, grade' adds nothing beyond it. There is a minor inconsistency worth noting: the description lists 'Quality' as a factor while the schema's factor parameter uses 'profitability'.

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?

States a specific verb and resource ('Get NZ Equity Factor Model') and pins down scope precisely: market-wide, all NZX companies, six named factors, sector-relative percentile 0-100 with A-F grades. It does not, however, distinguish itself from near-siblings like get_factor_grades or get_alpha_factors, which an agent could easily confuse it with.

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

Usage Guidelines3/5

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

One sentence gives a use case ('factor-based stock selection and quantitative screening'), which implies when to reach for it. There is no when-not guidance and no named alternative among the many factor/alpha siblings, so the agent must infer routing on its own.

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

get_factor_validationA
Read-onlyIdempotent
Inspect

Get NZX factor validation results — 16 backtested financial factors (7 statistically significant, 9 moderate) plus 7 proprietary signal backtests. Returns Information Coefficients (IC), t-statistics, hit rates, direction (LONG/SHORT), and significance levels. Also includes proprietary signals: director resignation clusters, management credibility, earnings tone, insider clusters, auditor rotation, F-score/Z-score, dividend cut prediction. Use when asked about which factors work on the NZX, alpha signals, backtested strategies, or factor investing.

ParametersJSON Schema
NameRequiredDescriptionDefault
categoryNoFilter by category: Valuation, Growth, Profitability, Leverage, Cash Flow, Dividends (comma-separated)
significanceNoFilter by significance level: strong, moderate, or both (comma-separated)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the size and composition of the result set (16 factors, 7 significant, 9 moderate; 7 signals) and the nature of the values returned. It omits pagination, caching or freshness caveats, but there is an output schema for structure.

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 sentences, front-loaded with the resource and its scope, then content, then usage triggers — every sentence carries information. The middle proprietary-signal list is long but is the main differentiator, so it largely earns its space.

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

Completeness4/5

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 structure, and it still summarizes the returned metrics. Domain (NZX), scope, filters and use cases are all covered; a reader has everything needed to invoke it correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both filters (category, significance) are already documented in the schema with their allowed values. The description adds no parameter-level guidance such as default behaviour when category is omitted or how comma-separated values interact, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ("Get NZX factor validation results") and immediately scopes it with concrete content: 16 backtested factors with IC, t-statistics, hit rates, direction and significance, plus 7 proprietary signal backtests. The enumeration of validation outputs (statistical significance, coefficients) is enough to separate it from factor-grade/model siblings without the agent 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.

Usage Guidelines4/5

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

Ends with an explicit trigger list: "Use when asked about which factors work on the NZX, alpha signals, backtested strategies, or factor investing." That is clear context for selection, but it names no alternative tools (e.g. get_factor_grades, get_alpha_factors) and states no when-not-to-use condition.

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

get_fair_valueA
Read-onlyIdempotent
Inspect

Get estimated fair value for a company using 3 valuation models: DCF (discounted cash flow), Dividend Discount Model (Gordon Growth), and EV/EBITDA relative valuation. Returns composite fair value per share, price-to-fair-value ratio, individual model outputs, confidence level, and methodology notes. Users can optionally adjust discount rate and terminal growth rate. NOTE: This is an automated estimate using standard financial models, NOT a target price or investment recommendation.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g., "FPH", "AIR")
discount_rateNoDiscount rate / WACC (default 0.10 = 10%)
terminal_growthNoTerminal growth rate (default 0.025 = 2.5%)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare the safe read-only, idempotent profile, so the bar is lower; the description adds real value by disclosing the methodology, the composite/confidence framing, and an explicit caveat that this is an automated estimate and NOT a target price or investment recommendation. It does not contradict any annotation.

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 purpose and models, then outputs, then the optional tuning, ending with the critical disclaimer. Every sentence earns its place, though the output enumeration slightly duplicates the output schema.

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

Completeness4/5

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

For a three-param valuation tool with an output schema that defines the return shape, the description is nearly complete. The only omission is explicit guidance on when this estimate should be preferred over sibling signals or consensus tools.

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

Parameters3/5

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

Schema coverage is 100% and the schema itself documents the ticker format and the default values for discount rate and terminal growth. The description only reiterates that these two are optionally adjustable, adding no format or unit detail beyond the schema, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource (fair value for a company) and enumerates the three concrete valuation models used (DCF, Gordon Growth DDM, EV/EBITDA). It also names the outputs (composite fair value per share, P/FV ratio, model outputs, confidence). This is far more specific than sibling valuation-adjacent tools and can be told apart 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.

Usage Guidelines3/5

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

Usage is implied by the purpose (call it when you want an automated fair-value estimate) and the disclaimer hints at how to frame the result, but there is no explicit when-to-use, when-not-to-use, or reference to alternatives such as analyst consensus or factor models among the many siblings. It is adequate but leaves routing to inference.

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

get_financial_distressA
Read-onlyIdempotent
Inspect

Get financial distress early warning for a company. 8-factor model combining Altman Z-Score, Piotroski F-Score, Beneish M-Score, interest coverage, current ratio, revenue trend, cash flow health, and governance risk into a distress probability (0-100%). Risk levels: Healthy / Watch / Elevated / High / Critical. Based on patterns from historical NZ corporate failures (CBL, Wynyard, Pumpkin Patch). Use when asked about financial health, distress risk, bankruptcy probability, or going concern risk.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds real value beyond that: it discloses what the score is built from, the 0-100% scale, the five named risk bands, and that it is grounded in historical NZ failure patterns (CBL, Wynyard, Pumpkin Patch) — meaning an agent knows this is a pattern-based heuristic, not a live credit feed.

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 purpose, then the model, then the output bands, then the usage trigger — a logical order with no filler. The eight-factor enumeration is dense but each item is load-bearing for understanding what the score captures.

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?

An output schema exists, so return-structure detail is unnecessary, and the description nonetheless names the output scale and risk bands. Combined with the single well-documented parameter and the annotation-covered safety profile, nothing an agent needs to select or call this tool is missing.

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

Parameters3/5

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

Only one parameter and schema coverage is 100%, so the schema fully documents the NZX ticker argument. The description adds nothing about ticker format or validity beyond what is already in the schema, so the baseline of 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Get financial distress early warning for a company') and then enumerates the exact composition of the model (Z-Score, F-Score, M-Score, interest coverage, current ratio, revenue trend, cash flow, governance) plus the output scale. An agent can distinguish this from siblings like get_liquidity_score or get_governance_scorecard immediately.

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?

'Use when asked about financial health, distress risk, bankruptcy probability, or going concern risk' gives explicit trigger conditions. It does not, however, name or exclude adjacent siblings (e.g. check_insolvency_status, get_company_failures, get_earnings_quality), so the agent must infer boundaries.

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

get_financialsB
Read-onlyIdempotent
Inspect

Get financial statements for an NZX company. Includes income statement, balance sheet, cash flow, and financial ratios. Filter by statement type and year range.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear or range (e.g. "2024" or "2020-2024")
limitNoMax results per statement type
tickerYesNZX ticker symbol
statementNoStatement type: income, balance, cashflow, ratios, or comma-separated (default: all)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds what content is included and that filtering is possible, which is useful but not deeply behavioral.

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

Conciseness5/5

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

Two compact sentences with the action and scope front-loaded. No filler or redundant restatement of the tool name.

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

Completeness4/5

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

For a read-only, idempotent tool with a fully documented parameter schema and an output schema, the description adequately conveys what the tool returns and how it can be filtered. It lacks only explicit default/alternative guidance, which is not essential here.

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

Parameters3/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 3. The description echoes the statement type and year range parameters but adds no format, default, or constraint details beyond what the schema already provides.

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?

States a specific action (get financial statements) and resource (NZX company), enumerates the included statements and ratios, and mentions filtering. It doesn't explicitly distinguish itself from financial siblings like get_earnings or get_metrics, but the scope is still clear.

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

Usage Guidelines2/5

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

No guidance on when to use this tool instead of alternatives. With many financial sibling tools (get_earnings, get_metrics, get_revenue_segments), the agent receives no routing signal beyond the general description of financial statements.

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

get_financials_xbrlA
Read-onlyIdempotent
Inspect

Get machine-readable iXBRL financial statements for an NZX company. Returns IFRS taxonomy-tagged data (income statement, balance sheet, cash flows, ratios). Use when the user wants structured/machine-readable financial data, XBRL output, or data for programmatic consumption.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFiscal year (default: latest available)
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds useful context about the payload (IFRS taxonomy-tagged, statement-level content), though it says nothing about availability gaps or error behavior for unknown tickers/years.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the core capability and followed by return contents and selection criteria. No filler text.

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?

With an output schema present, the description need not explain return structure, yet it still summarizes content. Together with annotations and full schema coverage, an agent has everything needed to call this correctly.

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

Parameters3/5

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

Schema description coverage is 100% and both parameters are documented in the schema (ticker symbol, fiscal year with latest-available default). The description adds no parameter-level meaning beyond the schema, which is the expected baseline when the schema does the work.

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

Purpose5/5

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

States a specific verb and resource ('Get machine-readable iXBRL financial statements for an NZX company') and enumerates the returned statements (income statement, balance sheet, cash flows, ratios). This clearly separates it from siblings like get_financials and get_esg_xbrl.

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?

Gives clear usage conditions: structured/machine-readable data, XBRL output, or programmatic consumption. It does not, however, name the sibling (get_financials) that an agent should pick instead for human-readable financials, so the routing is implied rather than explicit.

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

get_first_time_chairsA
Read-onlyIdempotent
Inspect

Get NZX directors serving as board chair for the first time. Shows recent appointments, prior board experience, governance risk scores. Useful for governance transition analysis and board succession planning.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
sectorNoFilter by sector
recent_onlyNoOnly show chairs appointed in last 2 years

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world behavior, so the safety profile is covered. The description adds the content of the result set, which is mildly useful context, but says nothing about pagination, defaults, or filtering behavior. With annotations carrying the safety burden, a 3 is appropriate.

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 tight sentences with the core purpose front-loaded and no filler. Front-loading is good, though the second and third sentences could be tightened further.

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

Completeness4/5

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 explained, and the description covers purpose plus intended analytics use. It is largely complete for a filtered read-only query tool; only the relationship to sibling governance tools is left unstated.

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

Parameters3/5

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

Schema description coverage is 100%, so limit, sector, and recent_only are fully documented in the schema itself. The description adds no syntax or default detail beyond that, so baseline 3 applies.

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 names a specific verb and resource with a precise scope: NZX directors serving as board chair for the first time. It also enumerates the returned data (recent appointments, prior board experience, governance risk scores), making the tool's identity clear. It does not, however, explicitly distinguish itself from adjacent siblings like get_chair_network or get_succession_plan.

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

Usage Guidelines3/5

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

"Useful for governance transition analysis and board succession planning" gives implied usage context but no explicit when-to-use, when-not-to-use, or named alternative among the many governance siblings. The agent must infer selection on its own.

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

get_fund_votesA
Read-onlyIdempotent
Inspect

Get actual voting records from NZ fund managers (Harbour, Devon, Mint, Fisher, NZ Super) for a specific company. Shows how institutional investors voted on AGM resolutions — FOR, AGAINST, or ABSTAIN.

ParametersJSON Schema
NameRequiredDescriptionDefault
voteNoFilter by vote type: FOR, AGAINST, ABSTAIN
yearNoYear or range (e.g. "2024" or "2023-2025")
limitNoMax results (default 50)
tickerYesNZX ticker symbol (e.g. "CHI", "FBU", "AIR")
fund_managerNoFilter by fund manager name (e.g. "Harbour", "Devon")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds what the data actually contains (real institutional vote decisions, FOR/AGAINST/ABSTAIN) and the covered managers, but says nothing about freshness, coverage limits, or pagination beyond the schema's limit field.

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?

Two tight sentences, front-loaded with the core action and scope. The second sentence partially repeats what the first already conveys (that these are voting records), but it adds the resolution/vote-value framing at low cost.

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

Completeness4/5

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

With an output schema present, and annotations covering the safety profile, the description need not explain return format. It supplies the domain context (which managers, what a vote means) sufficient for correct invocation, missing only explicit sibling routing.

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

Parameters3/5

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

Schema description coverage is 100%, so all five parameters (vote, year, limit, ticker, fund_manager) are already documented at the schema level, making 3 the baseline. The description adds only the implied notion of a single company per call and the vote-value vocabulary, which the schema already carries.

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?

States a specific verb+resource (voting records from named NZ fund managers for a specific company) and even enumerates the vote values returned. It is clear and concrete, but does not distinguish itself from sibling tools such as get_vote_history, get_agm_resolutions, or get_proxy_report, so it stops short of a 5.

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

Usage Guidelines3/5

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

Usage is only implied: 'for a specific company' plus the required ticker signals the intended scope, but there is no explicit when-to-use, when-not-to-use, or routing to alternatives like get_vote_history or get_proxy_report. No prerequisites or exclusions are stated.

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

get_governance_deteriorationA
Read-onlyIdempotent
Inspect

Get governance deterioration signal for an NZX company. 5-factor model (0-100) detecting weakening governance: GRS score level, board stability (recent departures/appointments), independence erosion, audit & risk flags, and board meeting attendance. Returns risk level, factors, and recent board events. Use when assessing whether a company's governance is in decline.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already cover safety (readOnlyHint, idempotentHint, openWorldHint=false), so the bar is lower. The description adds real value by disclosing what the tool computes and returns (risk level, factors, recent board events), which goes beyond the annotation layer.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the resource and its scope, followed by the model components and return contents. No filler; every sentence adds discriminating information.

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

Completeness4/5

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

An output schema exists, so explaining return values in depth isn't required, and the description still names the key outputs. The only minor gap is that it says nothing about data freshness or the ticker scope, but for a single-param read tool this is essentially complete.

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

Parameters3/5

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

With a single parameter at 100% schema description coverage ('NZX ticker symbol (e.g. "FPH", "AIR", "SPK")'), the schema already carries full parameter meaning. The description adds nothing about ticker format or constraints, so the baseline 3 applies.

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

Purpose5/5

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

States a specific verb and resource ('Get governance deterioration signal') and then enumerates the concrete 5-factor model it computes (GRS level, board stability, independence erosion, audit & risk flags, attendance). The concept of a 'deterioration' signal is clearly distinct from the many sibling governance-score tools, so an agent can tell what this returns 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.

Usage Guidelines4/5

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

Explicitly states the use case: 'Use when assessing whether a company's governance is in decline.' This gives clear context, but it does not name alternatives or exclusions (e.g. get_governance_scores vs get_board_health_score) for when a static score is wanted rather than a decline signal.

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

get_governance_responsesA
Read-onlyIdempotent
Inspect

Get approved governance flag responses submitted by a company's IR team. Shows company context for governance flags (GRS components, remuneration compliance, proxy advisory, board effectiveness, activist vulnerability). Use when asked about a company's response to governance concerns, or when presenting governance flags to give the company's perspective.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior, so the safety profile is covered. The description adds genuinely new behavioral context: responses are IR-team-submitted and only *approved* ones are surfaced, which tells the agent the dataset is a curated subset rather than a raw feed.

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?

Two sentences, front-loaded with the verb and resource, then purpose context and usage triggers. The long parenthetical list of governance flag areas is informative but slightly heavy; otherwise there is no waste.

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?

With a single fully-documented parameter, complete annotations, and an output schema carrying return details, the description covers what, whose perspective, and when to call it. Nothing an agent needs to invoke this tool correctly is missing.

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

Parameters3/5

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

Only one parameter (ticker) and schema coverage is 100%, so the schema fully documents it. The description adds no ticker-specific semantics (e.g. exchange or case sensitivity), so the baseline of 3 applies.

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 gives a specific verb and resource ('Get approved governance flag responses submitted by a company's IR team') and clarifies the perspective is the company's own response rather than raw flag data. It enumerates the covered flag areas (GRS components, remuneration compliance, proxy advisory, board effectiveness, activist vulnerability), which helps distinguish it from the sibling flag tools, though it never names those siblings explicitly.

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?

Two concrete triggering scenarios are given: when asked about a company's response to governance concerns, and when presenting governance flags alongside company perspective. There is no when-not guidance or named alternative tool, so it stops short of the top band.

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

get_governance_scorecardB
Read-onlyIdempotent
Inspect

Get a per-company governance scorecard with RAG (red/amber/green) ratings across 15 policy areas aligned with NZSA governance policies and the NZX Corporate Governance Code. Covers: remuneration disclosure, CEO rem structure, board independence, audit independence, director tenure, board diversity, shareholder voting dissent, ESG, capital management, takeover vulnerability, management credibility, succession readiness, audit firm tenure, director share ownership. Returns overall score 0-100, individual policy assessments with scores and details. Use for governance due diligence, board briefings, or corporate governance benchmarking.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds the scoring scale (0-100), RAG semantics, and per-policy detail, but nothing about freshness, caching, or auth requirements, and output schema already documents the return shape.

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

Conciseness3/5

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

The purpose and rating scheme are front-loaded well, but the 15-item enumeration of policy areas consumes most of the text and largely duplicates what the returned assessments and output schema will show. It is informative yet bulkier than needed.

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

Completeness4/5

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

With an output schema present, the return values need not be restated, and the description still covers scope, rating method, and use cases adequately. The one real hole is the absence of differentiation from near-identical governance siblings.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage ('NZX ticker symbol'), so the schema fully documents it. The description adds only the 'per-company' framing, which is implicit in the schema example; baseline 3 applies.

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 states a specific verb+resource ('Get a per-company governance scorecard with RAG ratings') and enumerates the 15 policy areas covered, so the agent knows exactly what this tool produces. However, it never distinguishes itself from the very similarly named sibling get_governance_scores or check_governance_policy, leaving an ambiguity an agent must resolve elsewhere.

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

Usage Guidelines3/5

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

It names three usage contexts (governance due diligence, board briefings, benchmarking), which implies when to reach for it. But there are no exclusions and no routing among the many governance siblings (get_governance_scores, get_governance_deterioration, check_governance_policy), which is the primary selection risk here.

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

get_governance_scoresA
Read-onlyIdempotent
Inspect

Get Governance Risk Scores (GRS) for NZX companies. 0-100 scale across 6 components: exec remuneration, board structure, shareholder rights, board effectiveness, audit & risk, remuneration disclosure. Can filter by sector, rating, or score range.

ParametersJSON Schema
NameRequiredDescriptionDefault
sortNoSort field (e.g. "total_score")
limitNoMax results (default 50)
orderNo"asc" or "desc"
ratingNoFilter by rating: Excellent, Very Good, Good, Adequate, Poor, Very Poor
sectorNoFilter by sector
max_scoreNoMaximum GRS score (0-100)
min_scoreNoMinimum GRS score (0-100)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context by defining GRS as a 0-100 scale composed of six specific components and by indicating filtering capabilities. No contradiction with annotations exists.

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

Conciseness5/5

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

The description is two sentences with no filler. It front-loads the core purpose and then immediately provides the most useful selection details: scale, components, and filter categories. Every sentence adds value.

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?

With an output schema present, no required parameters, and all seven parameters documented in the schema, the description is sufficient for a correct call. It covers what the tool returns at a conceptual level and the filtering dimensions. Nothing necessary for selection or invocation appears missing.

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

Parameters3/5

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

Schema description coverage is 100%, so parameter meanings are already well documented. The description adds marginal value by explaining that sector, rating, and score range are filter options and by framing the 0-100 scale relevant to min_score/max_score. This meets the baseline but does not go beyond the schema in meaningful new detail.

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 uses a specific verb and resource: 'Get Governance Risk Scores (GRS) for NZX companies.' It also explains the score scale and its six components, which makes the tool's scope immediately clear. The resource is unique among the sibling tools (e.g., distinct from get_credit_ratings or get_esg_data), so an agent can select it 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.

Usage Guidelines3/5

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

The description implies usage context by naming the domain (governance risk for NZX firms) and listing available filters, but it does not explicitly state when to use this tool versus alternatives or when not to use it. There is no mention of exclusions or related sibling tools, so the guidance is adequate but not direct.

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

get_government_contractsA
Read-onlyIdempotent
Inspect

Get government contracts awarded to an NZX-listed company via GETS (Government Electronic Tenders Service). Shows contract history, agencies, values, and government revenue exposure. Useful for assessing government dependency, procurement relationships, and public sector revenue concentration.

ParametersJSON Schema
NameRequiredDescriptionDefault
fromNoFilter contracts awarded on or after this date (YYYY-MM-DD)
limitNoMax contracts to return (default 100, max 500)
tickerYesNZX ticker symbol (e.g. "SPK", "AIR", "FPH")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, openWorld=false, non-destructive), so the description only needs to add context. It does add the upstream data source (GETS), which tells the agent the contracts are government-procurement only, and clarifies that derived exposure metrics are returned. No auth, freshness, or coverage caveats (subsidiaries, historical depth) are given.

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 sentences, front-loaded with the action and data source, then contents, then use cases. No redundancy, though the final 'useful for' sentence is softer than the preceding factual sentences and carries the least weight.

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

Completeness4/5

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 not be explained, and all three parameters are covered by the schema. The description supplies purpose, provenance, and analytic framing. It stops short of noting coverage limits or whether results span subsidiaries, which would matter for interpreting government-dependency exposure.

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

Parameters3/5

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

Schema description coverage is 100%, so ticker, from, and limit are already fully documented in the schema. The description only implies ticker scope via 'NZX-listed company' and adds nothing about date-range or pagination behaviour, so it sits at the baseline.

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?

Specific verb (get), specific resource (government contracts awarded via GETS), and an explicit scope qualifier (NZX-listed company). It also previews the payload contents (contract history, agencies, values, government revenue exposure), which lets an agent distinguish it from neighbours like get_political_connections or get_agency_charity_funding.

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?

Names concrete use cases: assessing government dependency, procurement relationships, and public-sector revenue concentration. That gives clear context for when to reach for it, but it never states exclusions or names an alternative tool for adjacent questions (e.g. general revenue breakdown via get_revenue_segments).

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

get_greenwashing_detectionA
Read-onlyIdempotent
Inspect

Analyze ESG greenwashing risk for an NZX company. Compares sustainability claims in announcements against actual ESG metrics (emissions, diversity, safety). Returns narrative score, evidence score, alignment score, and gap rating. A high gap score suggests potential inconsistency between reported narrative and measured outcomes. Use when asked about ESG claims, sustainability narrative, greenwashing, or environmental reporting consistency.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. FPH)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

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 behavioral context by naming the comparison inputs (announcements vs emissions/diversity/safety metrics) and explaining how to read the result ('a high gap score suggests potential inconsistency').

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?

Purpose is front-loaded in the first sentence, with output detail and the usage trigger following in a logical order. Slightly redundant to enumerate return fields when an output schema already exists, but nothing is wasted.

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

Completeness4/5

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

For a single-parameter analytical tool with an output schema and full annotation coverage, the description supplies what, why, output interpretation and when to use it. Minor gap: it doesn't note any precondition such as requiring prior announcements/ESG data for the ticker to yield a meaningful result.

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

Parameters3/5

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

Only one parameter (ticker) with 100% schema description coverage, so the schema fully documents it. The description adds only the implicit constraint that the ticker is an NZX-listed company, which is the baseline expectation rather than a meaningful addition.

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

Purpose5/5

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

States a specific verb and resource ('Analyze ESG greenwashing risk for an NZX company') plus the mechanism ('compares sustainability claims in announcements against actual ESG metrics'). This clearly separates it from adjacent siblings such as get_esg_data, get_esg_disclosure_gap and get_climate_gap_analysis, which do not compare narrative against measured outcomes.

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?

Explicit trigger list: 'Use when asked about ESG claims, sustainability narrative, greenwashing, or environmental reporting consistency.' That gives a clear when-to-use context, but no when-not-to-use or named alternative for the overlapping ESG siblings.

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

get_hidden_connectionsA
Read-onlyIdempotent
Inspect

Get hidden connections for an NZX company — directors who share private company board seats with directors of other NZX issuers. These relationships are not visible from NZX filings alone, sourced from the NZ Companies Register. Returns connection pairs, shared companies, connection density, and most-connected director. Useful for identifying undisclosed relationships, potential conflicts of interest, and board network analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "SPK", "FPH")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower. The description still adds genuine context the annotations cannot: the data provenance ('sourced from the NZ Companies Register') and the key limitation that these relationships are 'not visible from NZX filings alone', which tells the agent why this tool exists rather than being derivable from filing data.

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 sentences, front-loaded with the core purpose, followed by provenance, output shape, and uses. Nothing is padded, though the enumeration of return fields ('connection pairs, shared companies, connection density, most-connected director') is partly redundant against the output schema.

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

Completeness4/5

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 not be described, and annotations carry the safety profile; the description supplies the domain framing and data source needed to interpret results. It stops just short of routing guidance to sibling network tools, which is the only real gap.

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

Parameters3/5

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

Schema description coverage is 100% for the single ticker parameter (format and examples are in the schema), so the description adds no parameter meaning beyond it. Baseline 3 applies when the schema does the heavy lifting.

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

Purpose5/5

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

States a specific verb and resource ('Get hidden connections for an NZX company') and then defines the resource precisely: directors sharing private-company board seats with directors of other NZX issuers. That definition alone separates it from near-neighbours like get_director_network, get_company_connections, and get_network_intelligence, since the criterion for an edge is explicit.

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

Usage Guidelines3/5

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

It offers use cases ('identifying undisclosed relationships, potential conflicts of interest, and board network analysis') but never says when to choose this over the numerous sibling network tools or when it is the wrong tool. Usage is implied by the scenario list rather than stated as routing guidance.

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

get_hiring_intelligenceA
Read-onlyIdempotent
Inspect

Get Seek NZ hiring intelligence for an NZX company. Shows active job listings, hiring velocity (30d/90d), role breakdown by category, salary ranges, location distribution, and sector comparison. Alternative data — hiring acceleration is a leading indicator for company growth or restructuring.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "SPK")
categoryNoFilter by job category (e.g. "Engineering", "Finance")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior3/5

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

Annotations already establish the read-only, idempotent, non-destructive profile, so the bar is lower. The description adds the 30d/90d velocity windows and the breadth of returned dimensions, which is useful context, but since an output schema exists it does not need to describe return contents and adds no auth/limit/edge-case behavior.

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 sentences, front-loaded with the verb and resource, then the output dimensions, then the strategic rationale. Dense but each sentence contributes; no obvious padding.

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

Completeness4/5

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

Given full parameter coverage, an output schema, and safety annotations, the description covers what the tool returns and why it matters. It is nearly sufficient for correct invocation, with the only gap being explicit alternatives to sibling tools.

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

Parameters3/5

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

Schema description coverage is 100% (both ticker and category documented in schema), so the baseline is 3. The mention of 'role breakdown by category' loosely maps to the optional category filter but adds no syntax or format detail beyond the schema.

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

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) plus resource (Seek NZ hiring intelligence) scoped to an NZX company, and enumerates the concrete outputs (listings, velocity, role breakdown, salary ranges, location, sector comparison). An agent can distinguish this from the many governance/financial siblings 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides a rationale ('hiring acceleration is a leading indicator for company growth or restructuring') that implies when it is useful, but names no alternatives and gives no explicit when/when-not conditions. Usage is inferred rather than prescribed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_insider_clustersA
Read-onlyIdempotent
Inspect

Detect insider conviction cluster patterns for an NZX company. Identifies coordinated insider trading: cluster buys (2+ directors buying within 14 days), cluster sells, sustained accumulation (single director buying repeatedly), and conviction reversals (direction switches). Returns alerts with severity and total value. Use when investigating whether insiders are acting with conviction.

ParametersJSON Schema
NameRequiredDescriptionDefault
monthsNoLookback period in months (default 6, max 24)
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=false), so the bar is lower, yet the description still adds real substance: the detection thresholds (2+ directors within 14 days), the four pattern categories, and the alert output shape with severity and total value. It does not disclose latency, null/no-signal behavior, or limits on how many alerts return.

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?

Four compact sentences, front-loaded with the action and resource, then the pattern taxonomy, then the return shape, then usage. Slight redundancy in repeating 'insider'/'conviction' across sentences, but nothing is padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 re-explained, and the annotations carry the safety profile. With 100% schema coverage and only two parameters, the description supplies enough for correct invocation; the only real gap is routing guidance relative to the insider-trade siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – ticker format and the months default (6) and max (24) are all documented in the schema. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

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?

States a specific verb and resource ('Detect insider conviction cluster patterns for an NZX company') and enumerates exactly what it detects: cluster buys, cluster sells, sustained accumulation, and conviction reversals. That is far more precise than the raw-trade siblings (get_insider_trades, get_insider_ownership), though it never names an alternative explicitly, so it stops short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing sentence 'Use when investigating whether insiders are acting with conviction' gives a use context, but it largely restates the tool's own purpose. There is no guidance on when NOT to use it and no routing to get_insider_trades, get_insider_ownership, or subscribe_insider_alerts, which is what an agent selecting among ~200 siblings actually needs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_insider_ownershipA
Read-onlyIdempotent
Inspect

Get insider/director ownership data for an NZX company. Returns total director shareholdings, directors with shares vs board size, net buying/selling (12m), individual director holdings with share counts, and recent insider trades. Use when asked about insider ownership, skin in the game, director holdings, founder holdings, or insider trading activity for a specific company.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, closed-world, non-destructive behavior, lowering the disclosure burden. The description adds scope (NZX company) and a 12-month window for net buying/selling, but omits auth, freshness, coverage limits, and pagination behavior.

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?

Two sentences, front-loaded with the tool's purpose and return contents, followed by trigger examples. The return-category list is somewhat detailed for a tool with an output schema, but it aids selection rather than bloating the text.

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 single-parameter read tool with rich annotations, 100% schema coverage, and an output schema, the description supplies enough purpose, scope, and trigger context to invoke it correctly. Nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and ticker is fully documented as an NZX ticker symbol with examples. The description only implies 'for an NZX company' and adds no syntax or validation semantics beyond the schema.

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?

States a specific verb ('Get') and resource ('insider/director ownership data') for NZX companies. It spells out the return categories, but does not explicitly distinguish itself from sibling tools such as get_insider_trades or get_shareholders.

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?

Provides explicit trigger phrases ('Use when asked about insider ownership, skin in the game, director holdings, founder holdings, or insider trading activity') for a specific company. It does not name alternative tools or when-not-to-use conditions, so it stops 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_insider_tradesA
Read-onlyIdempotent
Inspect

Get director share transactions (insider trades) for NZX companies. Shows who is buying/selling, amounts, and dates.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoRecent trades within N days
typeNoTransaction type: buy, sell, or all
limitNoMax results (default 50)
tickerNoFilter by company ticker

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds no additional behavioral traits such as default time windows, date semantics, or result ordering. There is no contradiction between the description and annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence that front-loads the action and resource. Every phrase contributes meaning, with no filler or repetition of annotation data.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the read-only annotation, fully described optional parameters, and the presence of an output schema, the description is sufficient for an agent to call this tool correctly. It could have added a note about default behavior when 'days' is omitted, but nothing critical is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented in the schema. The description mentions output fields like amounts and dates but does not add parameter-level guidance beyond what the schema provides. Baseline 3 is appropriate.

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 names a specific verb ('Get'), a specific resource ('director share transactions (insider trades)'), and a market scope ('NZX companies'). It also conveys the key data dimensions (who is buying/selling, amounts, dates), which clearly separates it from siblings like get_board_changes or get_directors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use the tool by describing what it returns, but it gives no explicit usage context, exclusions, or contrast with related siblings such as get_substantial_holders. It is clear enough for a straightforward read-only query, but leaves selection reasoning to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_interest_registerA
Read-onlyIdempotent
Inspect

Get the automated Companies Act s189 interest register for an NZX company. Compiles each director's interests: other NZX board seats, charity trustee roles, public sector appointments, substantial shareholdings, recent insider trades, and professional directorships. Cross-references data from all four NZXplorer platforms. Use when asked about director interests, conflicts of interest, related party positions, or board independence.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. FPH)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent and non-destructive, so the safety profile is covered. The description adds genuine behavioral context: that the register is auto-compiled and cross-references all four NZXplorer platforms, indicating an aggregated derived view rather than raw filings.

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 sentences, front-loaded with the verb and resource before the detail list and usage triggers. The data-source enumeration is long but each item is informative rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explained, and the description covers what is produced, its provenance, and when to reach for it. Minor residual gap is the absence of routing guidance against the many adjacent director tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'ticker' parameter is documented with a format example (e.g. FPH). The description adds no parameter semantics beyond that, so the baseline 3 applies.

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?

Specific verb ('Get') plus a precisely named resource ('Companies Act s189 interest register for an NZX company'), followed by an enumeration of what it compiles. An agent can distinguish this legal-register view from siblings like get_director_conflicts or get_company_directorships without opening any schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives clear triggering contexts: director interests, conflicts of interest, related party positions, board independence. It stops short of naming alternatives or when-not-to-use, which matters given the dense cluster of overlapping director/conflict tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_iod_designationsA
Read-onlyIdempotent
Inspect

Get Institute of Directors (IoD) designated directors on NZX boards. Shows CFInstD (Chartered Fellow), CMInstD (Chartered Member), CDir (Chartered Director), and MInstD (Member) designations with current board seats. Can filter by designation level, ticker, or director name.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoSearch by director name
limitNoMax results (default 50)
tickerNoFilter by NZX ticker to see IoD directors at a specific company
designationNoFilter by IoD designation: "CFInstD", "CMInstD", "CDir", "MInstD"

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds the useful scope fact that results carry current board seats, but says nothing about pagination behavior beyond the limit param or how current the data is.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences: purpose first, then the acronym glossary that makes the domain readable, then the filter surface. No filler and everything is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 all four params are documented. The description covers what the tool returns and how to narrow it; only the relationship to the many adjacent director/board tools is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters are already documented in the schema. The description restates the filter axes (designation, ticker, name) and spells out the valid designation tokens, adding little beyond what the schema's designation enum list already supplies.

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 names a specific verb and resource (get IoD-designated directors on NZX boards) and defines the four designation types (CFInstD, CMInstD, CDir, MInstD), which makes the scope concrete. It does not explicitly contrast itself with close siblings like get_board_credentials, get_directors, or get_director_detail, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It states the available filter dimensions (designation level, ticker, director name), which implies how to narrow results, but gives no explicit when-to-use vs. when-to-use-an-alternative guidance. Nothing tells the agent why it would pick this over get_board_credentials or get_prohibited_directors.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ir_briefingA
Read-onlyIdempotent
Inspect

Get a per-company IR briefing with change detection. Returns current data snapshot, prior period snapshot, and change flags showing what has changed (governance score, board size, chair, CEO, sentiment, independence, ownership concentration, insider direction, auditor). Use when asked what changed for a company, company intelligence briefing, or IR briefing.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the two-snapshot-plus-change-flags return structure, but that return shape is already captured by the output schema, and it says nothing about auth requirements, rate limits, or data freshness windows.

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?

Two sentences, front-loaded with the core action and ending with the usage triggers, so an agent can stop reading early. The long parenthetical enumeration of change dimensions is somewhat redundant with the output schema's change flags, but it is not padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter read-only tool with annotations and an output schema, the definition covers purpose, return shape, and usage triggers adequately. The remaining gap is disambiguation from the many change/briefing siblings in this toolset, which the description does not address.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single required parameter with 100% schema description coverage ("NZX ticker symbol (e.g. 'AIR')"). The description adds no parameter meaning beyond the schema, which is the expected baseline of 3 when the schema already documents the input.

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?

Specific verb+resource ("Get a per-company IR briefing") with the change-detection behavior stated up front. It enumerates the exact change dimensions (governance score, board size, chair, CEO, sentiment, independence, ownership concentration, insider direction, auditor), so the agent knows the scope. However, it never distinguishes itself from closely overlapping siblings such as get_company_changes, get_board_changes, get_ir_dashboard, or get_ir_quality.

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?

Explicit trigger conditions are given: "Use when asked what changed for a company, company intelligence briefing, or IR briefing." This is clear positive routing guidance. It offers no exclusions or named alternatives, which matters here because get_company_changes and get_ir_dashboard plausibly serve the same request.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ir_dashboardA
Read-onlyIdempotent
Inspect

Get a comprehensive Investor Relations dashboard for an NZX company. Combines 9 data sources: IR Quality Score, announcement sentiment monitoring (6mo trend), substantial shareholder composition (HHI concentration), insider trading activity (12mo with cluster detection), governance risk scores, earnings trajectory (revenue CAGR, profit trend), disclosure frequency analysis, and sector peer benchmarking. Built for IR teams, institutional investors, and analysts.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds real behavioral context the annotations do not: that the response aggregates 9 sources and embeds specific lookback windows (6mo sentiment trend, 12mo insider activity with cluster detection, revenue CAGR). It does not flag cost/latency of aggregating 9 sources, which is the main remaining gap.

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 core purpose in the first sentence, then the component list. The 9-source enumeration is long but each item is informative and earns its place; no filler or tautology.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return formatting needn't be explained, and annotations cover the safety profile. The description supplies the composite-source scope and time windows, which is what an agent needs to choose this over the many single-metric IR siblings; only explicit sibling routing is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (ticker) with 100% schema description coverage, so the schema already carries the semantics including NZX examples. The description's phrase 'for an NZX company' marginally reinforces the exchange scope but adds no format or syntax detail beyond the schema.

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?

States a specific verb and resource ('Get a comprehensive Investor Relations dashboard for an NZX company') and enumerates the 9 component data sources, which tells the agent this is a composite view rather than a single metric. It does not name the overlapping siblings it supersedes (e.g. get_ir_quality, get_announcement_sentiment, get_substantial_holders), so sibling differentiation is implied rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an audience ('Built for IR teams, institutional investors, and analysts') rather than a when-to-use condition. The composite nature implies it is the right choice when a broad IR overview is wanted instead of individual data points, but no alternative is named and no when-not guidance is given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ir_qualityA
Read-onlyIdempotent
Inspect

Get IR Quality Score (IRQS) for an NZX company. Measures disclosure quality across 10 weighted dimensions: 5 core (51%): timeliness (filing speed vs NZX deadlines), completeness (data points disclosed in earnings, annual 70%/interim 30% weighting), readability (hedging/language clarity), frequency (announcements, presentations, AGMs), governance transparency (GRS + skills + ESG). 5 supplementary (49%): website quality, presentation quality, analyst coverage, guidance accuracy, segment reporting depth. 0-100 composite score grounded in OECD, CFA, S&P, NIRI, AIRA frameworks. 131 issuers scored. Ratings: Excellent (75+), Good (60-74), Adequate (40-59), Poor (20-39), Very Poor (<20). Includes trajectory (improving/stable/declining). v2.0 engine.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover readOnlyHint, idempotentHint, destructiveHint, and openWorldHint, so the safety profile is clear. The description adds substantial methodological context beyond that: the 10 weighted dimensions, 51/49 core/supplementary split, 0-100 score, rating bands, trajectory, 131-issuer coverage, and framework grounding. It still omits operational details like update cadence or data latency, so it is strong but not exhaustive.

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-loads the purpose and then packs the scoring model, rating bands, and trajectory into one dense paragraph. Most clauses are informative, though boilerplate such as 'v2.0 engine' and the framework name list could be trimmed without harming invocation.

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?

With an output schema present, the description does not need to explain return values, and it already covers what the score means, how it is composed, the range, ratings, and trajectory. Given the tool's complexity and the complete parameter schema, the definition is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the only parameter, ticker, is documented in the schema with an NZX symbol example. The description adds no parameter-level meaning, and for a single-parameter tool with full schema coverage the baseline of 3 applies.

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?

States a specific verb and resource, 'Get IR Quality Score (IRQS) for an NZX company', and details its scope as a 0-100 composite across 10 weighted dimensions. It does not explicitly name or distinguish among the many IR siblings such as get_ir_dashboard or get_ir_scorecard_compare, so it stops short of full sibling differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Offers no when-to-use or when-not-to-use guidance and does not mention any alternative tool. An agent must infer that it is appropriate whenever an IR quality score for a single NZX company is needed, but nothing routes it away from related IR tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_ir_scorecard_compareA
Read-onlyIdempotent
Inspect

Compare 2-5 NZX companies side-by-side across 7 IR quality dimensions: timeliness (filing speed), completeness (data point coverage), readability (language clarity), frequency (announcement cadence), governance (transparency scores), analyst coverage (broker analyst count), and IR accessibility (contact quality). Returns normalized 0-100 scores per dimension for each company. Ideal for competitive benchmarking.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickersYesComma-separated NZX ticker symbols, 2-5 companies (e.g. "FPH,CEN,SKL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, non-destructive, non-open-world), so the burden is lower. The description adds that scores are normalized to 0-100 per dimension and enumerates the dimensions, which is useful, but return detail is largely carried by the existing output schema.

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?

Two sentences with no filler; the comparison scope and the seven dimensions are front-loaded before the return-value note. The dimension parentheticals are dense but each earns its place by defining what is measured.

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?

With a rich output schema and full annotation coverage, the description only needs to establish purpose, scope, and what dimensions are scored -- all of which it does. Nothing an agent needs to invoke this correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and there is a single parameter, so the schema already documents tickers as comma-separated NZX symbols with the 2-5 constraint. The description repeats the 2-5 company bound but adds no new syntax or format detail beyond the schema.

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 gives a specific verb (compare), a clear resource (IR scorecard), and scope (2-5 NZX companies), then enumerates the seven dimensions measured. It is distinguishable from single-company siblings like get_ir_quality by its explicit side-by-side framing, though it never names an alternative tool to route against.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Ideal for competitive benchmarking" implies a use case, so usage is suggested rather than stated. There is no explicit when-not guidance and no named alternative (e.g., get_ir_quality for a single company) to help an agent choose among the many sibling IR/governance tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_keyword_alertsA
Read-onlyIdempotent
Inspect

Get the authenticated user's keyword alerts and recent matches. Returns alert configurations and announcements that matched their keywords. Use when asked about their alerts, keyword notifications, or what announcements matched their keywords.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_matchesNoInclude recent alert matches (default false)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds the useful scope fact that results are limited to the authenticated user, but says nothing about pagination, match recency window, or rate limits.

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 core action and appropriately short at three sentences. The second sentence partly restates the first ('keyword alerts and recent matches' vs. 'alert configurations and announcements that matched their keywords'), which is mild redundancy rather than a structural flaw.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value detail is not the description's burden, and annotations cover the safety profile. With one optional boolean parameter, the description supplies enough context (who the data belongs to, what triggers use) for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single boolean parameter include_matches is documented in-schema with its default. The description's mention of 'recent matches' implies the flag but adds no syntax or behavioral detail beyond the schema, so the baseline of 3 applies.

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?

States a specific verb and resource ('Get the authenticated user's keyword alerts and recent matches') and scopes it to the calling user's own data. It does not distinguish itself from nearby siblings such as get_announcement_alerts or list_alert_subscriptions, whose subject matter overlaps with the 'alert configurations' it claims to return.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The third sentence gives explicit trigger conditions: 'Use when asked about their alerts, keyword notifications, or what announcements matched their keywords.' That is clear routing context, though it offers no exclusions or named alternatives when a sibling would be the better choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_kiwisaver_holdingsA
Read-onlyIdempotent
Inspect

Get KiwiSaver fund holdings in an NZX company. Shows which KiwiSaver funds hold shares, their market value, and percentage of fund. Data covers Dec 2018 - Sep 2022.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoSpecific quarter date (e.g. "2022-09-30")
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: it specifies the output content (funds, market value, percentage) and the data coverage window (Dec 2018 - Sep 2022), which is a meaningful limitation. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two tight sentences with no fluff. It front-loads the core purpose, then adds output details and the date range. Every sentence earns its place.

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 low-complexity tool with a full input schema, strong annotations, and an output schema, the description is complete. It covers what the tool returns and an important data availability limitation. Nothing critical is missing for an agent to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/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 3. The description does not add much beyond the schema for the ticker and date parameters, but it does clarify the overall data scope and time coverage. Since the schema already documents each parameter, this is adequate.

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 clearly states a specific action ('Get KiwiSaver fund holdings') and resource ('an NZX company'), then specifies exactly what is shown: funds, market value, and percentage. This distinguishes it from sibling tools like get_shareholders or get_substantial_holders without needing to open schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives. It does not mention exclusions or conditions, such as when to prefer get_shareholders or get_substantial_holders. The date coverage is useful context but not usage direction.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_knowledge_graphA
Read-onlyIdempotent
Inspect

NZX director/company interlock knowledge graph. With no arguments returns the network summary: Louvain community clusters, power broker rankings (degree × betweenness centrality) and network statistics (density, avg/max degree, community count). With ticker or slug returns the neighbourhood around that company or director (nodes + board-seat and shared-director edges, depth 1-2). Use when asked about board interlocks, director networks, power brokers, most connected directors, governance communities, or who a company's board is connected to.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugNoCentre the graph on this director (e.g. "joan-withers")
depthNoHops from the centre, 1 or 2 (default 1)
tickerNoCentre the graph on this NZX company (e.g. "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

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 behavioral context beyond that: the no-argument mode returns a global summary, the ticker/slug mode returns a localised neighbourhood with depth 1-2, and it names the edge types (board-seat and shared-director). It does not note any cost or rate-limit behaviour.

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 sentences, front-loaded with the resource identity followed by the two modes and the usage triggers. Dense but every clause carries information; only minor trimming would be possible.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 not be detailed, and the description nonetheless sketches them. It covers both modes and usage triggers. The one gap is ambiguity when both ticker and slug are supplied, but for a 3-param read-only tool this is largely complete.

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 100%, so the baseline is 3, but the description earns more by explaining the mode switch: absent parameters yield the global summary, while ticker or slug recentres the graph on a company or director. That conditional relationship between parameters and output is meaningfully beyond the per-field schema text.

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 gives a specific verb and resource ('NZX director/company interlock knowledge graph') and enumerates the concrete outputs: Louvain community clusters, power broker rankings, and network statistics. It distinguishes its two operating modes clearly, but never differentiates itself from close siblings like get_director_network, get_network_intelligence, or get_entity_graph, which an agent must disambiguate.

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 provides an explicit when-to-use list ('board interlocks, director networks, power brokers, most connected directors, governance communities, or who a company's board is connected to'). There is no when-not-to-use guidance or named alternative, but the positive triggers are concrete and task-oriented.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_knowledge_graph_shortest_pathA
Read-onlyIdempotent
Inspect

Find the shortest connection path between any two NZX directors via shared board seats. Uses bidirectional BFS through the director/company interlock graph. Returns the full path (directors and companies traversed) and the degrees of separation. Use when asked how two directors are connected, degrees of separation, or the link between two people in the NZX network.

ParametersJSON Schema
NameRequiredDescriptionDefault
toYesSlug of the target director (e.g. "mark-cairns")
fromYesSlug of the source director (e.g. "joan-withers")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world). The description adds real value beyond them by disclosing the algorithm (bidirectional BFS) and the deterministic shape of the result (full path plus degrees of separation), which explains why the operation is idempotent. It omits edge-case behavior (e.g., what happens when no path exists).

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 sentences, front-loaded with the purpose, then mechanism/return, then usage triggers. Efficient overall, though 'degrees of separation' appears in both the return statement and the usage triggers, a minor redundancy.

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?

With full schema coverage, complete annotations, and an output schema covering the return shape, the description supplies everything an agent needs: what it computes, how, and when to reach for it. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with both 'from' and 'to' documented as director slugs including examples. The description only says 'any two directors' and adds no format, casing, or validation detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (find shortest path), a precise resource (two NZX directors connected via shared board seats), and the mechanism (bidirectional BFS over the director/company interlock graph). This clearly separates it from adjacent siblings such as get_director_network or get_company_connections, which cover a single entity's connections rather than a pairwise path.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives concrete invocation triggers: 'how two directors are connected', 'degrees of separation', and 'the link between two people in the NZX network'. It does not name a specific alternative tool or state when not to use it, so it stops short of the top band.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_kyc_screeningA
Read-onlyIdempotent
Inspect

Run automated KYC/AML screening on an NZX director. Cross-references 12 risk databases: regulatory actions (FMA/ComCom), court cases, professional disciplinary, prohibited directors register, MBIE insolvency register (bankruptcies/NAPs), Companies Office directorship history (failed companies), ICIJ offshore leaks, OFAC/UN/EU sanctions lists, adverse media (NZ news), political donors, MP interest entities, and company failure summary. Returns risk score (0-100), risk rating (Low/Medium/High/Critical), sanctions match status, PEP status, adverse media mentions, detailed per-database screening hits, and risk breakdown by 8 categories. Active bankruptcy or confirmed sanctions match = auto-Critical. Corporate tier only.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesDirector slug (e.g. "joan-withers"). Use get_directors with search param to find the slug first.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Goes well beyond the annotations (readOnly/idempotent/non-destructive/openWorld=false) by disclosing the 12 data sources screened, the auto-escalation rule ('Active bankruptcy or confirmed sanctions match = auto-Critical'), and the entitlement tier required. This is exactly the behavioral context an agent needs to interpret results.

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?

Purpose is front-loaded in a short first sentence, followed by a dense but informative enumeration of screened sources. It loses a little to redundancy: the return-value list (risk score, rating, match status) is already covered by the existing output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter, read-only tool with full schema coverage, an output schema, and rich annotations, the description is nearly complete: it establishes scope, data sources, escalation logic and tier restriction. The only gap is routing guidance versus sibling director-risk tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single 'slug' parameter is fully documented in the schema with an example and a pointer to get_directors. The description adds no parameter-level meaning beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource+scope ('Run automated KYC/AML screening on an NZX director') and enumerates the exact risk databases and outputs, making it clearly distinguishable from near-siblings like get_director_risk, get_director_due_diligence and get_prohibited_directors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It supplies one hard usage constraint ('Corporate tier only') and the schema points to get_directors for obtaining a slug, but there is no explicit when-to-use/when-not guidance relative to the many overlapping director-risk siblings. Usage is only implied by the breadth of the screening.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_liquidity_scoreA
Read-onlyIdempotent
Inspect

Get Kyle's Lambda liquidity score for an NZX company. Measures price impact per unit of volume using Kyle (1985) regression model. Higher lambda = more illiquid / more informed trading. Includes liquidity rating (A-E), average daily volume, average daily traded value, and volume trend. Use when user asks about liquidity, trading volume, price impact, market depth, or how tradeable a stock is.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description adds genuinely useful context: the Kyle (1985) regression basis, the direction of interpretation (higher lambda = more illiquid/informed trading), and the output fields including an A-E rating.

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 core purpose, then model, interpretation, outputs, and usage triggers in a logical order. Four dense sentences with no filler, though the output-field enumeration borders on what the output schema already conveys.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, return values need not be re-explained; the description still summarizes them usefully and supplies the interpretive direction an agent needs to explain results. Only the lack of alternatives/prerequisites keeps it from being fully complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single well-documented ticker parameter (including NZX examples), so the schema carries the parameter semantics. The description adds no parameter-level detail beyond this, making baseline 3 correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and metric (Kyle's Lambda liquidity score) for a specific resource (NZX company), and defines what the metric means. An agent can distinguish it from volume-related siblings like get_volume_anomalies or get_technical_signals.

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?

Explicitly lists trigger concepts: liquidity, trading volume, price impact, market depth, tradeable-ness. Clear positive guidance, but names no alternative tool or exclusion (e.g. when to prefer get_technical_signals or get_stock_prices).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_litigation_historyA
Read-onlyIdempotent
Inspect

Get court litigation history for an NZX company. Returns cases from High Court, Court of Appeal, and Supreme Court where the company or its directors are parties. Includes case type, outcome, dates, and damages. Use when asked about lawsuits, court cases, legal proceedings, or litigation risk for a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds genuinely useful context beyond them: which courts are covered, that directors as well as the company count as parties, and which fields are returned (case type, outcome, dates, damages). It does not discuss pagination or coverage limits, keeping it at 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences, front-loaded with purpose, then scope, then usage triggers. The synonym list in the final sentence earns its place by improving retrieval matching for varied phrasings; nothing is redundant.

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 one-parameter, read-only lookup with an output schema and rich annotations, the description supplies everything an agent needs: the data source (NZ courts), the entity scope (NZX company and directors), and the returned fields. Return-format details are correctly left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so the schema already documents the NZX ticker format and examples. The description adds no additional parameter meaning. Baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get court litigation history'), then narrows the scope precisely: NZX companies, the three named courts, and the party relationship (company or its directors). An agent can distinguish this from siblings like get_regulatory_actions or get_prohibited_directors because the resource is explicitly 'court litigation' rather than regulatory or directorship data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives clear trigger conditions ('lawsuits, court cases, legal proceedings, or litigation risk for a company'), which is solid routing guidance. It stops short of naming alternatives or stating when-not-to-use (e.g. vs regulatory actions or insolvency checks), so it does not reach the 5 level.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_exposureA
Read-onlyIdempotent
Inspect

Get a company's macro sensitivity profile: OCR sensitivity (high/moderate/low based on debt and interest cover), FX exposure (based on revenue segments), cyclicality, and composite macro risk score (0-100). Explains how macro changes affect this specific company.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "RYM", "FPH", "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

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 goes beyond that by disclosing methodology and output semantics: OCR bands are derived from debt and interest cover, FX exposure from revenue segments, and the composite score is on a 0-100 scale. It stops short of noting data freshness or the drivers of the score bands, which would push it higher.

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?

Two dense sentences that front-load what the tool returns and then explain the payoff. No filler or repetition of the title, though the enumerated components make it slightly list-like rather than flowing prose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so there is no obligation to explain return values, and the description still names the key fields and their scales (high/moderate/low bands, 0-100 score). For a single-ticker read-only tool this is essentially complete; only sourcing or refresh caveats are absent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and schema description coverage is 100% with a ticker format hint and NZX examples ("RYM", "FPH", "AIR"). The description adds no further meaning about the ticker argument, so with full schema coverage this sits at the baseline 3.

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?

Specific verb (get) plus a clearly scoped resource (a company's macro sensitivity profile), and it enumerates the exact outputs: OCR sensitivity, FX exposure, cyclicality, and a 0-100 composite macro risk score. It implicitly separates itself from market-level siblings like get_macro_regime and get_macro_history by stressing 'this specific company', but it never names those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied ('this specific company', sensitivity to macro changes) but there is no explicit when-to-use guidance, no when-not, and no routing to the closely related get_macro_regime / get_macro_history / get_offshore_exposure siblings. An agent must infer the company-level vs market-level distinction on its own.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_historyB
Read-onlyIdempotent
Inspect

Get historical time series for a macro indicator. Codes: RBNZ_OCR, NZ_GDP_QOQ, NZ_CPI_YOY, NZ_UNEMPLOYMENT, NZ_HOUSE_PRICE_YOY, US_FED_FUNDS, UST_10Y, VIX, NZD_USD, NZD_AUD, NZD_TWI. Or filter by category: growth, inflation, employment, housing, global, fx, monetary_policy.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date (YYYY-MM-DD)
codeNoIndicator code (e.g. "RBNZ_OCR", "NZ_GDP_QOQ")
fromNoStart date (YYYY-MM-DD)
categoryNoCategory filter: growth, inflation, employment, housing, global, fx, monetary_policy

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the description need not restate that. It adds domain context by enumerating the indicators available for retrieval, but says nothing about series frequency (daily/monthly/quarterly), how much history is returned by default, or what happens when no filter is supplied.

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?

Two tight sentences with the core purpose front-loaded before the enumerated values. The long code list is necessary content rather than filler, though it slightly dominates the description at the expense of guidance.

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?

An output schema exists, so return-value explanation is not owed. However, all four parameters are optional and the description never states the default behavior when no code, category, or date range is provided, nor the series frequency — a real gap for a time-series tool.

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 100% and the four parameters are documented, which sets a baseline of 3. The description goes beyond the schema by listing the complete set of valid codes and categories, whereas the schema only offers examples ('e.g. "RBNZ_OCR"') and defines no enums. That materially improves correct invocation.

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 first sentence states a specific verb and resource: 'Get historical time series for a macro indicator.' An agent can distinguish this retrieval tool from siblings such as get_macro_regime or get_macro_exposure. It stops short of naming those siblings explicitly, so no direct differentiation is given.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description supplies the valid values but never says when to reach for this tool versus alternatives (e.g. get_macro_regime for regime state, get_macro_exposure for portfolio exposure). The phrase 'Or filter by category' hints that code and category are alternative selectors but does not state precedence or whether they can be combined.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_macro_regimeA
Read-onlyIdempotent
Inspect

Get the current NZ macroeconomic regime: RBNZ OCR rate and cycle direction, GDP growth, CPI inflation, unemployment rate, NZD exchange rates, US Fed Funds, US 10Y Treasury. Use this to provide macro context for investment analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the list of covered indicators, which is meaningful behavioral scope, but since an output schema exists it does not add return-format, freshness, or staleness detail that the structured fields lack.

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?

Two sentences, purpose front-loaded, zero filler. The field enumeration is somewhat long and overlaps with the output schema, but it is scannable and justifies itself as a scope statement rather than padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only, idempotent lookup with a full annotation set and an output schema, the description supplies what an agent needs to select it. Only the relationship to get_macro_history/get_macro_exposure is left implicit.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate; schema coverage is 100% and the object is empty. Baseline of 4 applies — no parameter semantics are needed or missing.

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?

Specific verb+resource ('Get the current NZ macroeconomic regime') followed by an explicit enumeration of what the regime covers (OCR and cycle direction, GDP, CPI, unemployment, NZD, Fed Funds, US 10Y). The word 'current' plus the fixed indicator set cleanly separates it from snapshot-style macro siblings such as get_macro_history and get_macro_exposure.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The closing sentence ('Use this to provide macro context for investment analysis') gives an intended use, but there is no when-not guidance and no routing to the obvious alternatives (get_macro_history for time series, get_macro_exposure for company-level sensitivity). Usage is implied rather than specified.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_management_credibilityA
Read-onlyIdempotent
Inspect

Get management credibility score for an NZX company. Composite 0-100 score measuring how trustworthy management forward guidance is, based on 4 factors: guidance accuracy (did they hit targets?), tone consistency (stable vs erratic), insider trading alignment (do insiders trade against guidance?), and guidance transparency (do they provide guidance at all?). Use when evaluating management quality or assessing whether to trust forward estimates.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and a closed world, so safety is covered. The description adds genuinely useful substance beyond them: the 0-100 scale, the four constituent factors with parenthetical definitions, and the fact that it concerns forward-guidance trustworthiness. It does not discuss data freshness or coverage limits, keeping it short of a 5.

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 core purpose, then the scoring composition, then the usage context. The factor list is dense but each item earns its place by explaining what drives the score. Slightly long for a one-parameter read tool, but no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the description need not describe return values, and it still explains the score's scale and construction. Combined with full annotation coverage and a fully documented single parameter, an agent has almost everything needed; the only gap is disambiguation from the near-identical credibility sibling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter whose schema description coverage is 100%, so the schema already documents the ticker format and examples. The description adds no extra meaning about the ticker argument (e.g. whether non-NZX listings are rejected), so the baseline of 3 applies.

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?

States a specific verb (get) and resource (management credibility score), and defines precisely what the score is: a composite 0-100 metric with four named factors. It is very clear on its own, but it never distinguishes itself from the close sibling get_credibility_momentum, so it falls short of full sibling differentiation.

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?

Explicitly gives the when-to-use context: evaluating management quality or deciding whether to trust forward estimates. That is a clear selection signal, but it offers no when-not-to-use guidance and does not point to any alternative tool for related questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_management_teamA
Read-onlyIdempotent
Inspect

Get the management team (C-suite executives) for an NZX company. Returns current CEO, CFO, COO, CTO, and other senior executives with their roles, tenure, biographies, education, and profile links. 127 issuers covered, 508 current executives across 15 normalized roles. Filter by role (e.g. CEO, CFO). Includes profile data where linked to shared.people.

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter by normalized role: CEO, CFO, COO, CTO, CIO, CLO, CPO, CMO, CRO, CDO, CS, GM, VP, MD, Other
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, and idempotentHint=true, so the description does not need to repeat safety. It adds useful behavioral context beyond annotations by noting that profile data is included only 'where linked to shared.people' and providing coverage stats (127 issuers). This gives agents a better expectation of data availability and sourcing without contradicting any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with zero wasted words. It front-loads the primary purpose, then details the returned data, then adds coverage and filter info. Each sentence earns its place, and the structure is clean and scannable for an agent.

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?

With an output schema present (return format is specified elsewhere) and only two simple parameters, the description covers everything an agent needs: what the tool does, what data it returns, how many issuers are covered, and how to filter by role. It even notes conditional profile linking. There are no significant gaps for a read-only, idempotent lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: both parameters (ticker and role) are fully documented with descriptions, and role includes a list of normalized values. The description's mention of 'Filter by role' adds no new meaning beyond the schema's role parameter description. Per the rubric, a baseline of 3 is appropriate when the schema already carries the parameter semantics.

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 verb and resource: 'Get the management team (C-suite executives) for an NZX company.' It enumerates the returned data (roles, tenure, biographies, education, profile links) and provides coverage metrics (127 issuers, 508 executives). This clearly distinguishes it from sibling tools like get_directors or get_board_changes, so an agent can select it correctly without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context that this tool is for C-suite executives and mentions filtering by role, but it does not explicitly state when not to use it or name alternative tools. The sibling list implies alternatives (e.g., get_directors for board members), but no direct exclusions or comparisons are made. Thus it meets the 'clear context, no exclusions' bar.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_changesA
Read-onlyIdempotent
Inspect

Get a market-wide activity feed showing significant events from the last 48 hours — board changes, insider trades, dividend announcements, earnings, takeovers, and significant price moves. Events are severity-ranked (critical/high/medium/low). Use when asked what happened on the market, recent changes, market activity, or what's new across NZX.

ParametersJSON Schema
NameRequiredDescriptionDefault
hoursNoLookback period in hours (default 48, max 168)
limitNoMax items to return (default 30, max 100)
tickersNoComma-separated ticker filter for watchlist mode (e.g. "AIR,SPK,FPH")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already establish read-only, idempotent, non-destructive behavior. The description adds useful behavioral context beyond that: the default 48-hour lookback, the severity ranking scheme (critical/high/medium/low), and the set of event categories included. It does not discuss permissions, rate limits, or pagination, but those are somewhat covered by the schema/output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tightly written sentences: the first defines the tool and its content, the second defines when to use it. No filler or redundancy; the key scope is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With annotations and an output schema covering safety and return format, the description is nearly complete for a simple read feed. One minor gap: it describes only the market-wide mode and omits the optional ticker-filter/watchlist mode documented in the schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents hours, limit, and tickers. The description only echoes the default 48-hour window and does not mention the tickers-based watchlist mode or add syntax details beyond the schema, so baseline 3 is appropriate.

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 names a specific verb (Get), resource (market-wide activity feed), and enumerates included event types (board changes, insider trades, dividends, earnings, takeovers, price moves). Its 'market-wide' scope distinguishes it from company-specific siblings like get_company_changes or get_board_changes, but it does not explicitly name any alternative tool.

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 clear usage triggers: 'Use when asked what happened on the market, recent changes, market activity, or what's new across NZX.' This is good context, but no when-not conditions or named alternatives are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_market_signalsA
Read-onlyIdempotent
Inspect

Get the Market Intelligence Feed — a unified stream of all NZX market events. Returns 13 signal types: insider trades, capital raises, dividends, earnings releases, AGM results, director changes, governance score changes, technical signals (golden/death cross, RSI extremes), credit rating changes, auditor changes, takeover/M&A activity, board events, and composite signals (multi-signal patterns like insider selling + earnings miss, director exodus, governance deterioration). Use this when asked "what happened on the NZX today/this week?", "any recent insider trades?", "golden crosses?", "credit rating changes?", "composite signals?", "market activity for AIR", or any question about recent NZX events. ROUTING: this is the CROSS-MARKET FEED — use it for 'what is happening across the market' or when scanning several signal types at once. For a question about ONE dataset for ONE company, prefer the specific tool: get_capital_raises, get_agm_resolutions, get_vote_history, get_credit_ratings, get_audit_history, get_governance_scores, get_dividends, get_insider_trades. Listing a signal type here does NOT mean this is the best tool for it.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back (default 180, use 7 for "this week", 1 for "today")
typeNoComma-separated signal types: insider_trade, capital_raise, dividend, earnings, agm_result, director_change, grs_change, technical_signal, credit_rating, audit_change, takeover, board_event, composite_signal
limitNoMax results (default 50)
sectorNoFilter by sector (e.g. "Energy", "Healthcare")
tickerNoFilter by company ticker (e.g. "AIR", "MEL")
significanceNoFilter by significance: high, medium, low

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so the bar for added behavioral context is lower. The description adds meaningful behavior: it returns a unified cross-market stream, can combine multiple signal types, and includes composite signals that detect patterns like insider selling plus earnings miss. It also clarifies the feed's broad scope, which is not inferable from the schema alone.

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 core definition and scope, then gives compact example queries and routing. It is longer than average, but the length is justified by the large palette of signal types and the need to distinguish siblings. The final caution about routing is somewhat redundant with the earlier routing statement but earns its place by preventing misuse.

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 six-parameter, no-required-parameter tool with an output schema, the description plus schema covers what an agent needs: purpose, scope, routing, parameter semantics, and return coverage via the output schema. It explicitly handles the common confusion with sibling tools and provides example invocations. No critical behavior or parameter concern is left unaddressed.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter (days, type, limit, sector, ticker, significance) already has a semantic description with defaults and examples. The tool description doesn't need to repeat parameter details, so the baseline of 3 applies. It does reinforce the available signal type vocabulary informally, but the schema already lists the exact underscore codes.

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 opens with a specific verb and resource ('Get the Market Intelligence Feed') and immediately defines its scope as a unified stream of all NZX market events. It differentiates itself from sibling tools by explicitly stating it is the cross-market feed and by naming the specific single-dataset tools it is not. The enumeration of 13 signal types leaves no ambiguity about what the tool covers.

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?

Contains explicit routing guidance: use it for 'what is happening across the market' or when scanning several signal types at once, and avoid it for a question about one dataset for one company. It names the preferred sibling tools for single-dataset queries (get_capital_raises, get_agm_resolutions, etc.) and adds the warning that listing a signal type does not mean this is the best tool. Example phrasings ('what happened on the NZX today/this week?') anchor when to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_metricsA
Read-onlyIdempotent
Inspect

Get financial metrics/ratios for NZX companies. 46 ratios: profitability (incl. comprehensive_roe, oci_divergence), leverage (incl. paid_in_capital_ratio), cash flow, dividends, growth (incl. share_capital_growth), valuation, composite. Use for screening or comparison.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoFor single ticker: "snapshot" (default) or "historical"
sortNoSort by metric (e.g. "pe_ratio", "roe", "dividend_yield")
yearNoYear or range filter
limitNoMax results
orderNo"asc" or "desc"
sectorNoFilter by sector (list mode only)
tickerNoSpecific ticker for detailed metrics with live valuation. Omit for list of all companies.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds useful context about the breadth of metrics (46 ratios across categories), but it doesn't describe behavioral details like default modes, list-vs-single behavior, or result shapes beyond what the schema already provides.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two efficient sentences with no filler. The core function is front-loaded, and the ratio categories are compactly listed with representative examples. Every part of the description earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the read-only annotations, full schema parameter coverage, and presence of an output schema, this definition gives an agent enough to select and call the tool correctly. The main gap is potential overlap with siblings like get_financials or get_performance, though the metric categories and 'screening or comparison' guidance mostly disambiguate it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already well documented there. The description adds context about the ratio families that may be relevant to sorting/filtering, but it does not add new meaning to individual parameters like mode, sort, year, or limit. Baseline 3 is appropriate.

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 clearly identifies the resource ('financial metrics/ratios for NZX companies'), specifies the verb 'get', and enumerates ratio categories and example metrics. It is specific about what the tool returns, but it doesn't explicitly differentiate itself from similar siblings like get_financials, get_earnings, or get_performance.

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?

'Use for screening or comparison' gives a clear intended use case, and the ratio listing supports that framing. However, it does not name alternatives or state when not to use this tool instead of a sibling, so it falls short of full 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_morning_briefA
Read-onlyIdempotent
Inspect

Get or generate a morning brief for the authenticated user's watchlist companies. Returns overnight announcements, insider trades, price moves, dividends, and governance changes. Use when asked for a morning brief, daily digest, overnight summary, or what happened with their watched companies.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNoGet brief for specific date (YYYY-MM-DD)
daysNoLookback days for generation (default 1)
generateNoGenerate today's brief on demand (default false)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld=false, so safety is covered. The description adds genuinely new context: the tool can lazily generate today's brief on demand rather than only reading a pre-existing one, and it discloses the categories of data that come back. It doesn't discuss freshness, latency, or what happens when no brief exists for the requested date.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler. The capability and scope come first, the routing triggers second, and the returned data types are packed into a single list rather than expanded prose.

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?

An output schema exists, so return shape need not be described, and annotations already carry the safety profile. For a 3-optional-param, no-required-param read tool, the description covers capability, scope, and invocation triggers with nothing an agent needs left missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so date, days, and generate are already documented in the schema with formats and defaults. The description adds no parameter-level meaning beyond the schema (e.g., how 'days' interacts with 'date', or whether generate overrides an existing brief), so the baseline of 3 applies.

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 names a specific verb+resource ('Get or generate a morning brief'), scopes it ('for the authenticated user's watchlist companies'), and enumerates the payload (overnight announcements, insider trades, price moves, dividends, governance changes). This distinguishes it from market-wide siblings like get_daily_market_wrap and from narrower feeds like get_insider_trades or get_dividends.

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 trigger phrasings — 'morning brief, daily digest, overnight summary, or what happened with their watched companies' — which is clear when-to-use guidance. It stops short of naming an alternative (e.g., get_daily_market_wrap for non-watchlist coverage) or stating exclusions, so it is strong but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_my_portfolioA
Read-onlyIdempotent
Inspect

Get the authenticated user's portfolio holdings with enriched data including current prices, unrealized P&L, GRS governance scores, dividend yields, risk flags, upcoming events (dividends, meetings), recent insider trades, and sector exposure breakdown. Use this tool whenever the user asks about "my portfolio", "my holdings", "my stocks", "my exposure", "how am I doing", "what should I worry about", or any question that relates to their personal investment portfolio. Returns null if the user has no portfolio.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive/openWorld=false, so the safety profile is covered. The description adds real context beyond that: it discloses the shape of the returned enrichment and, importantly, that it returns null when the user has no portfolio — a non-obvious edge case. Auth requirement is implied by 'authenticated user's'. No rate-limit or latency notes, so not a 5.

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-loads the purpose, then the field list, then the trigger phrases — a logical order with no filler. The enrichment enumeration and the phrase list are long, but both carry selection value rather than padding.

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?

With an output schema present, annotations covering the safety profile, and no parameters to document, the description supplies everything an agent still needs: what it returns at a high level, who it applies to, and the null-return edge case.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it correctly signals the tool is self-scoped to the authenticated user rather than requiring an ID argument.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get the authenticated user's portfolio holdings') and immediately scopes it as personal/enriched, which separates it from the many company-level siblings like get_insider_ownership, get_performance, or get_dividends. The enumeration of enriched fields (prices, P&L, governance scores, insider trades, sector exposure) makes the resource unambiguous.

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?

Gives an unusually explicit use-condition with concrete user phrasings ('my portfolio', 'how am I doing', 'what should I worry about') and a catch-all for personal-portfolio questions. It does not name a when-not case or point to a sibling alternative, so it falls short of the top bar, but the routing guidance is clear and actionable.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_narrative_trackerA
Read-onlyIdempotent
Inspect

Track how a company's management narrative evolves over time. Shows earnings timeline with management tone, key topics, forward-looking statement counts, guidance direction, sentiment scores, AGM Language Intelligence Scores (LIS), and year-over-year shifts in tone, guidance, topics, and hedging. Useful for detecting narrative pivots, credibility assessment, and earnings quality analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, and non-destructive, so the safety profile is covered. The description adds value beyond that by disclosing the content scope of the read (timeline, tone, forward-looking statement counts, YoY shifts), giving the agent a sense of what it retrieves.

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?

Two sentences, front-loaded with the core purpose before the signal enumeration and use cases. The middle list is long but each item carries distinct meaning, so little is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter read tool with an output schema and full annotation coverage, the definition is nearly complete. The output schema handles return formatting, so the description's enumeration is surplus rather than a gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With a single parameter and 100% schema description coverage, the schema already documents the NZX ticker format and examples. The description adds no parameter-level detail, so the baseline 3 applies.

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?

States a specific verb and resource: tracking how a company's management narrative evolves over time, plus an enumeration of the underlying signals (tone, guidance, topics, hedging, LIS). This distinguishes it well from generic siblings like get_management_credibility or get_earnings, though it never names an alternative directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives implied use cases (detecting narrative pivots, credibility assessment, earnings quality analysis), which is genuine context. However there is no explicit when-to-use vs when-not-to-use guidance or routing to competing tools such as get_transcript_diffs or analyse_narrative_risk.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_network_intelligenceA
Read-onlyIdempotent
Inspect

Analyze the NZX director network — find connection paths between people, identify power brokers by centrality, detect governance communities. Use when user asks "how is Director A connected to Director B?", "who are the most influential directors?", "which directors form clusters?", or "governance network analysis".

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoPerson slug for shortest-path target (e.g., "joan-withers")
fromNoPerson slug for shortest-path source (e.g., "rob-campbell")
modeYesAnalysis mode: "analysis" (full metrics), "shortest-path" (connection path), "power-brokers" (top by centrality), "communities" (governance clusters)
limitNoMax results (default 30)
current_onlyNotrue/false — current appointments only (default: true)
cross_platformNotrue/false — include charity/public sector connections (default: true)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered by structured data. The description adds nothing further — no data freshness, scope of the NZX graph, or computation cost for the "analysis" mode — so it only meets the minimum bar for a read-only analytical tool.

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?

Two sentences, front-loaded with purpose before the usage triggers, with no filler or repetition. The quoted example queries are verbose but earn their place as retrieval triggers; slightly trimming them would tighten it further.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, annotations cover the safety profile, and schema coverage is 100%, so the description does not need to explain parameters or return values. It adequately covers the tool's capabilities and triggers; only sibling disambiguation is missing, which caps it below 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the mode enum values are fully documented in the schema itself ("analysis", "shortest-path", "power-brokers", "communities"). The description's mode mentions merely parallel the schema; it adds no syntax, defaults, or interactivity rules (e.g. that from/to are only meaningful in shortest-path), so baseline 3 applies.

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?

Names a specific verb+resource ("Analyze the NZX director network") and enumerates three concrete sub-capabilities — connection paths, centrality-based power brokers, and governance communities. However, it never distinguishes itself from close siblings such as get_director_network, get_chair_network, or get_knowledge_graph_shortest_path, so an agent cannot tell from the description alone which network tool to pick.

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?

Provides explicit trigger phrasings ("how is Director A connected to Director B?", "who are the most influential directors?", "which directors form clusters?") that map well onto the mode parameter, giving the agent concrete selection signals. It stops short of naming alternatives or when NOT to use it, leaving the sibling-overlap problem unresolved.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_news_sentimentA
Read-onlyIdempotent
Inspect

Get AI-scored news sentiment for an NZX company from NZ financial media (Interest.co.nz, NZ Herald, RNZ, NBR, Stuff). Returns 7d/30d averages, sentiment distribution, top topics, and recent scored articles.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to look back (default 30)
sourceNoFilter by source: "interest", "nzherald", "rnz", "nbr", "stuff"
tickerYesNZX ticker symbol (e.g. "AIR", "SPK", "FBU")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds the covered source set and output shape, but the return shape largely duplicates the existing output schema rather than disclosing new behavioral traits like rate limits or coverage gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two front-loaded sentences with zero waste: the core action and scope come first, the output shape second. Every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema, 100% parameter coverage, and complete annotations, the description need not explain return values. It is complete for invocation, though it omits sibling routing that would make it fully self-sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents ticker, days (default 30), and source. The description reinforces the source list and references 7d/30d windows but adds no syntax or semantics beyond the schema; baseline 3 applies.

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?

States a specific verb (Get), resource (AI-scored news sentiment), and scope (NZX company, named NZ financial media), so the agent understands precisely what is produced. It does not explicitly distinguish itself from the close sibling get_announcement_sentiment, which is a real ambiguity, so it falls short of 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description scopes the tool to news media sentiment, which implicitly suggests when to reach for it versus announcement-based sentiment tools, but it never states when to use it, when not to, or names an alternative. Usage is only implied by the source list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_oci_divergenceA
Read-onlyIdempotent
Inspect

Get OCI (Other Comprehensive Income) divergence signal for an NZX company. Analyses gap between reported net income and total comprehensive income to detect hidden FX/revaluation/hedging risks. 4-factor model: current magnitude, persistence, volatility, and trend. Returns risk score (0-100) and detailed metrics. Use when investigating whether headline earnings mask hidden losses.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds real behavioral context beyond that: the 4-factor model (magnitude, persistence, volatility, trend) and the 0-100 risk score, which tells the agent what kind of signal to expect.

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 dense sentences, front-loaded with the resource and method before the use case. Every sentence carries information, though the method/return details could be trimmed given an output schema exists.

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?

With an output schema covering the risk score and metrics, annotations covering safety/idempotency, and a single fully documented parameter, the description supplies everything an agent needs to select and call this tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the schema already documents the ticker format with examples. The description adds no syntax, format, or constraint detail beyond implying an NZX company; baseline 3 applies when the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get OCI (Other Comprehensive Income) divergence signal for an NZX company') and immediately explains the underlying analysis (gap between net income and total comprehensive income). This is clearly distinguishable from sibling accounting tools like get_earnings_quality or get_accounting_quality.

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?

Gives a concrete triggering condition: 'Use when investigating whether headline earnings mask hidden losses.' That is a clear context for invocation, but it names no alternative or exclusion (e.g., when to prefer get_earnings_quality or get_earnings instead), so the agent must infer sibling routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_officer_historyA
Read-onlyIdempotent
Inspect

Get the full historical officer timeline for an NZX company — every director and executive who has ever held a role, with start/end dates, tenure, status, and committees. Includes both board members (from director_appointments) and C-suite executives (from management_team). Each officer includes a stable permanent_id (NZX-P-NNNNNN) for cross-referencing. Supports FDC3 contactList format. Use when asked about past leadership, board turnover, executive changes, or who used to run a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date filter (YYYY-MM-DD) — appointments before this date
fromNoStart date filter (YYYY-MM-DD) — appointments after this date
roleNoFilter by role keyword: chair, ceo, cfo, director (comma-separated)
typeNoFilter by officer type: board, executive, or all (default: all)
statusNoFilter by status: current, resigned, retired (comma-separated)
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive, closed-world behavior, so the bar is low. The description adds genuine context beyond that: the stable permanent_id format (NZX-P-NNNNNN) for cross-referencing, the FDC3 contactList format support, and the two underlying data sources merged into one timeline.

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?

Purpose is front-loaded in the first clause, with supporting details (sources, ID format, format support, usage triggers) following in a logical order. Five sentences is slightly dense but each contributes information; nothing is obviously redundant.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value documentation is not required. The description covers purpose, scope, data sources, identifier semantics, an interoperability format, and usage triggers, which is complete for a read-only lookup tool. Pagination and date-filter interaction details are the only notable omissions.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all six parameters with formats and allowed values. The description's mention of start/end dates, status, and committees loosely aligns with filters but adds no syntax or semantics beyond what the schema provides. Baseline 3 applies.

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?

States a specific verb and resource ("Get the full historical officer timeline for an NZX company") and scopes it precisely to "every director and executive who has ever held a role." It also clarifies the data provenance (director_appointments + management_team), which separates it from current-only siblings, though it never names those siblings directly.

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?

Provides explicit trigger conditions: "Use when asked about past leadership, board turnover, executive changes, or who used to run a company." This gives clear invocation context. It lacks an explicit "do not use for X, use Y instead" exclusion against close siblings like get_director_history or get_management_team.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_offshore_exposureA
Read-onlyIdempotent
Inspect

Get ICIJ Offshore Leaks Database matches for directors and entities of an NZX company. Covers Panama Papers, Pandora Papers, Paradise Papers, Bahamas Leaks. Returns match scores and review status. Use when asked about offshore exposure, Panama Papers, Pandora Papers, offshore entities, shell companies, or tax haven connections for a company or its directors.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safety profile (readOnly, idempotent, non-destructive, closed-world), lowering the bar. The description adds genuine context: it enumerates the covered leak datasets and discloses that results are match scores plus a review status, indicating probabilistic/fuzzy matching rather than definitive hits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences, front-loaded with what it does, then data coverage, then usage triggers. No filler and every sentence adds information an agent would otherwise have to infer.

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?

An output schema exists, so return-format detail is not required, and the description still notes the shape of results (match scores, review status). Data scope, entity coverage, and trigger conditions are all present for a single-parameter read tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a single required 'ticker' parameter fully described (with examples) in the schema. The description adds no format or semantics beyond that, so the baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get), a specific resource (ICIJ Offshore Leaks Database matches), and the exact scope (directors and entities of an NZX company). Names the underlying data sources (Panama/Pandora/Paradise Papers, Bahamas Leaks), so an agent can distinguish it from generic graph or beneficial-ownership tools at a glance.

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?

Provides explicit when-to-use triggers (offshore exposure, shell companies, tax haven connections), which is strong guidance. However, it names no alternatives or exclusions, and several siblings (get_kyc_screening, get_beneficial_ownership, get_political_connections, get_hidden_connections) plausibly overlap, so routing between them is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_peer_mentionsA
Read-onlyIdempotent
Inspect

Get peer mentions for an NZX company — which other companies reference it in their announcements, and which companies it references. Extracted from 62,000+ NZX documents. Shows network of business relationships, competitive dynamics, and sector interconnections. Includes context snippets. Each mention includes a relation_type (supplier, customer, partner, competitor, joint_venture, acquirer, subsidiary, licensee, advisor, shareholder, none) and relation_confidence (high, medium, low). Summary includes counts by relation type. Filter by relation type with the relation parameter.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")
relationNoFilter by relation type(s), comma-separated (e.g. "supplier,customer")
directionNoFilter direction: "mentions" (companies this ticker references), "mentioned_by" (companies referencing this ticker), or "both" (default)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the bar is lower. The description still adds real behavioral context beyond them: the data provenance (62,000+ NZX documents), the relation_type taxonomy, and the relation_confidence levels (high/medium/low), which help an agent judge result reliability.

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 purpose is front-loaded in the first clause, and the enumeration of taxonomy values is useful rather than filler. The sentence on 'network of business relationships, competitive dynamics, and sector interconnections' is mild marketing fluff but short enough not to hurt readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and annotations covering the safety profile, the description need not explain return values, and it covers provenance, taxonomy, and filtering. The main omission is sibling differentiation, which is the one thing an agent with 150+ tools would most need.

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 100%, so the baseline is 3. The description goes beyond the schema by enumerating the full relation_type vocabulary (supplier, customer, partner, competitor, etc.), giving an agent the concrete values to pass to the 'relation' filter, and it paraphrases the direction semantics ('companies it references' vs 'companies referencing it').

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 names a specific verb+resource ('Get peer mentions for an NZX company') and then defines the scope precisely: which companies reference it and which it references, extracted from NZX announcements. This is far clearer than a bare name, but it never distinguishes the tool from close siblings like get_company_connections, get_corporate_relationships, or get_network_intelligence.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explains how to filter (the 'relation' parameter) but never says when to reach for this tool over the numerous other relationship/network tools (get_company_connections, get_entity_graph, get_hidden_connections). There is no when-not guidance and no prerequisites stated, leaving the agent to infer selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_people_profileB
Read-onlyIdempotent
Inspect

Get a comprehensive cross-platform intelligence report for a person. Covers NZX board roles, charity trusteeships, public sector appointments, iwi roles, MP status, skills matrix, remuneration history, executive compensation, insider trades, governance scores, conflicts, and political connections. Uses the person slug (e.g. "john-smith"). $0 cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
slugYesPerson slug from shared.people (e.g. "john-smith", "jane-doe")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and non-destructive behavior, so the safety profile is covered. The description adds genuinely useful non-annotation context ('$0 cost') plus the breadth of aggregation, but says nothing about rate limits, auth requirements, or freshness/staleness of the intelligence.

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-loads the core purpose, then the coverage list, then the calling convention and cost. The long enumeration of coverage areas is dense but earns its place by signalling the report's breadth, though it could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value structure needn't be explained, and the description covers what data domains the report spans. Combined with the annotations it gives an agent enough to invoke correctly, with only the sibling-disambiguation gap remaining.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter exists and schema coverage is 100%, so the schema already fully documents the slug and its example. The description's 'person slug (e.g. "john-smith")' merely repeats the schema, adding no new semantics — baseline 3 for high coverage.

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?

States a specific verb and resource ('Get a comprehensive cross-platform intelligence report for a person') and enumerates the coverage areas, which distinguishes it from company- or director-scoped siblings. However, it never names a sibling like get_director_detail or get_kyc_screening, so the boundary against those is inferred rather than stated.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says how to call it ('Uses the person slug') but never states when to use this aggregate profile versus the narrower sibling tools such as get_director_detail, get_political_connections, or subscribe_people_alerts. No when-not conditions or alternatives are offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_performanceA
Read-onlyIdempotent
Inspect

Get stock performance metrics for an NZX company. Returns (1d to 5y), alpha vs NZX50, volatility, 52-week range, market cap. Use for performance comparison and pay-for-performance analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds behavioral context by listing the returned metrics, which informs the agent about the output shape. It does not contradict annotations, and it adds value beyond them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. It front-loads the core purpose and metric list, then adds the usage context. Every word earns its place, making it efficient and well-structured.

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 the single parameter, read-only nature, and existence of an output schema, the description provides all necessary context: what it does, what it returns, and when to use it. No critical information is missing for an agent to correctly invoke the tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with the parameter 'ticker' already described as 'NZX ticker symbol'. The description adds nothing further about the parameter's format, constraints, or examples. Since the schema fully covers semantics, a baseline score of 3 is appropriate.

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 verb ('Get') and resource ('stock performance metrics for an NZX company') and enumerates concrete metrics (returns 1d-5y, alpha vs NZX50, volatility, 52-week range, market cap). This clearly distinguishes it from siblings like get_stock_prices or get_metrics, which cover different data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit use case: 'Use for performance comparison and pay-for-performance analysis.' It does not explicitly name alternatives or state when not to use it, but the stated use case is clear and sufficient for an agent to decide. A minor gap is the lack of explicit exclusions or alternative tool references.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_political_connectionsA
Read-onlyIdempotent
Inspect

Get political connections for an NZX company. Returns MP interests (gifts, hospitality, shareholdings, travel mentioning this company), political donors linked to the company or its directors, and party donation records. Data from the NZ Parliamentary Register of Interests and Electoral Commission.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "SKC", "AIR", "SAN")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful provenance (NZ Parliamentary Register of Interests and Electoral Commission), but the 'Returns...' content is largely duplicated by the output schema and no auth, rate-limit, or freshness behavior is disclosed.

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?

Two front-loaded sentences that lead with the action and then the payload, with no filler. Tight and easy to scan, though slightly long in the enumeration.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 re-explained, annotations cover safety, and the single parameter is fully documented. The description gives adequate context; only explicit sibling routing and usage conditions are missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 100% schema description coverage on the single ticker parameter, the schema already documents the input fully. The description adds no format, casing, or validity guidance for the ticker beyond what the schema shows, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get political connections for an NZX company') and enumerates the exact contents: MP interests, political donors, and party donation records. The political/parliamentary framing clearly separates it from siblings like get_councillor_interests and get_government_contracts.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when the tool is relevant (political ties to a company) but never states when to use it versus alternatives such as get_councillor_interests, get_company_connections, or get_hidden_connections, nor any exclusions. Usage is inferable from the returned-content list but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_professional_disciplinaryA
Read-onlyIdempotent
Inspect

Get professional body disciplinary records for directors of an NZX company. Sources: CA ANZ (accountants), NZ Law Society (lawyers), Medical Council (doctors), Engineering NZ (engineers). Returns action type, severity, outcome, and match confidence. Use when asked about professional misconduct, disciplinary history, professional body sanctions, or director professional standing.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare the safe-read profile (readOnlyHint, idempotentHint, destructiveHint=false, closed-world), so the description's job is supplementary. It adds genuinely useful context: the four data sources behind the result and the presence of a 'match confidence' value, implying name-based fuzzy matching against directors. It does not discuss coverage limits or latency.

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?

Purpose is front-loaded in the first clause, followed by sources, return fields, and usage in descending priority. Four sentences are all load-bearing with no filler, though listing return fields is mildly redundant given the output schema exists.

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?

With an output schema present and annotations covering the safety profile, the description only needs to convey scope, sources, and when to call it — all of which it does. Nothing an agent needs in order to invoke this single-parameter read correctly is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (ticker) exists and the schema documents it at 100% coverage with an example set. The description adds nothing to ticker semantics and does not explain how a company ticker resolves to the set of directors examined, which is the non-obvious part of this call. Baseline 3 applies.

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?

States a specific verb and resource (disciplinary records) scoped to directors of an NZX company, and enumerates the four professional bodies queried. It is clearly understandable on its own, but it never names or contrasts the closely-related siblings get_prohibited_directors and get_regulatory_actions, so an agent must infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives concrete trigger scenarios (professional misconduct, disciplinary history, professional body sanctions, director professional standing), which is clear when-to-use guidance. It stops short of exclusions or routing to alternatives such as get_prohibited_directors or get_regulatory_actions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_prohibited_directorsA
Read-onlyIdempotent
Inspect

Get the full list of prohibited/banned directors from the Companies Office register, including any matches to current NZX directors. Use when asked about prohibited directors, banned directors, disqualified persons, or director fitness checks.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered. The description adds the data provenance (Companies Office register) and the fact that the result set includes NZX director matches, but says nothing about freshness, update cadence, or completeness limits of the register snapshot.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler: the first defines what is returned and from where, the second gives invocation triggers. Front-loaded with the core action and appropriately sized for a no-parameter tool.

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?

An output schema exists, so return values need not be explained, and the annotations carry the safety profile. For a zero-parameter, read-only list tool the description supplies everything an agent needs: what it returns, its source, and the phrasing that should trigger it.

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?

The tool takes zero parameters, so there is no parameter semantics to document and the baseline is 4. The description correctly implies a fixed, unfiltered full-list retrieval rather than implying any hidden filtering options.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Get the full list of prohibited/banned directors') and names the authoritative source ('Companies Office register'), which distinguishes it from siblings like get_directors, get_director_risk, or get_officer_history. The added scope note about cross-matching current NZX directors makes the returned dataset unambiguous.

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?

Explicit trigger conditions are given: 'Use when asked about prohibited directors, banned directors, disqualified persons, or director fitness checks.' That covers when to use it well, but no alternative or exclusion is named (e.g. when to prefer get_director_due_diligence or get_kyc_screening instead), so it stops 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_property_climate_riskA
Read-onlyIdempotent
Inspect

Get climate and natural hazard risk analysis for an NZX property company portfolio. Returns per-property risk scores (0-100 composite), seismic zones (NZS 1170.5, 1-4), flood risk, liquefaction risk, coastal proximity, and sea level rise exposure. Includes portfolio-level averages, high-risk property count, and highest seismic zone. Based on published NZ government hazard data (NZS 1170.5, GNS Science, MfE, NIWA). Works for: KPG, ARG, PFI, VHP, IPL, SPG, CDI, GMT, PCT, APL.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol of a property company (e.g. "KPG", "GMT", "VHP")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the description is free to add provenance instead: published NZ government hazard data from NZS 1170.5, GNS Science, MfE and NIWA. That sourcing is genuinely useful for judging credibility and recency of the numbers, though nothing is said about data vintage, refresh cadence, or coverage gaps for properties lacking hazard data.

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 purpose, then output contents, then provenance, then the supported-ticker list — a sensible priority order with no filler sentences. It is somewhat list-dense in the middle, but each clause carries distinct information rather than restating the name or title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 correctly focuses on scope, inputs and provenance rather than restating return values. It is nearly complete for a single-parameter read tool, lacking only the failure mode for unsupported tickers and any note on how often the underlying hazard data is refreshed.

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 100% for the single ticker parameter, so baseline is 3. The description goes beyond the schema's three inline examples by listing the full supported ticker universe, which materially narrows the agent's guesswork about valid inputs — the main semantic gap that remains is the absence of a defined error behaviour for unsupported tickers.

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?

Names a specific verb and resource — climate/natural hazard risk analysis — and pins the scope to NZX property company portfolios, which separates it from adjacent siblings like get_climate_gap_analysis and get_esg_data. It also enumerates the exact outputs (composite scores, NZS 1170.5 seismic zones, flood, liquefaction, coastal proximity, SLR exposure) so an agent knows precisely what it returns 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Works for: KPG, ARG, PFI, VHP, IPL, SPG, CDI, GMT, PCT, APL' line effectively bounds the valid input domain, which is useful usage context. However, it never states when to prefer this tool over neighbours such as get_climate_gap_analysis, get_esg_data, or get_property_portfolio, nor what happens for out-of-list tickers. Usage is implied rather than guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_property_portfolioA
Read-onlyIdempotent
Inspect

Get property portfolio data for an NZX-listed REIT or property company. Returns individual properties with book values, cap rates, WALE, occupancy, tenants, locations, climate risk scores, plus portfolio summary, type/regional breakdowns, and development pipeline. Works for: KPG, ARG, PFI, VHP, IPL, SPG, CDI, GMT, PCT, APL.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "KPG", "ARG", "GMT", "VHP")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered without description help. The description adds the shape of the payload (individual properties plus summaries, breakdowns and pipeline), but since an output schema exists this largely overlaps structured data and no auth, freshness, or error-path behavior is disclosed.

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 core purpose, then capability detail, then the supported-ticker list, with no filler sentences. The middle return-value sentence is long and partly duplicates the output schema, which is the only mild inefficiency.

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 single-parameter read tool with full annotations and an output schema, the description supplies everything needed: domain (NZX-listed REIT/property companies), valid inputs, and the scope of returned data. Nothing required 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes beyond the schema's four example tickers by listing the full supported universe (KPG, ARG, PFI, VHP, IPL, SPG, CDI, GMT, PCT, APL). That is genuine added constraint information an agent can use to decide whether a given ticker is in scope.

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 verb and resource (get property portfolio data for an NZX-listed REIT/property company) and then enumerates the exact fields returned (book values, cap rates, WALE, occupancy, tenants, locations, climate risk scores). The explicit supported-ticker list (KPG, ARG, PFI...) pins the scope precisely enough that an agent can separate it from adjacent tools like get_property_climate_risk.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Applicability is implied by the enumerated ticker list and the 'NZX-listed REIT or property company' qualifier, which tells the agent when the tool is valid. However, there is no explicit when-to-use/when-not guidance and no routing away from closely related siblings such as get_property_climate_risk, so usage remains inferred 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_proxy_reportA
Read-onlyIdempotent
Inspect

Get automated proxy advisory voting recommendations for a company's AGM resolutions. Evaluates 65+ rules across 8 categories (director elections, remuneration, auditor, capital management, constitution, related party, shareholder proposals, board structure). Returns FOR/AGAINST/REFER recommendation with reasoning for each resolution. Use this when asked about how to vote at an AGM, governance concerns for a company, or proxy advisory analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoMeeting year to analyze (e.g. "2025"). Default: latest meeting.
tickerYesCompany ticker symbol (e.g. "AIR", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

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 real behavioral context beyond that: the output verdict vocabulary (FOR/AGAINST/REFER), that reasoning is included per resolution, and the rule taxonomy being applied.

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 sentences, front-loaded with the core purpose and ending with usage guidance. The enumeration of 8 rule categories is somewhat list-heavy but does convey evaluation breadth in a compact form, so only marginal trimming is possible.

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?

With an output schema present, the description needn't explain return values, and it still previews the recommendation format. Combined with full annotation coverage and fully documented parameters, an agent has everything needed to select and call this correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both parameters carry examples and a default ('latest meeting'), so the schema does the heavy lifting. The description adds no additional parameter meaning (e.g. ticker format nuances or year fallback behavior), matching the baseline-3 case.

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?

Names a specific verb and resource (proxy advisory voting recommendations for AGM resolutions), and quantifies scope with 65+ rules across 8 named categories. This clearly separates it from adjacent siblings like get_agm_resolutions (raw resolutions), predict_agm_outcome (outcome probability), and get_vote_history (past votes).

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?

Explicitly states when to use it: AGM voting questions, governance concerns, or proxy advisory analysis. It gives clear positive triggers but does not name alternatives or exclusions, so it falls short of a 5 for a namespace this crowded with governance/voting siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_regulatory_actionsA
Read-onlyIdempotent
Inspect

Get regulatory enforcement actions for an NZX company from FMA, Commerce Commission, NZX, and other regulators. Returns enforcement history, penalties, severity, prohibited director flags. Use when asked about regulatory risk, enforcement history, FMA actions, fines, or compliance issues for a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Description discloses return content beyond annotations: enforcement history, penalties, severity, prohibited director flags. Annotations already cover read-only/idempotent safety, so the description correctly spends its budget on output substance. Could add whether data spans all NZX companies or requires existing records, but coverage is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero waste. First sentence front-loads what is returned and from whom; second delivers usage triggers. Well structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return format need not be explained; the description nonetheless summarizes key fields. With annotations covering safety and schema covering the parameter, remaining gaps are minor. Could note any coverage limitations (e.g. only NZX companies) but adequate for the tool.

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?

Single ticker parameter at 100% schema coverage, so baseline is high. Description implies company-scoped lookup consistent with the ticker, adding no conflicting syntax. Slight upside missed by not clarifying ticker format beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (regulatory enforcement actions) and names the sources (FMA, Commerce Commission, NZX, other regulators). Distinguishes itself from siblings like get_litigation_history or get_prohibited_directors by scoping to regulator enforcement.

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 trigger list: 'Use when asked about regulatory risk, enforcement history, FMA actions, fines, or compliance issues for a company.' Gives concrete query intents that route the agent here rather than to adjacent tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_remuneration_benchmarksA
Read-onlyIdempotent
Inspect

Get NZX director compensation benchmarks — median, P25/P75 board fees by sector, market cap, and role. Use when user asks "what does a chair earn?", "director fee benchmarks", "compensation comparison", "how much do NZX directors get paid?", "remuneration benchmarking".

ParametersJSON Schema
NameRequiredDescriptionDefault
roleNoFilter by role: "chair", "ned", or "all" (default: "all")
yearNoSpecific financial year
sectorNoNZX sector name (e.g., "Financials", "Health Care")
board_sizeNoBoard size: "small" (<6), "medium" (6-8), "large" (9+)
market_capNoSize filter: "micro", "small", "mid", "large"
include_trendNoInclude 5-year trend: "true" (default) or "false"

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and openWorldHint=false, so safety and determinism are covered. The description adds no operational context beyond the annotations — no information about data source, coverage limits, or latency.

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?

Two sentences: the first states the resource and output statistics, the second front-loads example user queries. No wasted words or jargon.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists and annotations cover safety, so the description need not explain return values. It covers the resource, filters, and usage triggers adequately for a no-required-param lookup tool, though it doesn't mention the 5-year trend default or output granularity, which is a minor omission.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: every one of the six parameters (role, year, sector, board_size, market_cap, include_trend) is documented in the schema with defaults and value hints. The description only hints at the filter dimensions ('by sector, market cap, and role') and adds no syntax or format detail beyond what the schema provides, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: 'Get NZX director compensation benchmarks — median, P25/P75 board fees by sector, market cap, and role.' Distinguishes itself from sibling 'get_compensation_benchmark' and 'get_executive_compensation' by specifying director fees and the NZX scope, so an agent can select it 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit trigger phrases ('what does a chair earn?', 'director fee benchmarks', 'compensation comparison') that map natural-language user queries to this tool. It does not, however, name or exclude the closest alternatives like 'get_compensation_benchmark' or 'get_executive_compensation', leaving a small disambiguation gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_remuneration_complianceA
Read-onlyIdempotent
Inspect

Get the Remuneration Disclosure Compliance Scorecard for an NZX company. Scores against 8 NZX Corporate Governance Code v1.7 criteria: individual fee disclosure, CEO compensation breakdown, STI/LTI hurdle disclosure, remuneration policy, committee independence, peer benchmarking, AGM say-on-pay vote, and termination payment disclosure. Returns 0-100 score with A-F grade. Use when asked about remuneration compliance, disclosure quality, pay transparency, or governance code alignment.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. FPH)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond them: the exact scoring basis (8 governance criteria) and the numeric/letter-grade output, which tells the agent what kind of result to expect.

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?

Four sentences that are well front-loaded: purpose, methodology, output, then usage. The enumeration of all eight criteria is the longest element but it does explain the scoring, so it largely earns its place rather than padding.

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?

With an output schema present, return values need not be described, and annotations cover the safety profile. The description supplies purpose, scoring methodology, output shape and usage triggers, leaving nothing an agent needs to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (ticker) and schema description coverage is 100%, so the schema fully documents it with an example ('NZX ticker symbol (e.g. FPH)'). The description adds no extra constraint or format detail about the parameter, so the baseline 3 applies.

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?

Specific verb+resource ('Get the Remuneration Disclosure Compliance Scorecard for an NZX company') with a detailed statement of what is scored (8 named NZX Code v1.7 criteria) and the output form (0-100 score with A-F grade). It is unambiguous, though it never explicitly differentiates itself from close siblings like get_remuneration_benchmarks or get_executive_compensation.

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?

'Use when asked about remuneration compliance, disclosure quality, pay transparency, or governance code alignment' gives clear triggering contexts. No when-not conditions or named alternatives are provided, so it stops short of the explicit routing the top score requires.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_research_briefingA
Read-onlyIdempotent
Inspect

Generate a comprehensive investment research briefing for a company. Assembles 15+ data sources and produces AI-synthesized narrative with executive summary, key strengths, risks, and outlook. Supports 5 templates: general, investment_thesis, due_diligence, board_meeting, short_thesis. Use short_thesis for bear case analysis with 6-18 month horizon.

ParametersJSON Schema
NameRequiredDescriptionDefault
focusNoComma-separated focus areas, e.g. "dividends,governance,insider activity"
tickerYesNZX ticker symbol
templateNoResearch template: general (default), investment_thesis, due_diligence, board_meeting, or short_thesis (bear case)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as a safe, read-only, idempotent, non-destructive operation. The description adds valuable behavioral context beyond that: it says it assembles 15+ data sources and produces an AI-synthesized narrative with specific sections. It does not mention latency, cost, or auth requirements, but the annotations cover the safety profile.

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, moving from purpose to output contents to templates in four efficient sentences. The template list repeats the schema enum, which is slightly redundant, but the short_thesis usage note earns its place. Overall it is appropriately sized for a multi-purpose research generator.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explained in detail; the description still usefully names the narrative sections. Annotations cover the safety profile, and the schema fully documents parameters. The main remaining gap is lack of sibling differentiation against the many adjacent research tools, which keeps it from a 5.

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 3 even without extra parameter detail. The description adds meaning beyond the schema by stating the 6-18 month horizon for the short_thesis template, which is not present in the enum description. It does not add similar guidance for focus or ticker, but those are fully documented in the schema.

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 uses a specific verb and resource: generate a comprehensive investment research briefing for a company. It clearly states the output contents and template options, distinguishing it from generic research tools. However, it does not explicitly contrast itself with similar sibling tools such as get_deep_research or get_board_briefing.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives one explicit usage rule: use short_thesis for bear case analysis with a 6-18 month horizon. It lists the five available templates, which helps selection. But it does not state when to use this tool instead of the many other research and briefing siblings, nor when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_revenue_segmentsA
Read-onlyIdempotent
Inspect

Get revenue segment breakdown for an NZX company. Returns operating, geographic, or product segment data including segment revenue, operating profit, and assets (all in NZD thousands). Use when asked about "revenue breakdown", "business segments", "divisions", "product groups", "geographic revenue", "segment analysis", or "what are the divisions of [company]".

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoSegment type filter: operating, geographic, product
yearNoYear or range (e.g. "2025" or "2020-2025")
limitNoMax results (default 50)
tickerYesNZX ticker symbol (e.g. "FPH", "SKC", "AIR", "FBU")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds valuable context about the output content (segment types, fields, and NZD thousands units), which helps the agent anticipate what the tool returns beyond what the structured annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with the action and resource front-loaded, followed by return data and usage triggers. Every sentence earns its place with no redundancy, making it appropriately sized and efficiently structured.

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?

With an output schema present and annotations covering safety, the description provides the trigger phrases, return scope, and units. This is complete for an agent to select and invoke the tool correctly without missing prerequisites or caveats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 4 parameters with descriptions (ticker, type, year, limit). The description reinforces the type values and ticker format but adds no new parameter meaning beyond the schema, so the baseline of 3 applies.

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?

Explicitly states the verb 'Get' and the resource 'revenue segment breakdown' for an NZX company, and clarifies the return data (operating/geographic/product segments with revenue, profit, assets). This clearly distinguishes it from siblings like get_financials and get_earnings, which cover broader financial metrics.

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?

Provides explicit trigger phrases ('revenue breakdown', 'business segments', 'divisions', etc.) that signal when to use the tool. However, it does not mention when not to use it or recommend alternative tools, so it lacks exclusion guidance despite clear use-case guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_risk_languageA
Read-onlyIdempotent
Inspect

Get pre-computed risk language scores for an NZX company. Scans NZX announcements for 8 risk categories: going_concern, covenant, impairment, litigation, restructuring, liquidity, regulatory, force_majeure. Returns total mentions, 12-month trend (increasing/decreasing/stable), category breakdown, critical flags, first-time detections (categories appearing for the first time — a key early warning signal), and yearly trend. Use when asked about risk factors, going concern warnings, covenant issues, litigation exposure, first-time risk language, or regulatory risk for a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real behavioral context beyond that: the scores are pre-computed rather than live analysis, derived from scanning announcements, and it flags 'first-time detections' as an early-warning signal, telling the agent how to interpret the output.

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 purpose, then categories, then return shape, then usage triggers. Dense but every clause earns its place; the return-field enumeration is long but useful routing/inventory context.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so the returned fields need not be re-explained, yet the description still summarizes them helpfully. Combined with annotations and full param coverage, an agent has what it needs; only the missing sibling differentiation keeps it from a 5.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter (ticker) with 100% schema coverage, including example values, so the schema does the work. The description adds no format or validation meaning beyond the schema's baseline, so a 3 is correct.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Get) and resource (pre-computed risk language scores) plus scope (NZX company, scanned from NZX announcements). Enumerating the 8 risk categories makes it concrete and separable from narrative/disclosure siblings.

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?

Explicit 'Use when asked about...' list covers risk factors, going concern, covenant, litigation, first-time risk language, and regulatory risk. It gives clear positive triggers but never names when-not-to-use or the closest alternative (e.g. analyse_narrative_risk, get_disclosure_language), so routing between overlapping tools is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_section_evolutionA
Read-onlyIdempotent
Inspect

Get how a specific section of annual reports (risk factors, governance, remuneration, accounting policies, strategy, outlook) has evolved across years for a company. Returns YoY diffs with added/removed lines and word count trends. Use when asked about risk disclosure changes, governance statement evolution, remuneration policy changes, or how reporting has changed over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeYesSection type: risk, governance, remuneration, accounting_policy, strategy, outlook, chairman, ceo, esg, audit_opinion
tickerYesNZX ticker symbol (e.g. "FPH")
compareNo"all" for all years or "latest" for last 2 years only (default: "all")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so safety is covered. The description adds genuine behavioral value by stating the return shape ('YoY diffs with added/removed lines and word count trends'), which goes beyond the 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences, purpose front-loaded, then return shape, then usage triggers. No filler or restatement of the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so explaining return values in detail is unnecessary, and the description covers scope, sections and return type. It is essentially complete, though it could note that only NZX-listed companies with multiple annual reports are applicable.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents ticker, type and compare. The description lists section types but omits the schema's chairman/ceo/esg/audit_opinion options and says nothing about the compare parameter, so it adds little beyond what the schema provides.

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?

States a specific verb and resource with scope: 'how a specific section of annual reports ... has evolved across years for a company,' and enumerates the covered sections. It implicitly separates itself from single-read siblings like read_annual_report_section, but never names any sibling to make the distinction explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The 'Use when asked about...' sentence gives clear triggering contexts (risk disclosure changes, governance evolution, remuneration policy changes, reporting change over time). It supplies no when-not conditions and does not name an alternative tool for adjacent questions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_select_committee_activityA
Read-onlyIdempotent
Inspect

Get NZ Parliament select committee activity for an NZX company. Returns committee reports mentioning the company (annual reviews, inquiries, bills) and bill submissions made by the company. Covers all parliaments from 1990 to present. Use when asked about parliamentary scrutiny, select committees, government oversight, SOE annual reviews, or corporate submissions to parliament.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "MEL", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: the temporal coverage (all parliaments 1990 to present) and the shape of results (committee reports plus company bill submissions). It does not mention auth or edge cases, so not a 5.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three front-loaded sentences: purpose/return contents first, coverage second, usage triggers last. Every sentence earns its place with no redundancy.

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?

With an output schema present, the description needn't explain return values, and it still characterizes what is returned. Combined with rich annotations and a fully documented single parameter, the definition is complete enough for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (ticker) with full schema description coverage (100%), and the schema already documents the NZX ticker format with examples. The description only implies an NZX company input, adding little beyond the structured field. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (get NZ Parliament select committee activity), plus the exact scope: committee reports mentioning the company and bill submissions by it. This is clearly distinct from adjacent siblings like get_political_connections or get_government_contracts, which cover different parliamentary/government data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives explicit trigger scenarios: parliamentary scrutiny, select committees, government oversight, SOE annual reviews, and corporate submissions. It gives clear when-to-use context but does not name an alternative tool or an exclusion, 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.

get_shareholdersA
Read-onlyIdempotent
Inspect

Get top 20 shareholders and substantial holders (5%+) for an NZX company. 9,284 top-20 records across 120 issuers with multi-year history (2010-2026) plus ~267 substantial holders from NZX disclosure notices. Shows ownership concentration (HHI index), holder types (nominee/company/individual/trust/fund), year-over-year ownership changes, and substantial holders with voting rights percentages. Use ?year=2025 or ?all=true for historical data.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFilter top 20 by fiscal year
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so the safety profile is covered. The description adds meaningful behavioral context: multi-year history (2010-2026), record counts, HHI index, holder types, YoY changes, and substantial-holder voting percentages. It also explains historical-data usage via year/all parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact, front-loaded with the core purpose, and uses three sentences to cover resource, data scope, output dimensions, and usage hint. Every sentence adds value; the statistics are extra but not distracting.

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 an output schema present and annotations covering safety, the description is mostly sufficient. It explains data scope, history, and metrics, but the unsupported 'all=true' parameter creates a correctness gap. The overlap with get_substantial_holders is also not resolved, which could lead an agent to select the wrong tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents ticker and year. The description adds a useful year example, but it also introduces '?all=true', a parameter that is absent from the input schema while additionalProperties is false. This is misleading: an agent following the description may try to pass an unsupported 'all' argument.

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 clearly states a specific verb and resource: 'Get top 20 shareholders and substantial holders (5%+) for an NZX company.' It also adds useful specificity about HHI, holder types, and YoY changes. However, it does not distinguish this tool from the sibling get_substantial_holders, which overlaps by name and by the substantial-holders portion of the description.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended usage is implied by the first sentence, and the description gives invocation examples like 'Use ?year=2025 or ?all=true'. However, there is no explicit guidance about when to choose this tool over alternatives—particularly get_substantial_holders—and no exclusions or when-not-to-use guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stewardship_reportA
Read-onlyIdempotent
Inspect

Get full detail for a specific stewardship report by ID, including per-company resolution analysis, vote recommendations, and the policy used. Use when asked about a specific voting report's details. Corporate tier required.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesStewardship report ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint/idempotent/non-destructive, so safety is covered. The description adds a meaningful gating constraint not present in structured data — 'Corporate tier required' — plus what categories of data are returned. It does not describe error behavior when the tier is missing or when an ID is invalid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three tight sentences with no redundancy: purpose and returned payload first, usage cue second, prerequisite last. Every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 not be explained, and the description still usefully summarizes the payload. The tier requirement plus a required-only single parameter make this nearly self-contained; only failure/entitlement behavior is unstated.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a single well-documented 'id' parameter, so the schema carries the semantics. The phrase 'by ID' adds no format, source, or lookup guidance beyond the schema; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb + resource ('Get full detail for a specific stewardship report by ID') and enumerates the payload contents (per-company resolution analysis, vote recommendations, policy used). This clearly separates it from the sibling list_stewardship_reports and get_proxy_report.

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?

'Use when asked about a specific voting report's details' gives a clear triggering condition. It stops short of naming the alternative (list_stewardship_reports) or stating when not to use it, so it is contextual but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_stock_pricesA
Read-onlyIdempotent
Inspect

Get daily stock price history (OHLCV) for an NZX company. Use for price trends, returns, and technical context.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoEnd date (YYYY-MM-DD)
daysNoNumber of recent trading days (default 30)
fromNoStart date (YYYY-MM-DD)
tickerYesNZX ticker symbol

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds that the data is daily history with OHLCV fields, giving useful behavioral context beyond the annotations. It does not discuss adjustment policy or missing-ticker behavior, but those are minor given the annotations and output schema.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two short sentences with the core operation front-loadedley and no filler or repetition of schema fields. Every sentence contributes to selection or invocation.

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?

With a full output schema, 100% parameter coverage, and clear annotations, the description is complete for a low-complexity read-only tool. Nothing that an agent needs 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.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so ticker, from, to, and days are already documented in the input schema. The description adds no parameter-level detail beyond the schema, so the baseline score of 3 is appropriate.

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 uses a specific verb and resource: 'Get daily stock price history (OHLCV) for an NZX company.' It names the data format and explicit use cases, which distinguishes it from sibling tools like get_daily_market_wrap and get_technical_signals.

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 explicitly says 'Use for price trends, returns, and technical context,' which gives clear routing guidance. It does not name alternatives or state when not to use it, but the use-case list is sufficient for most selection decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_substantial_holder_changesA
Read-onlyIdempotent
Inspect

Get substantial holder ownership change events for an NZX company. Tracks increases, decreases, initial disclosures, and ceased holdings from substantial holder filings. Shows previous vs current percentage, share counts, holder type, and disclosure dates. Use for monitoring institutional ownership shifts, activist accumulation, and divestment patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoLookback period in days (default 365)
typeNoFilter by change type: initial, increase, decrease, ceased, crossed_10, crossed_20
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive, and closed-world, so the safety profile is covered. The description's added detail (previous vs current percentage, share counts, holder type, disclosure dates) largely duplicates the output schema rather than revealing operational behavior like auth needs or rate limits, so the added value is moderate.

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 tight sentences, front-loaded with the resource being fetched, then the event categories, then the use cases. No filler, though the field list in sentence three is somewhat enumerative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value detail need not be spelled out, and annotations cover the safety profile, so the description is broadly complete for invocation. It could still better route the agent relative to the many nearby ownership tools, but nothing essential is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents ticker, days, and type. The description echoes the change-type categories (increases, decreases, initial, ceased) that map to the 'type' filter but adds no format or default guidance beyond the schema, making the 3 baseline appropriate.

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?

States a specific verb and resource ('Get substantial holder ownership change events') scoped to NZX companies, and the 'change events' framing implicitly distinguishes it from current-holder siblings like get_substantial_holders. However, it never names a sibling to make the distinction explicit, so it falls short of the top tier.

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?

'Use for monitoring institutional ownership shifts, activist accumulation, and divestment patterns' gives clear situational context for when to reach for this tool. It offers no explicit exclusions or named alternatives (e.g. when to prefer get_substantial_holders or get_substantial_holder_notices), so it stops 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.

get_substantial_holder_noticesB
Read-onlyIdempotent
Inspect

Get substantial holder notices (SPH) for an NZX company. 9,704 classified SHINTR announcements with holder name, type, percentage, direction (increase/decrease/initial/ceased), and fund manager cross-reference. Shows real-time ownership changes between semi-annual filings. Use for M&A tracking, activist detection, institutional ownership changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 50)
holderNoFilter by holder name (e.g. "BlackRock", "ACC")
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")
directionNoFilter by direction: increase, decrease, initial, ceased, change

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context that this surfaces 'real-time ownership changes between semi-annual filings,' but it omits practical traits such as pagination or coverage/rate limits, so it adds only moderate value beyond the annotations.

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 sentences, front-loaded with the core purpose and scope, with no real padding. The stat '9,704 classified SHINTR announcements' is slightly promotional but concisely conveys coverage, so the structure is efficient overall.

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 an output schema present and annotations covering the safety profile, return values and reversibility need not be explained. The main gap is unresolved disambiguation from the many ownership-related siblings, which an agent needs in order to call this tool correctly rather than a neighbor.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/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 3. The description echoes the updatable dimensions (holder name, direction values) but adds no filtering syntax or defaults beyond what the schema already documents, so it does not meaningfully extend parameter understanding.

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?

States a specific verb and resource ('Get substantial holder notices (SPH) for an NZX company') and enriches it with the underlying data ('9,704 classified SHINTR announcements with holder name, type, percentage, direction'). However, it does not distinguish this tool from near-identical siblings like get_substantial_holders and get_substantial_holder_changes, leaving an agent unsure which to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It offers use-case context ('Use for M&A tracking, activist detection, institutional ownership changes') but these are scenario hints, not selection guidance. It never says when to prefer this over get_substantial_holders or get_substantial_holder_changes, so routing between the three is left to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_substantial_holdersA
Read-onlyIdempotent
Inspect

Get substantial shareholders (5%+ voting rights) for an NZX company from NZX disclosure notices. ~267 records across ~85 issuers. Shows entity name, entity type (individual/company/trust/fund), voting rights percentage, shares held, whether they are also a director/executive, disclosure dates, and threshold crossing history. Use for block holder analysis, activist investor tracking, M&A signal detection (accumulation patterns), and ownership concentration analysis. Complements get_shareholders (top-20 annual report data) with legally mandated real-time disclosures.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol
include_ceasedNoSet to "true" to include former substantial holders who dropped below 5%

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is clear. The description adds valuable behavioral context: approximate dataset size (~267 records across ~85 issuers), the types of fields returned, and the fact that this is legally mandated disclosure data. No contradictions with annotations.

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 appropriately sized and front-loaded with the core purpose, followed by data contents, use cases, and a comparison with the sibling tool. Every sentence adds value, though it could be slightly tightened without losing meaning.

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 read-only tool with an output schema, the description is complete: it explains the data source, coverage, fields, use cases, and relationship to get_shareholders. The annotations cover idempotency and safety, and the schema covers both parameters, so nothing essential is missing for an agent to select and invoke the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, and both parameters are already described in the schema: ticker is an NZX ticker symbol, and include_ceased toggles former substantial holders. The description adds some related context about threshold crossing history but does not materially expand on parameter semantics beyond what the schema already provides.

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 verb ('Get'), a clear resource (substantial shareholders for an NZX company), and precise scope (5%+ voting rights from NZX disclosure notices). It also distinguishes itself from the closely related get_shareholders by noting the difference between legally mandated real-time disclosures and top-20 annual report data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit use cases (block holder analysis, activist investor tracking, M&A signal detection, ownership concentration analysis) and names get_shareholders as a complementary alternative. It clearly positions this tool as the real-time disclosure source versus annual report data, though it does not state an explicit 'when not to use' condition.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_succession_planB
Read-onlyIdempotent
Inspect

Get succession risk assessment for a company board — 5-factor risk model (chair tenure, board fragility, skills concentration, pipeline readiness, sector supply), tenure cohort analysis, skills single-point-of-failure detection, cliff risk, and ranked successor candidates. IOD-8 feature for board search firms and governance consultants.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered without the description's help. The text usefully adds the methodology behind the output (the five named risk factors, cohort analysis, single-point-of-failure detection), but says nothing about data recency, coverage universe limits, or cost/latency for what is evidently a heavy computed analysis.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, purpose and component list front-loaded in the first, audience scoping in the second. The parenthetical factor enumeration is dense but every item is a distinct analytic output, so nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-required-parameter read tool with an output schema and full annotations, the description is nearly sufficient: it conveys what is computed and for whom. The remaining gap is disambiguation from the several board-analytics siblings, which an agent would need to resolve before choosing this tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter (ticker) with 100% schema description coverage including NZX format examples, so the schema already carries the full burden. The description adds no syntax, format or constraint detail beyond it, which is the baseline-3 case for high-coverage schemas.

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?

States a specific verb (get) and resource (succession risk assessment for a company board) and enumerates the analytic components produced (5-factor model, tenure cohorts, cliff risk, ranked successors). It does not, however, distinguish itself from close siblings like get_board_pipeline, get_board_health_score or search_board_candidates, whose scope overlaps with 'pipeline readiness' and 'ranked successor candidates'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only routing signal is the audience tag 'IOD-8 feature for board search firms and governance consultants', which hints at context but never states when to call this versus alternatives. There is no when-to-use, when-not-to-use, or named alternative anywhere in the description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_takeover_probabilityA
Read-onlyIdempotent
Inspect

Get takeover probability score for an NZX company — 6-factor model (0-100) estimating acquisition likelihood based on undervaluation (PE below sector, P/B < 1, price vs 52w high), insider activity, board instability, governance weakness, capital structure, and historical M&A activity. Ratings: High (75-100), Elevated (50-74), Moderate (25-49), Low (0-24). Use when asked about "takeover target", "acquisition likelihood", "M&A probability", "could X be acquired".

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "RBD", "RAK", "NZM")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds substantive model behavior beyond that: the six input factors, the 0-100 scale, and the exact rating thresholds High/Elevated/Moderate/Low. It doesn't discuss data freshness, coverage limits, or caveats for thinly traded names.

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 purpose, then scale, then factor list, then usage triggers – a sensible information hierarchy with no filler sentences. The factor enumeration is dense but arguably earns its place by telling the agent what drives the score.

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?

An output schema exists, so return values need not be explained, and annotations carry the safety profile. For a single-parameter scoring tool, the description supplies everything an agent needs: what is computed, its range, interpretation bands, and when to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter and schema description coverage is 100%, so the schema fully documents the NZX ticker format with examples. The description restates 'for an NZX company' but adds no syntax or constraint detail beyond the schema, making the baseline 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ('Get takeover probability score for an NZX company') and immediately defines the artifact: a 6-factor 0-100 model with named factors and an explicit rating band scale. An agent can distinguish this from get_takeovers (historical deals) or get_activist_vulnerability without opening any schema.

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?

Gives concrete trigger phrasings ('takeover target', 'acquisition likelihood', 'M&A probability', 'could X be acquired'), which is strong positive routing. It stops short of naming adjacent siblings to exclude (e.g. get_takeovers for completed deals, get_deal_prediction), so the when-not-to-use case is left implicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_takeoversA
Read-onlyIdempotent
Inspect

Get M&A and takeover activity for an NZX company. Returns structured deal data: acquirer, target, offer price, total value, premium, acceptance %, status, timeline. Covers takeover offers, mergers, schemes of arrangement, compulsory acquisitions, and asset acquisitions. Use this when asked about "takeovers", "M&A", "acquisitions", "who is buying", "hostile bids", "scheme of arrangement", or deal activity for a company.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear or range (e.g. "2025" or "2020-2025")
limitNoMax results (default 50)
statusNoComma-separated: announced, conditional, unconditional, completed, withdrawn, failed
tickerYesNZX ticker symbol (e.g. "RBD", "RAK", "MCK")
deal_typeNoComma-separated: takeover_offer, merger, scheme_of_arrangement, compulsory_acquisition, acquisition

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it returns structured deal data with specific fields (acquirer, target, offer price, total value, premium, acceptance %, status, timeline) and enumerates the deal types included. It does not mention pagination or default limits, but the schema covers the limit parameter. This is solid value beyond annotations without contradicting them.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences with zero waste. The core purpose is front-loaded in the first sentence, the return structure in the second, and the usage triggers in the third. Every sentence earns its place, and the structure is easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, idempotent tool with a 100% schema-covered parameter set and an output schema, the description is nearly complete. It explains what the tool returns, which deal types are covered, and when to use it. The only minor gap is that it doesn't explicitly state the default limit or pagination behavior, but the schema's 'limit' parameter description covers the default, and the output schema handles return values. This is complete enough for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all five parameters. The description adds the deal-type taxonomy and the trigger phrases, which enrich understanding of the 'deal_type' and 'status' parameters, but it doesn't add syntax or format details beyond the schema. Baseline 3 is appropriate because the schema carries the heavy lifting and the description provides only marginal extra meaning.

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 verb ('Get'), a clear resource ('M&A and takeover activity for an NZX company'), and enumerates the exact deal types covered (takeover offers, mergers, schemes of arrangement, compulsory acquisitions, asset acquisitions). It also lists the structured fields returned, which distinguishes it from sibling tools like get_capital_raises or get_company_detail. The trigger phrases ('takeovers', 'M&A', 'acquisitions', 'hostile bids') further clarify scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit trigger phrases and a clear context ('when asked about...'), which tells an agent when to select this tool. It does not explicitly name sibling alternatives or state when NOT to use it, but the trigger list plus the deal-type enumeration gives strong usage guidance. A small gap: it doesn't contrast with get_capital_raises or get_company_detail, but the specificity of the trigger phrases largely compensates.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_team_membersA
Read-onlyIdempotent
Inspect

Get the list of team members for the authenticated user's team, including roles (admin/analyst/viewer), invite status, and join dates. Corporate tier only.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The annotations already declare readOnlyHint, idempotentHint, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds meaningful non-annotation context: the returned fields and the corporate-tier-only restriction. It stops short of describing pagination, freshness, or result limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two tight sentences: the first front-loads the action, resource, and returned data, and the second adds the eligibility constraint. Every clause earns its place with no redundancy.

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 zero-parameter read tool with an output schema and strong annotations, the description supplies the purpose, content scope, and tier restriction needed to invoke it correctly. Nothing material is missing from the description.

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?

The tool has zero parameters and 100% schema coverage, so there is nothing for the description to clarify beyond what the schema provides. Baseline 4 applies because no parameter-compensation is needed.

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?

"Get the list of team members for the authenticated user's team" is a specific verb+resource, and the description lists the returned dimensions (roles, invite status, join dates). The scoping to the authenticated user's team helps distinguish it from company-level people tools such as get_management_team, though no sibling alternative is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

"Corporate tier only" communicates an eligibility constraint, which is useful usage context. However, it does not explain when to use this tool instead of related people/status tools like get_management_team or get_people_profile, nor does it state exclusions beyond the tier gate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_technical_signalsA
Read-onlyIdempotent
Inspect

Get technical analysis indicators for an NZX company. SMA-50/100/200, RSI-14, golden/death cross, distance from 52-week high/low, volume ratios. Use for trading signals, momentum analysis, and technical screening.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "MEL")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds the list of computed indicators but does not disclose behavioral details such as data freshness, error cases, or dependency on historical data availability. This is adequate given the annotations, but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the action and resource, followed by a compact indicator list and clear use cases. Every sentence earns its place and there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one required parameter, a full output schema, and safety annotations, the description covers the essential decision points. It lacks explicit differentiation from the sibling tool get_market_signals, which is a minor gap, but overall the definition is complete enough for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single 'ticker' parameter is well-documented with examples. The description adds no extra parameter semantics beyond restating the NZX company context, so the baseline score of 3 is appropriate.

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 uses a specific verb ('get') and resource ('technical analysis indicators for an NZX company') and enumerates concrete indicator types, making the tool's purpose immediately clear. It does not explicitly contrast itself with sibling tools like get_market_signals, but the detailed indicator list provides enough specificity to identify what this tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives explicit use cases: 'trading signals, momentum analysis, and technical screening.' This tells an agent when to select the tool, though it does not mention when not to use it or name alternatives, so it falls just 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.

get_transcript_diffsA
Read-onlyIdempotent
Inspect

Compare earnings presentation transcripts across periods for a company. Returns language diffs, tone shifts (optimistic/cautious/defensive), and sentiment changes between consecutive presentations. Use when asked about management language changes, tone shifts, how earnings presentations have changed, or credibility tracking.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, closed-world, and non-destructive behavior, so the safety profile is covered. The description adds useful scope detail ('between consecutive presentations') and characterizes the diff dimensions, though the output schema already carries the return structure, so this is additive rather than essential.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with the core action ('Compare... across periods') followed by output scope and activation cues. Every clause carries information; no filler or repetition of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a rich annotation set and a present output schema, the description need only cover purpose, scope, and when-to-use, which it does. The one gap is absence of sibling disambiguation, which matters given the dense cluster of language/narrative tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% – the single 'ticker' parameter is documented in-schema as an NZX symbol with an example. The description adds no syntax, format, or constraint beyond that, so the schema does the heavy lifting and baseline 3 applies.

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 states a specific verb and resource: 'Compare earnings presentation transcripts across periods,' and enumerates the output categories (language diffs, tone shifts, sentiment changes). It is clearly not a tautology. However, it does not distinguish itself from plausibly overlapping siblings such as get_section_evolution, get_narrative_tracker, or get_disclosure_language, which map to similar language-change concepts.

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 triggering contexts: 'Use when asked about management language changes, tone shifts, how earnings presentations have changed, or credibility tracking.' This is clear context for activation, but there is no when-not guidance and no named alternative among the many language/narrative siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_volume_anomaliesA
Read-onlyIdempotent
Inspect

Get volume anomaly detection for NZX stocks. Uses z-score analysis on daily OHLCV data to identify three types of unusual volume: spikes (single day z-score > threshold), clusters (3+ days of >2x avg volume in 7-day window), and price-volume divergences (big volume + small price move). Cross-references announcements within 5 trading days. Especially valuable on the thin NZX market where even modest institutional flows create detectable anomalies. Use when the user asks about unusual volume, trading activity, accumulation, distribution, or pre-announcement patterns.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to scan (default: 30, max: 365)
tickerNoOptional NZX ticker symbol to filter (e.g. "FPH"). Omit for all tickers.
min_zscoreNoMinimum z-score threshold (default: 2.0)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds real behavioral context beyond that: the three detection rules, the 7-day cluster window, the 5-trading-day announcement cross-reference, and the note that thin NZX liquidity makes it especially sensitive. It does not describe pagination or limits, keeping it at 4.

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?

Purpose is front-loaded in the first sentence, followed by methodology, then usage triggers. It is dense and every sentence contributes, though the anomaly-type enumeration and market-context sentences make it longer than strictly necessary.

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?

With an output schema present, return values need not be re-explained, and annotations cover the safety profile. Given the 100% parameter coverage, the description supplies the remaining needs: detection methodology, cross-referencing behavior, and when to invoke it. Nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so days, ticker, and min_zscore are fully documented (including defaults and max). The description explains the threshold concept ('z-score > threshold') but adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (detect) and resource (volume anomalies) plus the exact methodology (z-score on daily OHLCV) and the three anomaly subtypes it returns. This clearly differentiates it from generic siblings like get_anomalies or get_technical_signals without needing to open a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives explicit user-intent triggers ('unusual volume, trading activity, accumulation, distribution, or pre-announcement patterns'), which is strong usage guidance. It stops short of naming alternatives or when-not-to-use conditions against similar siblings such as get_anomalies or get_market_signals.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_vote_historyA
Read-onlyIdempotent
Inspect

Get historical voting analytics showing how different fund managers voted on the same NZX resolutions. Cross-fund comparison with dissent rates, management alignment, and vote change tracking. Use when asked about historical voting patterns, fund voting comparison, dissent analysis, or how funds voted on a company. Corporate tier required.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoYear to filter by, e.g. 2025 (optional)
tickerNoNZX ticker symbol to filter by (optional)
dissent_onlyNoIf true, only return resolutions where funds disagreed or voted against management

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile needs no restating. The description does add two real pieces of behavioral context: the 'Corporate tier required' entitlement gate and the shape of the analytical output (dissent rates, management alignment, vote change tracking). That is useful but thin for a read tool whose behavior is otherwise fully covered by annotations.

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 sentences, no filler, and the core capability is front-loaded before the usage triggers and the tier requirement. Slightly dense with three enumerated capability lists, but every clause carries information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 not be explained, and the annotations cover the safety profile. The description adds the missing operational piece — the corporate-tier entitlement requirement. Only the lack of pagination/history-depth guidance and explicit sibling routing leaves a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three optional filters (year, ticker, dissent_only) are already documented in the schema. The description implies the dissent-filtering concept but adds no format, default, or interaction detail beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

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 states a specific verb and resource (historical voting analytics) and pins down the scope: how different fund managers voted on the same NZX resolutions, with cross-fund comparison. It is clearly distinguishable from general governance siblings conceptually, though it never names the closest sibling (get_fund_votes) to draw an explicit boundary.

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 usage triggers — historical voting patterns, fund voting comparison, dissent analysis, how funds voted on a company — which maps cleanly onto realistic user intents. It stops short of naming an alternative tool or stating when NOT to use it, so it is clear context without exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_watchlistsA
Read-onlyIdempotent
Inspect

Get the authenticated user's watchlists. Returns list of watchlists with names and tickers. Use when asked about their watchlist, tracked companies, or which companies they follow.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety and idempotency are covered structurally. The description adds only that results are scoped to the authenticated user and contain names and tickers, which is modest added context rather than behavioural depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three short sentences with no filler: purpose, return shape, then usage trigger. The most decision-relevant information is front-loaded.

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?

An output schema exists, so return values need no elaboration, and annotations carry the safety profile. With no parameters and a narrow, well-scoped purpose, the description is complete for correct invocation.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is nothing for the description to disambiguate, and it correctly avoids inventing parameter details.

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 states a specific verb and resource ('Get the authenticated user's watchlists') and even names the returned fields (names and tickers), so the agent knows exactly what it retrieves. It does not, however, explicitly differentiate itself from near neighbours such as get_my_portfolio, so it falls short of the 5 bar.

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 clear usage context — 'Use when asked about their watchlist, tracked companies, or which companies they follow' — which maps user intents to this tool. There is no statement of when NOT to use it or which sibling to prefer instead, so no explicit alternatives are offered.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_alert_subscriptionsA
Read-onlyIdempotent
Inspect

List all alert subscriptions for the authenticated user. Each subscription filters market signals and anomalies by tickers, sectors, signal types (insider_trade, capital_raise, dividend, earnings, agm_result, director_change, grs_change, technical_signal, credit_rating, audit_change, takeover, board_event, composite_signal), anomaly categories, and severity levels — then delivers via webhook, email, Slack, or Teams. Use when asked about alert subscriptions, webhook alerts, or notification settings. Corporate tier required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish read-only, idempotent, non-destructive behavior, so the bar is lower, and the description still adds real value: it discloses the "Corporate tier required" authorization gate and enumerates the delivery channels (webhook, email, Slack, Teams). It does not discuss result volume or limits for a "list all" call.

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 first sentence front-loads the core action, followed by filter/delivery context, usage triggers, and the tier gate in a logical order. The 13-value signal-type enumeration is lengthy and arguably belongs in the output schema, but it is scannable and informative.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 no explanation, and the description covers scope, filter dimensions, delivery targets, usage triggers, and the tier requirement. It lacks only guidance on volume/pagination for a bulk listing, which is a minor omission for this simple zero-parameter read.

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?

The tool takes zero parameters, so the baseline is 4. The description's enumeration of signal types, anomaly categories, and severity levels describes the shape of returned subscriptions rather than inputs, and is not misleading in any way.

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?

States a specific verb and resource ("List all alert subscriptions for the authenticated user") and explains what a subscription actually holds, so the agent knows this returns configuration objects rather than market data. It does not name or differentiate itself from the sibling write-side tools (subscribe_insider_alerts, subscribe_people_alerts), which is the only gap.

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?

"Use when asked about alert subscriptions, webhook alerts, or notification settings" gives three concrete trigger phrases, which is clear usage context. It stops short of stating when NOT to use it or pointing to the subscribe_* siblings for creating/modifying subscriptions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_engagement_logA
Read-onlyIdempotent
Inspect

List stewardship engagement log entries for a company. Returns conversations, contacts, topics, outcomes, escalation status, and linked voting decisions. Use when asked about engagement history, stewardship conversations, NZ Stewardship Code Principle 4, or how a company was engaged before voting. Corporate tier required.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. AIR, FPH)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so safety is covered. The description adds genuinely new operational context, namely the 'Corporate tier required' entitlement gate, which an agent needs before attempting the call.

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 front-loaded sentences with the action first, usage second, and the tier constraint last; nothing is wasted. The enumerated return fields partially duplicate the output schema, which keeps it just short of ideal conciseness.

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?

With an output schema present, return values need not be explained, yet the description confirms the payload shape, supplies trigger contexts, and adds the Corporate tier prerequisite. An agent has everything required to decide and call correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage (NZX ticker with examples AIR, FPH), so the schema fully documents it. The description says 'for a company' but adds no format or identifier detail beyond the schema, which is the expected baseline-3 outcome.

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?

States a specific verb and resource ('List stewardship engagement log entries for a company') and enumerates the returned content, so the agent knows exactly what corpus this draws from. It implicitly differentiates from stewardship-report siblings (get_stewardship_report, list_stewardship_reports) via the 'engagement log' scope, but never names them, so a 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.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit trigger contexts ('engagement history', 'stewardship conversations', 'NZ Stewardship Code Principle 4', 'how a company was engaged before voting'), which is stronger than implied usage. It offers no when-not guidance or named alternative for overlapping stewardship tools, 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.

list_stewardship_reportsA
Read-onlyIdempotent
Inspect

List FMA-compliant stewardship/voting-record reports for the current user. Returns report summaries with vote counts, compliance rates, and period dates. Use when asked about stewardship reports, voting records, FMA compliance reports, or fund manager voting history. Corporate tier required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly/idempotent/non-destructive behavior, so the bar is lower. The description adds genuinely non-structured context: it returns summaries (vote counts, compliance rates, period dates) and requires a corporate tier, which is an access precondition an agent must know before calling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Four short sentences, front-loaded with the action and scope, then returns, then triggers, then the tier gate. No filler or restated boilerplate.

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?

Output schema exists so return values need no elaboration, and the description still covers scope, content summary, triggers, and the corporate-tier requirement. 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.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so per the calibration baseline is 4. The description adds no parameter information because none exists to describe.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) plus resource (FMA-compliant stewardship/voting-record reports) and scopes it to the current user. Distinguishable from the singular get_stewardship_report and from get_fund_votes/get_vote_history at the sibling level.

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?

Explicit trigger phrases ('Use when asked about stewardship reports, voting records, FMA compliance reports, or fund manager voting history') give an agent clear routing context. It does not name the singular get_stewardship_report as the alternative for a single-report lookup, so it stops short of full when/when-not guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_voting_policiesA
Read-onlyIdempotent
Inspect

List all custom voting policies for the current user. Each policy defines threshold overrides for the proxy advisory engine (board independence, remuneration caps, tenure limits, gender diversity, etc.). Use when asked about voting policies, proxy policy settings, or governance thresholds. Corporate tier required.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint=false. The description adds a significant entitlement requirement ('Corporate tier required') and describes the domain content of policies, which is useful behavioral context beyond the structured annotations. No behavioral traits are contradicted.

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 four sentences, front-loaded with the core purpose. The parenthetical list of example thresholds adds helpful context without excessive length. It is appropriately sized for a simple list tool.

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 an output schema exists, the description need not explain return values. It covers what the tool does, when to use it, and a key prerequisite. Nothing essential for calling the tool is missing.

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 parameters, so the baseline is 4. The description does not need to add parameter detail and appropriately focuses on the resource.

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 states a specific verb ('List') and resource ('custom voting policies for the current user'), and adds scope by describing what a policy contains (threshold overrides for board independence, remuneration caps, tenure limits, gender diversity, etc.). It does not explicitly differentiate from siblings like check_governance_policy, but the resource is distinct enough to be identifiable.

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?

Explicitly states when to use: 'Use when asked about voting policies, proxy policy settings, or governance thresholds.' It also provides a prerequisite ('Corporate tier required'). No alternatives are named, but for a unique list tool the guidance is clear and sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

predict_agm_outcomeA
Read-onlyIdempotent
Inspect

Predict the outcome of AGM resolutions for an NZX company. Uses historical voting patterns, fund manager voting records (NZ Super, Fisher, Devon, Harbour, Milford), ownership composition, and governance context. Returns predicted support %, swing voters, risk factors, and historical comparisons. Pure computation, $0 cost. Useful for proxy advisors, companies planning contentious resolutions, and institutional investors.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoOptional meeting year to predict (defaults to latest)
tickerYesNZX ticker symbol (e.g. "AIR", "FPH")
resolution_typeNoOptional resolution category filter: director_election, remuneration, auditor, capital_management, constitution, related_party, shareholder_proposal

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=false, and destructiveHint=false, so the safety profile is covered. The description adds useful behavioral context beyond that, specifically 'Pure computation, $0 cost' and the data sources used. It stops short of disclosing accuracy, confidence, or prediction limits.

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?

Four sentences, front-loaded with the purpose, then data sources, return values, cost, and audience. The return-value sentence is somewhat redundant because an output schema exists, but the description remains efficient and every other sentence earns its place.

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 complex prediction tool, the description covers purpose, data sources, outputs, cost, and audience, while annotations cover safety and the output schema covers return structure. Nothing essential for correct invocation is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents ticker, year, and resolution_type. The description adds no parameter-level meaning beyond implying an NZX company ticker and resolution scope. Baseline 3 is appropriate when structured schema already carries parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Predict') and resource ('outcome of AGM resolutions for an NZX company'), and distinguishes itself from retrieval siblings by calling itself 'Pure computation' and naming prediction outputs like 'predicted support %, swing voters'. An agent can tell what it does 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Names target users ('proxy advisors, companies planning contentious resolutions, and institutional investors'), which implies a usage context. However, it never explicitly says when to choose this tool over alternatives such as get_vote_history or get_agm_resolutions, and there are no exclusions or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_announcementA
Read-onlyIdempotent
Inspect

Read and analyze a specific NZX announcement. Extracts summary, key figures, sentiment, entities, and risk flags using AI. Provide the announcement_id (e.g. "12345") from search_announcements results. Returns cached results if previously extracted.

ParametersJSON Schema
NameRequiredDescriptionDefault
announcement_idYesThe announcement_id from search_announcements results

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this as read-only, idempotent, and non-destructive. The description adds meaningful behavioral details beyond these hints: it performs AI-based extraction of summary, sentiment, entities, and risk flags, and it may return cached results. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences with no filler. The purpose is front-loaded, followed by the key behavioral details (AI extraction, cache behavior) and parameter sourcing. Every sentence earns its place.

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 single-parameter read-only tool with a rich output schema, the description covers what the tool does, how to obtain the required input, and the main behavioral nuance (caching). Nothing material is missing for correct invocation.

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 100% and the schema already documents the announcement_id parameter. The description adds value by specifying the source of the ID (search_announcements results) and providing a concrete example ('12345'), which helps the agent supply a correctly scoped value.

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 uses a specific verb-resource pair ('Read and analyze a specific NZX announcement') and clearly distinguishes this from the sibling search_announcements tool by focusing on analysis of a single existing announcement. The listed outputs (summary, key figures, sentiment, entities, risk flags) make the tool's purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly instructs the agent to obtain the announcement_id from search_announcements results, which establishes the intended workflow and dependency. It does not explicitly state when not to use this tool versus the sibling get_* tools, but the guidance is clear enough for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_annual_report_sectionA
Read-onlyIdempotent
Inspect

Read a specific section of an NZX company annual report. Returns the full markdown text of a section (e.g. "governance", "financial statements", "chairman's report"). If no section specified, returns table of contents with previews of each section. Use when asked to read, quote, or summarise a specific part of an annual report.

ParametersJSON Schema
NameRequiredDescriptionDefault
yearNoFinancial year (e.g. "2025"). Defaults to latest.
tickerYesNZX ticker symbol (e.g. "AIR", "FPH")
sectionNoSection name to read (e.g. "governance", "financial statements", "risk management"). Fuzzy matched. Omit to get TOC.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive and closed-world, so safety is covered. The description adds genuinely new behavior: it returns full markdown text of a section, and with no section argument it switches modes to return a table of contents with previews. It does not cover fuzzy-match failure or missing-section behavior.

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 tight sentences: purpose, output/fallback behavior, then usage trigger — correctly front-loaded with no filler. The third sentence slightly reprises the opening verb phrase, which is the only minor redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 detailed, and annotations carry the safety profile; the description still supplies the dual-mode behavior that is not visible in the schema. Minor gaps remain around invalid/ambiguous section names and how to discover valid section names, but nothing essential to calling it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the schema already documents year defaults, ticker format, and that section is fuzzy matched and optional ("Omit to get TOC"). The description's section examples and omit-behavior duplicate what the schema states, adding little semantics beyond it, so the baseline 3 applies.

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?

States a specific verb and resource ("Read a specific section of an NZX company annual report") and clarifies the unit of retrieval (markdown text of one section), which separates it from report-listing siblings like get_annual_reports and from analysis siblings like get_annual_report_quality. It never names an alternative tool, so differentiation is implied by scope rather than stated.

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?

"Use when asked to read, quote, or summarise a specific part of an annual report" gives a clear positive trigger, and the fallback sentence tells the agent what happens when no section is given. There is no explicit when-not guidance or routing to a discovery tool for finding tickers/years, 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.

screen_stocksA
Read-onlyIdempotent
Inspect

Screen NZX stocks across 87+ metrics — financials, valuation, technical signals, governance, insider activity. Supports smart presets (value, growth, quality, oversold, golden_cross, etc.), custom filters (e.g. filter=pe_ratio<15,rsi_14<30), sorting by any metric, and sector filtering. Use this for screening questions like "show me oversold stocks" or "value stocks with high dividends". ROUTING: use this only to FILTER a universe of companies down to a list. It is not the source for one company's figures — for executive or director pay prefer get_executive_compensation or get_remuneration, and for a named company's metrics prefer that company's own tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch by company name or ticker
sortNoSort by any metric (e.g. "rsi_14", "pe_ratio", "dividend_yield", "grs_score", "return_1y")
limitNoMax results (default 50, max 500)
orderNoSort direction: "asc" or "desc" (default "desc")
filterNoCustom metric filters, comma-separated. Format: metric>value or metric<value. Examples: "pe_ratio<15,dividend_yield>3", "rsi_14<30", "grs_score>70,roe>15"
presetNoSmart preset: value, growth, quality, dividend_risk, insider_buying, capital_raise, ceo_pay_failure, governance_laggards, oversold, overbought, golden_cross, below_200ma, dividend_aristocrats, low_volatility, turnaround, small_cap_gems, death_cross, income_portfolio, conservative_growth, esg_compliant
sectorNoFilter by sector (e.g. "Energy", "Healthcare", "Utilities")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description's added behavioral context is thin: it clarifies the tool operates over a universe rather than a single entity, but says nothing about result pagination behavior, filter combination semantics (AND vs OR), or cost/latency beyond what the schema already implies.

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 core capability, then capabilities, then routing caveats. The long preset enumeration and duplicated filter example are somewhat redundant given the schema, but every sentence is functional and the routing block earns its space.

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?

An output schema exists, so return values need not be described. For a 7-parameter, zero-required screening tool, the definition supplies the universe scope, capability surface, routing exclusions and invocation examples needed to call it correctly; nothing material is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the schema already lists the preset values, filter syntax, sort examples and limit bounds. The description restates the same preset list and the same filter example ('pe_ratio<15,rsi_14<30'), so it adds little semantic value beyond the structured fields; baseline 3 applies.

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?

Specific verb+resource+scope: 'Screen NZX stocks across 87+ metrics' with an enumerated domain (financials, valuation, technical, governance, insider activity). The ROUTING paragraph explicitly separates it from dataset siblings like get_executive_compensation and get_remuneration, so an agent can discriminate 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.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicit when-to-use is given with concrete query examples ('show me oversold stocks', 'value stocks with high dividends'), plus a when-NOT-to-use rule ('use this only to FILTER a universe... not the source for one company's figures') and named alternatives for the excluded cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_announcementsA
Read-onlyIdempotent
Inspect

Full-text search across NZX market announcements (2017-present), most with extracted PDF text. Searches announcement titles AND full document content. Use for finding mentions of specific topics, companies, people, or events across all NZX filings. Results include: ai_category (25-category AI classification like M&A, Dividend, Regulatory, Capital Raise, Guidance, Earnings Results), ai_category_confidence (0.0-1.0), ai_sub_topics (1-3 topic tags). May also include: ai_sentiment (positive/negative/neutral/mixed), ai_sentiment_score (-1.0 to 1.0), ai_topics (array of topic labels), ai_risk_flags (array of risk indicators like profit_warning, dividend_cut), and ai_summary (concise summary).

ParametersJSON Schema
NameRequiredDescriptionDefault
qNoSearch query — searches both titles and full PDF document text
toNoEnd date (YYYY-MM-DD)
fromNoStart date (YYYY-MM-DD)
typeNoAnnouncement type: FLLYR, HALFYR, SHINTR, MEETING, GENERAL, SECISSUE, DVDEND, etc.
limitNoMax results (default 20)
tickerNoFilter by company ticker

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond the annotations: it notes the search covers 2017-present, that most announcements have extracted PDF text (implying some may not be searchable), and that certain AI fields like ai_sentiment are optional ('May also include'). This discloses variability in results and search coverage. It does not contradict any annotations, and the readOnlyHint is consistent with a search operation.

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 well-structured and front-loaded: it starts with the core function and scope, then provides usage guidance, and finally enumerates the AI-annotated result fields. It is slightly longer than necessary but every sentence conveys relevant information, and it avoids redundancy with the schema. The organization makes it easy for an agent to quickly grasp the tool's purpose and expected outputs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with six optional parameters and an output schema (which exists but isn't shown), the description covers the key contextual aspects: search scope, date range, and the variety of AI fields returned. It explains that some fields are conditional ('May also include'), which is important for interpreting results. While it doesn't address pagination or error handling, the presence of an output schema reduces the burden on the description, and the overall coverage is sufficient for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides complete descriptions for all six parameters (100% coverage), including details like 'searches both titles and full PDF document text' for the query parameter. The tool description itself does not add further parameter-specific semantics beyond what the schema already states. With full schema coverage, a baseline of 3 is appropriate; the description's focus on result fields is useful context but does not enhance parameter understanding.

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 clearly states the tool performs full-text search across NZX market announcements, specifically searching both titles and full document content. It distinguishes itself from siblings like read_announcement (fetching a specific announcement) and search_companies (searching companies) by emphasizing cross-filing content search. The date range and AI classification outputs further clarify its unique role.

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 explicitly states the intended use: 'Use for finding mentions of specific topics, companies, people, or events across all NZX filings.' This gives clear context, though it doesn't explicitly state when NOT to use it or mention alternative tools. The guidance is strong but could be more explicit about exclusions, such as not using it for fetching a single known announcement.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_board_candidatesA
Read-onlyIdempotent
Inspect

Search across NZX directors AND 500+ executives for board/leadership candidates. Filter by skills (12 categories), sector, gender, board load, experience type (board/executive/both), fee range, and keyword (searches bios & career history). Returns ranked candidates with match scores, cross-platform experience (charity/iwi/public sector roles), career highlights, and executive roles. IoD-equivalent director search.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 20)
genderNoGender filter (male/female)
sectorNoSector experience filter (e.g. "Financials", "Health Care")
skillsNoComma-separated skills: financial, strategy, technology, governance, risk_management, legal_compliance, hr_remuneration, sustainability, international, industry_knowledge, stakeholder_relations, digital
keywordNoFree-text search on bios/career history (e.g. "Fonterra", "agriculture", "PwC")
max_feeNoMax average board fee (NZD)
min_feeNoMin average board fee (NZD)
max_boardsNoMax current board seats
available_onlyNoOnly candidates with ≤2 boards
exclude_tickerNoExclude candidates on this company
experience_typeNoCandidate type: board (directors only), executive (execs only), both (default)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare this a safe, idempotent, closed-world read, so the bar is lower; the description still adds useful behavioral context about search surface (bios, career history, cross-platform charity/iwi/public-sector roles) and what ranking signals drive eligibility. It stops short of anything about pagination or how match scores are computed.

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 front-loaded sentences: the search scope leads, the filter dimensions follow, and the return shape closes. Dense but nearly every clause carries information; the trailing 'IoD-equivalent' tag is the only near-redundant flourish.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For an 11-parameter, all-optional screening tool with an output schema and full schema coverage, the description covers scope, filters, and result character adequately. The main gap is the absence of guidance on how to choose between 11 optional filters or what happens with no filters applied.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/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 3. The description largely restates the schema's filter list (skills, sector, gender, fees, experience_type, keyword) with only marginal added meaning, such as clarifying that 'board load' means board seats and that keyword searches bios and career history.

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?

Names a specific verb (search) and resource (NZX directors + 500+ executives) plus the scoping intent (board/leadership candidates), and adds a domain anchor ('IoD-equivalent director search'). An agent can distinguish this from siblings like get_directors, get_board_pipeline, or get_board_vacancies 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its usage context (sourcing board/leadership candidates) and lists the filter dimensions, but never states when to use this over get_directors, get_board_pipeline, or search_skills_taxonomy, nor any prerequisites or exclusions. Usage must be inferred from the filter list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_companiesA
Read-onlyIdempotent
Inspect

Search NZX-listed companies by name or ticker. Returns company list with sector, market cap. Use this to find a company ticker before calling other tools. ROUTING: a lookup step, not an answer. After resolving the ticker, CALL THE TOOL THAT ANSWERS THE QUESTION — e.g. get_credit_ratings for ratings, get_executive_compensation for pay. Do not stop after searching.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMax results (default 10)
searchNoCompany name or ticker to search for (e.g. "air new zealand" or "AIR")
sectorNoFilter by sector (e.g. "Energy", "Healthcare")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds that it returns a list with sector and market cap and emphasizes it is not an answer-producing tool. It does not mention pagination or limit behavior, but given the annotation coverage, the added routing context justifies a 4.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two concise sentences plus a clear ROUTING directive. It front-loads the purpose and then gives actionable routing. No wasted words; every sentence earns its place.

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 the tool has only 3 optional parameters, an output schema, and annotations covering read-only/idempotent behavior, the description fully covers what an agent needs: how to use it, what it returns, and how to proceed after searching. The routing guidance is especially valuable given the large sibling set.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% — every parameter (limit, search, sector) has a description. The tool description does not add extra parameter-level meaning; it only restates search by name or ticker, which is already in the schema. Baseline of 3 is appropriate since schema handles parameter documentation.

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 verb ('Search') and resource ('NZX-listed companies') with clear scope (by name or ticker) and output (list with sector, market cap). It distinguishes itself from the many get_* siblings by framing itself as the lookup step.

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?

Explicitly instructs when to use: 'Use this to find a company ticker before calling other tools.' Provides routing: 'a lookup step, not an answer' and names specific alternatives (get_credit_ratings, get_executive_compensation) plus the warning 'Do not stop after searching.' No ambiguity about how it fits among siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_semanticA
Read-onlyIdempotent
Inspect

Hybrid semantic + keyword search across NZX announcements. Uses AI embeddings to find conceptually related filings, even if exact keywords differ. Better than search_announcements for: vague queries ("companies discussing AI strategy"), conceptual searches ("climate risk disclosures"), finding similar announcements, and queries where exact keyword matches miss relevant results. Combines BM25 keyword matching with vector similarity and Cohere reranking for best results.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesNatural language search query (e.g. "companies discussing supply chain disruption")
toNoEnd date (YYYY-MM-DD)
fromNoStart date (YYYY-MM-DD)
typeNoAnnouncement type filter
limitNoMax results (default 10)
tickerNoFilter by company ticker

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare read-only, idempotent, non-destructive behavior, so the description is not required to cover the safety profile. It does add useful mechanism context (BM25 keyword matching + vector similarity + Cohere reranking), which explains why results may differ from a literal keyword search, though it omits latency/rate-limit or result-cap behavior.

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?

Purpose and differentiator are front-loaded, and the comparative list maps directly to routing decisions. The closing sentence on BM25/reranking is implementation detail that is slightly less essential for an agent, keeping it just short of a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return-value documentation is unnecessary, and all six parameters are covered by the schema. The description supplies routing guidance and search semantics; only minor operational details (pagination/results behavior, latency) are absent, which is a small gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter's meaning is already documented in the schema. The description adds only a conceptual example query, no extra syntax or format guidance beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('hybrid semantic + keyword search across NZX announcements') and immediately distinguishes itself from the sibling search_announcements by naming it. An agent can tell the two apart without opening either schema.

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?

Explicitly enumerates when this tool wins: vague queries, conceptual searches, similarity lookups, and cases where exact keyword matches miss. It names the alternative (search_announcements) and the condition that selects it, leaving nothing to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_skills_taxonomyA
Read-onlyIdempotent
Inspect

Search the ESCO-aligned skills taxonomy to find matching director skill categories. Use when user asks "find directors with cybersecurity skills", "who has M&A experience?", "Te Tiriti governance expertise", or any skill-related director search. Maps free-text queries to NZXplorer's 12 skill categories with 68 sub-skills.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSkill search query (e.g., "cybersecurity", "M&A", "Te Tiriti")
modeNo"resolve" (category matches, default), "search" (sub-skill matches), "taxonomy" (full summary)
limitNoMax results (default 20)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint=false and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds useful domain behavior (free-text queries are mapped onto 12 categories rather than returned verbatim), but says nothing about match scoring, empty results, or pagination beyond what the schema states.

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 tightly packed sentences with the core action front-loaded and the trigger examples immediately after. The three quoted example queries are somewhat redundant with each other, using a bit more space than needed, but nothing is wasted filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and all parameters documented in-schema, the description only needs to carry purpose and usage, both of which it does well. It could still clarify how results relate to director records versus the taxonomy itself, but it is sufficient to call the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and all three parameters (q, mode, limit) are already documented in the schema, including the resolve/search/taxonomy mode meanings. The description's taxonomy-mapping sentence lightly corroborates the q/mode semantics but adds no format or syntax detail beyond the schema, so the baseline 3 applies.

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?

States a specific verb (Search) plus a precisely scoped resource (ESCO-aligned skills taxonomy) and quantifies the space (12 categories, 68 sub-skills). It is clearly distinct from adjacent tools like get_board_skills_matrix or search_board_candidates, but it never names or contrasts those siblings explicitly.

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?

Provides concrete trigger phrases ("find directors with cybersecurity skills", "who has M&A experience?", "Te Tiriti governance expertise") plus a catch-all "any skill-related director search", which tells the agent exactly when to reach for it. It stops short of naming alternatives or exclusions, so it is context-rich but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_eventA
Read-onlyIdempotent
Inspect

Simulate a hypothetical event on an NZX company and estimate its impact on share price, revenue, governance, and stakeholders. Event types: ceo_departure, ocr_change, major_customer_loss, dividend_cut, earnings_miss, acquisition, regulatory_action, director_resignation, capital_raise, credit_downgrade. Uses actual company financial data and NZX historical precedents. Pure computation, $0 cost.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "AIR", "FPH", "SPK")
event_typeYesType of event to simulate: ceo_departure, ocr_change, major_customer_loss, dividend_cut, earnings_miss, acquisition, regulatory_action, director_resignation, capital_raise, credit_downgrade
ocr_changeNoFor ocr_change events: basis point change (e.g. -25 for a 25bp cut, +50 for a 50bp hike)
customer_nameNoFor major_customer_loss events: name of the customer being lost

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior. The description adds genuinely new context beyond them: it discloses the data basis ('actual company financial data and NZX historical precedents') and the cost profile ('Pure computation, $0 cost'). It stops short of stating limitations or accuracy caveats, so not a 5.

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 front-loaded sentences with the core purpose first, then event types, then data/cost notes. Efficient overall, though the event-type list duplicates the schema's enum text and slightly inflates the middle sentence.

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?

An output schema exists, so return values need no explanation, and annotations cover the safety profile. The description supplies what remains: scope, supported event types, data source, and cost, leaving no critical gap for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents ticker, event_type, ocr_change, and customer_name. The description restates the event-type list but adds no syntax or format detail (e.g., bp convention) beyond the schema. Baseline 3 applies when the schema does the heavy lifting.

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?

Specific verb (simulate) plus resource (hypothetical event on an NZX company) and a concrete list of outputs (share price, revenue, governance, stakeholders). The enumerated event types and the sibling simulate_investor_qa make the boundary clear, so an agent can distinguish it 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The event-type list implies the kinds of scenarios it covers, but the description never states when to pick this over related siblings like get_dividend_cut_probability, get_takeover_probability, or get_dividend_stress_test, nor any prerequisites. Usage is inferable but not guided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

simulate_investor_qaA
Read-onlyIdempotent
Inspect

Generate 10 tough investor questions for an NZX company with data-backed suggested responses. Simulates the hardest questions IR teams will face on investor calls or roadshows. Uses earnings intelligence, management credibility, peer comparison, insider activity, governance, and sentiment data. Categories: financial_performance, governance, strategy, capital_allocation, risk, valuation, insider_activity, guidance, peer_comparison, esg. Each question rated by difficulty (standard/tough/hostile) and risk level. ~$0.01-0.03/call.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickerYesNZX ticker symbol (e.g. "FPH", "AIR", "SPK")

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover safety traits: readOnlyHint=true, idempotentHint=true, destructiveHint=false. The description adds valuable behavioral context beyond annotations: it promises exactly 10 questions, lists data sources, defines difficulty tiers (standard/tough/hostile) and risk levels, and states a cost range of ~$0.01-0.03/call.

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 core purpose and then supplies supporting detail. The category list is somewhat long but useful for understanding output scope; overall it is dense without being rambling.

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?

An output schema exists, so return values need not be explained. Given the read-only annotations and the rich schema, the description covers scope, data sources, output volume, difficulty/risk ratings, and cost, leaving no critical gaps for invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the only parameter (ticker) is fully documented in the schema with examples. The description adds no parameter-level syntax, format, or constraints beyond what the schema already provides, so the baseline of 3 applies.

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 states a specific verb and resource: 'Generate 10 tough investor questions for an NZX company with data-backed suggested responses.' It clearly distinguishes the output from generic Q&A or research tools by specifying simulated investor questions, but it does not explicitly name sibling alternatives like get_deep_research_qa or simulate_event.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage context is implied by 'investor calls or roadshows,' which suggests when an IR team would use it. There is no explicit when-to-use versus alternatives, no exclusions, and no routing to sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscribe_insider_alertsB
Read-onlyIdempotent
Inspect

Create an insider trading alert subscription. Monitors insider trades (director share transactions) for specified tickers and delivers notifications via email, webhook, Slack, or Teams. Supports filtering by minimum trade value and trade types (Buy, Sell, Exercise, Transfer). Use when asked to set up insider trade alerts, watch for director buying/selling, or monitor insider activity.

ParametersJSON Schema
NameRequiredDescriptionDefault
nameNoFriendly name for this alert subscription (default: "Insider Trade Alerts")
tickersNoNZX ticker symbols to watch (e.g. ["AIR", "FPH"]). Empty array = all companies.
min_valueNoMinimum trade value in NZD to trigger alert (e.g. 10000)
trade_typesNoTrade types to watch: Buy, Sell, Exercise, Transfer, Other
email_addressYesEmail address for delivery (required if delivery_method is email)
delivery_methodNoDelivery method: email, webhook, slack, or teams (default: email)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.3/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description opens with 'Create an insider trading alert subscription,' which is a state-changing write, while annotations declare readOnlyHint=true. This is a direct conflict about whether the tool modifies its environment (the calibration treats 'creates' + readOnlyHint=true as a contradiction). The delivery-channel details are useful, but the core behavioral claim contradicts the structured annotation.

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?

Four sentences, front-loaded with the core purpose and reasonably compact. The final clause ('set up insider trade alerts, watch for director buying/selling, or monitor insider activity') is somewhat repetitive, keeping it out of the top score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

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 explained, and the description covers purpose, delivery channels, filters, and invocation triggers for a 6-parameter tool. The main gap is that it omits any note of the persistence/idempotency semantics implied by 'Create,' which is exactly where it collides with its annotations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so names, defaults, and examples for all 6 parameters are already documented in the schema. The description restates tickers, minimum value, and trade types without adding syntax or format detail beyond the schema, matching the baseline 3.

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?

States a specific verb and resource: 'Create an insider trading alert subscription,' then expands on what is monitored (director share transactions). The 'insider' qualifier implicitly separates it from subscribe_people_alerts, but no sibling is named, so it falls short of explicit differentiation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The final sentence gives clear when-to-use triggers: 'set up insider trade alerts, watch for director buying/selling, or monitor insider activity.' It does not cover when-not-to-use or point to alternatives like list_alert_subscriptions for reviewing existing subscriptions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

subscribe_people_alertsB
Read-onlyIdempotent
Inspect

Create a person alert subscription to monitor a specific individual for events such as board appointments, resignations, insider trades, compensation changes, regulatory actions, or role changes. Use when a user wants to track or follow a person, set up alerts for a director or executive, or be notified about changes involving a specific individual.

ParametersJSON Schema
NameRequiredDescriptionDefault
person_idNoThe person_id from shared.people (if known)
event_typesYesEvent types to monitor: appointment, resignation, insider_trade, compensation_change, regulatory_action, role_change
person_nameYesFull name of the person to monitor (e.g. "Scott St John")
email_addressNoEmail address for delivery (required if delivery_method is email)
delivery_methodNoDelivery method: email, webhook, slack, or teams (default: email)
min_transaction_valueNoMinimum transaction value filter for insider trades (e.g. 5000)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesThe tool payload. Null when the call did not produce one — read meta.availability_status to find out why, and do not treat null as zero, empty or "none found".
metaYes
toolYesTool that produced this result.
schema_versionYesEnvelope contract version. Bumps only on a breaking shape change.

TDQS

B3.4/5.0
Behavior1/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description opens with 'Create a person alert subscription', a state-changing operation, while the annotations declare readOnlyHint=true. Per the stated rule, a write claimed against a read-only annotation is a direct contradiction; the description also adds nothing about delivery side effects, duplicate-subscription behavior, or auth requirements that would compensate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, zero filler: the action and monitored scope come first, the usage triggers second. The example event list is redundant with the schema but stays within a single clause and does not bury the takeaway.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists and the input schema is fully described, so return values and parameter formats need not be explained here; the description covers purpose, scope and triggers adequately for a subscription tool. It falls short only on not clarifying the relationship to subscribe_insider_alerts and on the unresolved read-only/write discrepancy.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so person_id, event_types, delivery_method, email_address and min_transaction_value are all documented in the schema, and the description merely restates the event list already present there. It adds no semantics about how person_id and person_name interact or when delivery fields become mandatory, so the baseline 3 applies.

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?

States a specific verb and resource ('Create a person alert subscription') plus the scope it applies to ('monitor a specific individual'), and enumerates the monitored event categories. However, it never distinguishes itself from the overlapping sibling subscribe_insider_alerts, which shares the insider_trade event type, so an agent must infer the split from name alone.

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?

Strong when-to-use clause: 'Use when a user wants to track or follow a person, set up alerts for a director or executive, or be notified about changes involving a specific individual.' It supplies concrete trigger scenarios but states no exclusions or alternatives (e.g., subscribe_insider_alerts for entity-level insider monitoring, list_alert_subscriptions to check existing subscriptions).

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.

  1. 189 tool updates
    • First observedanalyse_ir_draft
    • First observedanalyse_narrative_risk
    • First observedcheck_governance_policy
    • First observedcheck_insolvency_status
    • First observedcheck_thesis
    • First observedget_accounting_quality
    • First observedget_activist_vulnerability
    • First observedget_adviser_market_share
    • First observedget_agency_charity_funding
    • First observedget_agent_events
    • First observedget_agm_notice_draft
    • First observedget_agm_resolutions
    • First observedget_agm_speeches
    • First observedget_alpha_factors
    • First observedget_alpha_score
    • First observedget_analyst_consensus
    • First observedget_announcement_alerts
    • First observedget_announcement_sentiment
    • First observedget_annual_report_quality
    • First observedget_annual_reports
    • First observedget_anomalies
    • First observedget_audit_history
    • First observedget_auditor_red_flags
    • First observedget_beneficial_ownership
    • First observedget_board_benchmark
    • First observedget_board_briefing
    • First observedget_board_changes
    • First observedget_board_composition_report
    • First observedget_board_credentials
    • First observedget_board_effectiveness
    • First observedget_board_gap_report
    • First observedget_board_health_score
    • First observedget_board_pipeline
    • First observedget_board_skills_matrix
    • First observedget_board_vacancies
    • First observedget_broker_coverage
    • First observedget_capital_raise_sentiment
    • First observedget_capital_raises
    • First observedget_chair_ceo_alignment
    • First observedget_chair_network
    • First observedget_climate_gap_analysis
    • First observedget_committee_chairs
    • First observedget_company_changes
    • First observedget_company_connections
    • First observedget_company_detail
    • First observedget_company_directorships
    • First observedget_company_failures
    • First observedget_company_pager
    • First observedget_compensation_benchmark
    • First observedget_consensus_estimates
    • First observedget_corporate_giving
    • First observedget_corporate_relationships
    • First observedget_councillor_interests
    • First observedget_credibility_momentum
    • First observedget_credit_ratings
    • First observedget_daily_market_wrap
    • First observedget_deal_advisers
    • First observedget_deal_conflicts
    • First observedget_deal_insider_signals
    • First observedget_deal_prediction
    • First observedget_deep_research
    • First observedget_deep_research_qa
    • First observedget_digital_presence
    • First observedget_director_conflicts
    • First observedget_director_demographics
    • First observedget_director_detail
    • First observedget_director_due_diligence
    • First observedget_director_history
    • First observedget_director_network
    • First observedget_director_questionnaire
    • First observedget_director_risk
    • First observedget_director_workload
    • First observedget_directors
    • First observedget_disclosure_language
    • First observedget_disclosure_language_benchmark
    • First observedget_disclosure_score
    • First observedget_dividend_cut_probability
    • First observedget_dividend_stress_test
    • First observedget_dividends
    • First observedget_earnings
    • First observedget_earnings_preview
    • First observedget_earnings_quality
    • First observedget_earnings_surprise
    • First observedget_entity_graph
    • First observedget_esg_data
    • First observedget_esg_disclosure_benchmark
    • First observedget_esg_disclosure_gap
    • First observedget_esg_target_credibility
    • First observedget_esg_xbrl
    • First observedget_executive_compensation
    • First observedget_factor_grades
    • First observedget_factor_model
    • First observedget_factor_validation
    • First observedget_fair_value
    • First observedget_financial_distress
    • First observedget_financials
    • First observedget_financials_xbrl
    • First observedget_first_time_chairs
    • First observedget_fund_votes
    • First observedget_governance_deterioration
    • First observedget_governance_responses
    • First observedget_governance_scorecard
    • First observedget_governance_scores
    • First observedget_government_contracts
    • First observedget_greenwashing_detection
    • First observedget_hidden_connections
    • First observedget_hiring_intelligence
    • First observedget_insider_clusters
    • First observedget_insider_ownership
    • First observedget_insider_trades
    • First observedget_interest_register
    • First observedget_iod_designations
    • First observedget_ir_briefing
    • First observedget_ir_dashboard
    • First observedget_ir_quality
    • First observedget_ir_scorecard_compare
    • First observedget_keyword_alerts
    • First observedget_kiwisaver_holdings
    • First observedget_knowledge_graph
    • First observedget_knowledge_graph_shortest_path
    • First observedget_kyc_screening
    • First observedget_liquidity_score
    • First observedget_litigation_history
    • First observedget_macro_exposure
    • First observedget_macro_history
    • First observedget_macro_regime
    • First observedget_management_credibility
    • First observedget_management_team
    • First observedget_market_changes
    • First observedget_market_signals
    • First observedget_metrics
    • First observedget_morning_brief
    • First observedget_my_portfolio
    • First observedget_narrative_tracker
    • First observedget_network_intelligence
    • First observedget_news_sentiment
    • First observedget_oci_divergence
    • First observedget_officer_history
    • First observedget_offshore_exposure
    • First observedget_peer_mentions
    • First observedget_people_profile
    • First observedget_performance
    • First observedget_political_connections
    • First observedget_professional_disciplinary
    • First observedget_prohibited_directors
    • First observedget_property_climate_risk
    • First observedget_property_portfolio
    • First observedget_proxy_report
    • First observedget_regulatory_actions
    • First observedget_remuneration_benchmarks
    • First observedget_remuneration_compliance
    • First observedget_research_briefing
    • First observedget_revenue_segments
    • First observedget_risk_language
    • First observedget_section_evolution
    • First observedget_select_committee_activity
    • First observedget_shareholders
    • First observedget_stewardship_report
    • First observedget_stock_prices
    • First observedget_substantial_holder_changes
    • First observedget_substantial_holder_notices
    • First observedget_substantial_holders
    • First observedget_succession_plan
    • First observedget_takeover_probability
    • First observedget_takeovers
    • First observedget_team_members
    • First observedget_technical_signals
    • First observedget_transcript_diffs
    • First observedget_volume_anomalies
    • First observedget_vote_history
    • First observedget_watchlists
    • First observedlist_alert_subscriptions
    • First observedlist_engagement_log
    • First observedlist_stewardship_reports
    • First observedlist_voting_policies
    • First observedpredict_agm_outcome
    • First observedread_announcement
    • First observedread_annual_report_section
    • First observedscreen_stocks
    • First observedsearch_announcements
    • First observedsearch_board_candidates
    • First observedsearch_companies
    • First observedsearch_keyword_trends
    • First observedsearch_semantic
    • First observedsearch_skills_taxonomy
    • First observedsimulate_event
    • First observedsimulate_investor_qa
    • First observedsubscribe_insider_alerts
    • First observedsubscribe_people_alerts

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Perplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.
    2
    Apache 2.0
  • A
    license
    A
    quality
    C
    maintenance
    Enables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.
    16
    11 npm
    1
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    Browse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources