{"name":"hedgr","display_name":"Hedgr FX Risk & Treasury","version":"1.0.0","description":"Read-only FX risk, treasury, and accounting-derived dashboard data for SME finance teams. Scout is the in-app agent; these tools are the data layer behind it.","protocolVersion":"2025-06-18","protocolVersions":["2026-01-26","2025-11-25","2025-06-18","2025-03-26","2024-11-05"],"transport":"streamable-http","endpoint":"https://hedgr.app/mcp","logo_url":"https://hedgr.app/hedgr-logo-live-padded.png","icon_url":"https://hedgr.app/hedgr-icon-512.svg","homepage":"https://hedgr.app","docs_url":"https://hedgr.app/docs/mcp","capabilities":{"tools":{},"resources":{},"extensions":{"io.modelcontextprotocol/ui":{"mimeTypes":["text/html;profile=mcp-app"]}}},"ui":{"extension":"io.modelcontextprotocol/ui","spec":"SEP-1865","mimeType":"text/html;profile=mcp-app","resources":[{"uri":"ui://hedgr/fx-exposure-panel","name":"fx_exposure_panel","description":"Per-currency FX exposure cards with liquidity, flows and comfort-limit usage, rendered from get_fx_exposure results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/scenario-stress","name":"scenario_stress","description":"Interactive rate-shock impact rendered from simulate_scenario results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/cashflow-ladder","name":"cashflow_ladder","description":"Receivable, payable and hedge-maturity timing ladder rendered from get_cashflow_timing results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/market-regime","name":"market_regime","description":"Per-pair regime, volatility and recent-range snapshot rendered from get_market_regime results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/policy-band","name":"policy_band","description":"Target protection ratios, instruments and limits rendered from get_policy results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/limit-status","name":"limit_status","description":"Per-currency comfort-limit usage gauges rendered from get_limit_status results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/pnl-attribution","name":"pnl_attribution","description":"Realised and unrealised FX P&L split by currency, rendered from get_pnl_attribution results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/cash-position","name":"cash_position","description":"Bank cash by currency and account, rendered from get_cash_position results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/hedge-portfolio","name":"hedge_portfolio","description":"Open forwards with maturity, contracted rate and mark to market, rendered from get_hedge_portfolio results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/overdue-drivers","name":"overdue_drivers","description":"Overdue exposure ranked by currency with the top contact, rendered from get_overdue_drivers results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/cashflow-forecast","name":"cashflow_forecast","description":"Projected net cashflow per currency with its p10 to p90 band, rendered from get_cashflow_forecast results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/funding-forecast","name":"funding_forecast","description":"Per-currency running balance and first funding shortfall, rendered from get_funding_forecast results.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}},{"uri":"ui://hedgr/protection-candidates","name":"protection_candidates","description":"Policy-derived suggested notionals per currency, rendered from get_protection_candidates results. Suggests sizes; books nothing.","mimeType":"text/html;profile=mcp-app","_meta":{"ui":{"csp":{"connect_domains":[],"resource_domains":[]},"permissions":{},"prefersBorder":true}}}],"tools_with_ui":[{"tool":"get_fx_exposure","resourceUri":"ui://hedgr/fx-exposure-panel"},{"tool":"simulate_scenario","resourceUri":"ui://hedgr/scenario-stress"},{"tool":"get_cashflow_timing","resourceUri":"ui://hedgr/cashflow-ladder"},{"tool":"get_market_regime","resourceUri":"ui://hedgr/market-regime"},{"tool":"get_policy","resourceUri":"ui://hedgr/policy-band"},{"tool":"get_limit_status","resourceUri":"ui://hedgr/limit-status"},{"tool":"get_pnl_attribution","resourceUri":"ui://hedgr/pnl-attribution"},{"tool":"get_cash_position","resourceUri":"ui://hedgr/cash-position"},{"tool":"get_hedge_portfolio","resourceUri":"ui://hedgr/hedge-portfolio"},{"tool":"get_overdue_drivers","resourceUri":"ui://hedgr/overdue-drivers"},{"tool":"get_cashflow_forecast","resourceUri":"ui://hedgr/cashflow-forecast"},{"tool":"get_funding_forecast","resourceUri":"ui://hedgr/funding-forecast"},{"tool":"get_protection_candidates","resourceUri":"ui://hedgr/protection-candidates"}]},"tools":[{"name":"get_platform_capabilities","description":"Returns a safe, client-facing capability map for Hedgr: dashboard tabs, data sources, what the MCP already exposes, a coverage summary counting how many client-facing surfaces the published tools answer, the Scout/MCP boundary, and what is intentionally not exposed. Use this when the user asks what Hedgr, Scout, or the connector can do. Does not reveal private prompts, formulas, credentials, admin pages, source paths, internal routes, feature flags, or implementation IP.","inputSchema":{"type":"object","description":"No inputs. Returns Hedgr's read-only tool catalogue and what each surface can answer for the whole workspace.","properties":{}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Platform Capabilities","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_dashboard_context","description":"Returns a compact read-only snapshot of the authenticated Hedgr dashboard: organisation, provider, base currency, selected entity/workspace context, data timestamp, FX currencies, invoice counts, headline exposure and P&L totals, and available rates. Use when the user asks for a dashboard-level summary. Also returns Scout-aligned blocks: book_value (open and settled FX invoice face-value sums), invoice_book (counts, receivable/payable and local/foreign splits, per-currency open/overdue, ageing, top open invoices), profit_and_revenue (net profit, operating profit, revenue, profit_basis, provider_has_unrealised_fx), data_coverage (invoice lookback and rate-history window), inter_company lens state and totals.dashboard_total_fx_impact_base. Also returns entity_scope: when the workspace consolidates several entities, entity_scope.ask_user is true and the block carries a scope question and its options (consolidated group, or one entity with its entity_id).","inputSchema":{"type":"object","description":"Omit entity_id for a whole-workspace snapshot of the current dashboard (headline KPIs, exposure, P&L). Pass entity_id to scope the P&L totals and the bank revaluation leg to one entity; aligned_blocks_scope_basis then names every block that stays whole-workspace.","properties":{"entity_id":{"type":"string","description":"Scope the P&L totals and the bank leg to one entity, the same blocks get_pnl_attribution scopes. Omit for the consolidated group. Use an entity_id from entity_scope.options or list_entities."}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Dashboard Context","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_account_status","description":"Returns the current state of the user's Hedgr account: which accounting systems, Google Sheets workspaces, CSV/manual cloud workspaces, and setup sections are available. Returns entity_scope: on a workspace that consolidates several entities, entity_scope.ask_user is true and entity_scope carries a scope question with its options (consolidated group, or one named entity with its entity_id). When no usable source is connected, connection_status.state is 'setup_required' and the response carries setup_url and setup_steps. Accounting providers (Xero, QuickBooks, Sage, Holded) supply company settings automatically; Google Sheets and CSV/manual workspaces need Company & reporting completed, and CSV/manual workspaces are readable once saved to cloud.","inputSchema":{"type":"object","description":"No inputs. Returns workspace connection and onboarding status.","properties":{}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Account Status","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"list_entities","description":"Lists all connected legal entities with their base currencies and source accounting systems. Use when the user needs entity-level rather than consolidated group figures, e.g. multi-entity clients such as UK Ltd + US Inc + DE GmbH. Returns entity_scope with a scope question (consolidated group or one entity) and the entity_id for each option when the workspace consolidates several entities.","inputSchema":{"type":"object","properties":{"include_disconnected":{"type":"boolean","description":"Include entities that exist in policy config but have no connected accounting system. Useful for showing the user what's missing.","default":false}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"List Entities","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_fx_exposure","description":"Returns net FX exposure by currency pair, entity, and time bucket (overdue, 0-30d, 31-60d, 61-90d, 90d+, undated). An invoice with no due date has no tenor, so it stays in net exposure and sits in the undated bucket. Each exposure line distinguishes confirmed (invoices and POs from the accounting system) from forecasted, and includes a source field citing provenance ('€2.3M from 47 Xero invoices'). On multi-entity books the exposure honours the workspace inter-company mode and the response carries an intercompany block naming that mode; realised P&L does not move with that mode, and it is reported as the accounting system recorded it, so settled inter-company invoices stay inside it. On an unscoped call also returns counterparty_concentration (per contact/currency/direction with share of gross exposure), risk_snapshot (top currency and share, signed and gross net position, breach and overdue counts, worst-case as published), sensitivity (impact of a 1% move per currency) and total_net_exposure_base, all lifted from the same context the in-app Scout assistant answers from.","inputSchema":{"type":"object","properties":{"entity_id":{"type":"string","description":"Specific entity ID from list_entities. Omit for consolidated group exposure."},"currency":{"type":"string","description":"ISO 4217 code to filter to one currency (e.g. 'EUR', 'USD'). Omit for all currencies.","pattern":"^[A-Z]{3}$"},"horizon_days":{"type":"integer","description":"Forward-looking window in days.","default":90,"minimum":1,"maximum":730},"include_forecasted":{"type":"boolean","description":"Include forecasted exposure alongside confirmed accounting-system data.","default":true},"include_chart":{"type":"boolean","description":"When true, the tool response includes an image/png content block containing a horizontal bar chart of net exposure by currency (green = receivable, red = payable). Requires no additional API calls - uses the same data as the text response.","default":false}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'.","properties":{"base_currency":{"type":"string"},"horizon_days":{"type":"number"},"entity_id":{"type":"string"},"exposures":{"type":"array","items":{"type":"object","properties":{"currency":{"type":"string"},"net_receivable":{"type":"number"},"net_payable":{"type":"number"},"cash_balance":{"type":"number"},"net_exposure":{"type":"number"},"net_exposure_base":{"type":"number","description":"Present only when a valid spot rate was available (strict mode omits otherwise)."},"base_currency":{"type":"string"},"confirmed_count":{"type":"number"},"buckets":{"type":"object","additionalProperties":{"type":"number"}},"source":{"type":"string"}}}},"total_currencies":{"type":"number"},"includes_forecasted":{"type":"boolean"},"intercompany":{"type":"object","description":"Present only when the book has detected inter-company pairs.","properties":{"mode":{"type":"string","enum":["net","gross"]},"mode_label":{"type":"string"},"mode_source":{"type":"string","enum":["workspace","default","unknown"]},"applied":{"type":"boolean"},"held_off_reason":{"type":"string"},"pairs_detected":{"type":"number"},"exposed_legs":{"type":"number"},"unclassified_legs":{"type":"number"},"invoices_netted":{"type":"number"},"note":{"type":"string"}}}}}}},"annotations":{"title":"Get FX Exposure","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/fx-exposure-panel"}}},{"name":"get_cash_position","description":"Returns current cash balances by currency and entity. Shows whether FX cash offsets invoice exposure in the same currency.","inputSchema":{"type":"object","properties":{"entity_id":{"type":"string","description":"Specific entity ID. Omit for group-level consolidated cash position."},"currency":{"type":"string","description":"Filter to a single currency.","pattern":"^[A-Z]{3}$"},"include_chart":{"type":"boolean","description":"When true, includes an image/png content block: horizontal bar chart of cash balance by currency (native units). Blue bars = positive, red = overdraft.","default":false}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Cash Position","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/cash-position"}}},{"name":"get_hedge_portfolio","description":"Returns all open forward contracts and hedges with maturity date, notional amount, contracted rate, and current mark-to-market value. Use this to answer 'what is my current hedge ratio on EUR?' without needing execute permissions. hedges[] is drawdown-normalised: a parent forward is listed once at its remaining notional and child draws are excluded, exactly as the dashboard hedge book counts cover. Also returns coverage (Protection Ratio and over-hedge flag as published by the dashboard), policy_band (hedge-ratio policy band and per-currency status), residual_coverage (net exposure vs active hedge notional per currency), drawdowns (original, drawn and remaining notional per parent) and hedge_mark_to_market.","inputSchema":{"type":"object","properties":{"entity_id":{"type":"string","description":"Filter to a single entity's hedges."},"currency":{"type":"string","description":"Filter to hedges on a specific currency.","pattern":"^[A-Z]{3}$"},"include_expired":{"type":"boolean","description":"Include hedges that have already matured.","default":false}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Hedge Portfolio","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/hedge-portfolio"}}},{"name":"simulate_scenario","description":"Models the P&L impact of exchange rate moves on the user's current net exposure (invoices + cash) and existing hedges. Four modes: (1) supply explicit `scenarios` for a linear what-if, e.g. 'What happens if GBP/EUR moves 3% before Q3 close?'; (2) set `worst_case: true` (scenarios optional) to revalue each currency at its OWN worst adverse 30-day historical move, the same worst-case the Monitor dashboard shows; (3) `adverse_pct` for one uniform move against every position; (4) `base_move_pct` for the base currency moving against all foreign currencies (negative = base weaker). Worst-case is a historical realised downside, not a forecast or a recommendation. Cross-currency pairs (neither leg is the reporting currency) are shocked base-neutrally.","inputSchema":{"type":"object","properties":{"worst_case":{"type":"boolean","description":"When true, ignore linear shocks and apply each currency's own worst adverse 30-day historical move (adverse-aligned, always a loss). Matches the Monitor worst-case KPI when every exposed currency receives a move; partial coverage is reported in worst_case.coverage and worst_case.coverage_complete, and a partial gross_impact_base covers only the currencies listed in by_currency. scenarios becomes optional.","default":false},"adverse_pct":{"type":"number","exclusiveMinimum":0,"maximum":50,"description":"Uniform adverse move: each currency moves this percentage against its own net position after open forwards (a net receivable currency weakens, a net payable currency strengthens), so every row is a loss. Use for 'a 10% adverse move' or 'everything moves 10% against me'. scenarios becomes optional."},"base_move_pct":{"type":"number","minimum":-50,"maximum":50,"description":"The base currency moves this percentage against every foreign currency. Negative = base WEAKER (e.g. 'ZAR 10% weaker' on a ZAR book is -10), positive = base stronger. Use this instead of composing pairs for a base-currency move. scenarios becomes optional."},"scenarios":{"type":"array","description":"Rate shocks to apply (required unless worst_case is true). Multiple entries are applied simultaneously (correlated move).","minItems":1,"maxItems":10,"items":{"type":"object","required":["currency_pair","shock_bps"],"properties":{"currency_pair":{"type":"string","description":"Currency pair, e.g. 'GBPEUR' or 'EUR/GBP'. Base currency strengthens when shock_bps is positive."},"shock_bps":{"type":"integer","description":"Rate shock in basis points. Positive = base currency strengthens. 300 = +3%."}}}},"horizon_days":{"type":"integer","description":"Forward-looking exposure window included in the simulation.","default":90,"minimum":1,"maximum":365},"include_hedges":{"type":"boolean","description":"Apply offsetting effect of existing hedges. Set false to see gross (unhedged) impact.","default":true}},"additionalProperties":false},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Simulate Rate Scenario","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/scenario-stress"}}},{"name":"get_protection_candidates","description":"Policy-derived candidate rows showing suggested notional amounts for open currency exposures. Read-only - does not execute trades, open dealing pages, or transfer assets.","inputSchema":{"type":"object","properties":{"entity_id":{"type":"string","description":"Limit to a single entity. Omit for group-level candidates."},"currency":{"type":"string","description":"Limit to a specific currency (e.g. 'EUR').","pattern":"^[A-Z]{3}$"},"policy_override":{"type":"object","description":"Temporary policy adjustments for this calculation only. Does not modify the stored policy.","properties":{"target_hedge_ratio":{"type":"number","description":"Override target hedge ratio (0-1). 0.7 = 70% hedged.","minimum":0,"maximum":1},"max_tenor_days":{"type":"integer","description":"Override maximum forward contract tenor in days.","minimum":1,"maximum":730}}}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Protection Candidates","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/protection-candidates"}}},{"name":"get_policy","description":"Returns the user's saved FX policy in declared form: one workspace coverage target (target_hedge_ratio_pct, 0 when none is set), the allowed instrument, the hedge horizon, and a policy_settings block naming every stored field with its meaning, including per-currency comfort-limit rows (a row with limit 0 is treated as unset and is named as such), budget rates, and fees. max_single_trade_base and approval_threshold_base are published as null with a basis, because no Hedgr surface writes them today. Nothing in the stored policy is passed through undeclared.","inputSchema":{"type":"object","properties":{"entity_id":{"type":"string","description":"Fetch the policy for a specific entity. Omit for the group-level policy."}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get FX Policy","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/policy-band"}}},{"name":"get_market_regime","description":"Returns a current Hedgr regime snapshot for one or more currency pairs, including a compact headline, sorted snapshot rows, latest rate, realised-volatility regime, 30-day change, methodology, and dashboard surface. Volatility regimes are Settled / Directional / Choppy / Stressed. Also returns a market_environment block matching the Monitor Market Environment KPI cards when the book has exposure: the exposure-weighted Composite score (0-100), Volatility score, and 30-day Trend (change and direction). Use for market-backdrop questions. Regimes are not trade recommendations. The scores are analytical only. Also returns dashboard_market_environment (the Composite, Trend and Volatility scores, levels and the Global Backdrop score/sentiment exactly as the dashboard published them; null with a reason until the Monitor tab has published), dashboard_regimes (per-pair regime label and recent range as shown on screen), and market_environment.trend_score, adverse_currencies and trend_summary from the server engine.","inputSchema":{"type":"object","properties":{"pairs":{"type":"array","description":"Currency pairs to query, e.g. ['GBPEUR', 'GBPUSD', 'USDZAR']. Omit to return regimes for all pairs relevant to the user's current exposure.","items":{"type":"string","pattern":"^[A-Z]{6}$"},"maxItems":20},"include_history":{"type":"boolean","description":"Include the historical regime series (date + regime + volatility per point). Useful for charting or for the agent to describe how stable the current regime is.","default":false},"history_years":{"type":"number","description":"How many years of history to include when include_history is true. Defaults to 2.","default":2,"minimum":0.25,"maximum":10},"include_chart":{"type":"boolean","description":"When true, includes one or two image/png content blocks: (1) a horizontal bar chart of realised-volatility % by pair, colour-coded by regime (green=Settled, blue=Directional, amber=Choppy, red=Stressed); (2) when include_history is also true, a rate + Bollinger-band line chart for the most-stressed pair.","default":false}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'.","properties":{"headline":{"type":"string"},"snapshot":{"type":"array","items":{"type":"object","properties":{"pair":{"type":"string"},"regime":{"type":["string","null"]},"tone":{"type":["string","null"]},"severity":{"type":["number","null"]},"latest_rate":{"type":["number","null"]},"latest_date":{"type":["string","null"]},"rate_age_days":{"type":["number","null"]},"rate_is_stale":{"type":"boolean"},"volatility_pct":{"type":["number","null"]},"change_30d_pct":{"type":["number","null"]},"recent_range":{"type":["object","null"],"properties":{"low":{"type":"number"},"high":{"type":"number"},"mid":{"type":["number","null"]}}},"explanation":{"type":["string","null"]}}}},"pairs":{"type":"array","items":{"type":"object"}},"as_of":{"type":"string"},"data_freshness":{"type":["string","null"],"description":"Human-readable note naming any stale pairs; null when all pairs are fresh."},"stale_pairs":{"type":"array","items":{"type":"string"}}}}}},"annotations":{"title":"Get Market Regime","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/market-regime"}}},{"name":"get_pnl_attribution","description":"Returns FX P&L broken down by currency with top contributor, unrealised mark-to-market (open invoices, booking rate vs current spot), and realised gain/loss from settled invoices where the accounting system provides it. Use to answer 'which currencies are hurting us?', 'what is our total FX impact this period?', or 'show me P&L by currency'. All amounts are in base currency. Sorts by absolute total P&L so the biggest contributors appear first. Also returns the Scout-aligned P&L family: dashboard_hero (the Monitor Total FX Impact exactly as the dashboard published it), totals.bank_pnl_base and totals.hedge_mtm_base, the four contributor families (top_unrealised_contributors, top_realised_contributors, bank_contributors, hedge_contributors), materiality (FX as % of profit and revenue, margin before/after FX on the operating basis only), fy_windows (realised by settlement date for the current FY, previous FY and all-time) and provider_fx_ledger. Every aligned block is the figure the in-app Scout assistant quotes.","inputSchema":{"type":"object","properties":{"entity_id":{"type":"string","description":"Filter to a specific entity. Omit for consolidated group."},"include_unrealised":{"type":"boolean","description":"Include unrealised P&L from open invoices (booking rate vs current spot). Default true.","default":true},"include_realised":{"type":"boolean","description":"Include realised P&L from settled invoices where the accounting system provides the FX gain/loss. Default true.","default":true},"include_chart":{"type":"boolean","description":"When true, the tool response includes an image/png content block containing a horizontal bar chart of P&L by currency (green = gain, red = loss). Uses the same data as the text response.","default":false}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'.","properties":{"base_currency":{"type":"string"},"entity_id":{"type":"string"},"attribution":{"type":"array","description":"Per-currency FX P&L contributors, sorted by absolute total impact.","items":{"type":"object","properties":{"currency":{"type":"string"},"current_spot_rate":{"type":["number","null"],"description":"Quoted as [account base]/[this currency], e.g. GBP/USD 1.27 means £1 buys $1.27."},"unrealised_pnl_base":{"type":"number"},"unrealised_invoice_count":{"type":"number"},"unrealised_missing_rate_count":{"type":"number"},"realised_pnl_base":{"type":"number"},"realised_invoice_count":{"type":"number"},"realised_missing_data_count":{"type":"number"},"total_pnl_base":{"type":"number"}}}},"totals":{"type":"object","properties":{"unrealised_pnl_base":{"type":"number"},"realised_pnl_base":{"type":"number"},"total_fx_pnl_base":{"type":"number"}}},"top_contributor":{"type":["object","null"],"properties":{"currency":{"type":"string"},"total_pnl_base":{"type":"number"},"direction":{"type":"string","enum":["gain","loss"]}}},"rate_convention":{"type":"string"},"data_note":{"type":"string"}}}}},"annotations":{"title":"Get P&L Attribution","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/pnl-attribution"}}},{"name":"get_limit_status","description":"Compares current net FX exposure against per-currency comfort limits configured in Hedgr's Control tab. Returns breach status per currency: breaching (exposure exceeds limit), approaching (≥80% of limit), within_limit, or no_limit_set. Use to answer 'are we within limits?', 'which currencies need attention?', or 'what is our USD exposure vs our comfort limit?'. Limits are set in Control > Comfort Limits.","inputSchema":{"type":"object","properties":{"entity_id":{"type":"string","description":"Filter to a specific entity's exposures. Omit for group-level consolidated."}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Limit Status","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/limit-status"}}},{"name":"get_transaction_log_summary","description":"Returns a safe read-only transaction-log summary for Explain > Detailed Transaction Logs: top open-invoice unrealised FX rows, settled-invoice realised FX rows, bank/cash rows, counts, and row provenance. Does not expose raw provider payloads, hidden reconciliation notes, credentials, or private calculation internals. Also returns invoice_rows: the ranked (open first, largest base equivalent first) invoice table the in-app Scout assistant reads, home-currency rows included, capped at 80 rows with invoice_rows_total for the true book size.","inputSchema":{"type":"object","description":"Optional scope filters. Omit both for the whole-workspace report.","properties":{"entity_id":{"type":"string","description":"Specific entity ID from list_entities. Omit for the whole workspace (all entities)."},"currency":{"type":"string","description":"ISO 4217 code to filter to one currency (e.g. 'EUR', 'USD'). Omit for all currencies.","pattern":"^[A-Z]{3}$"}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Transaction Log Summary","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_overdue_drivers","description":"Returns overdue invoice drivers by currency and top contact, prioritised by largest exposure per currency. Separates total unrealised FX P&L from since-due P&L and explicitly reports when due-date rates are unavailable. An invoice carrying no due date is undated and never overdue, so it appears in no driver row; it is published beside them as undated_invoice_count, undated_base_amount and undated_by_currency. Use for questions like 'what is driving overdue invoices?' or 'what did overdue invoices cost us?'.","inputSchema":{"type":"object","description":"Optional scope filters. Omit both for the whole-workspace report.","properties":{"entity_id":{"type":"string","description":"Specific entity ID from list_entities. Omit for the whole workspace (all entities)."},"currency":{"type":"string","description":"ISO 4217 code to filter to one currency (e.g. 'EUR', 'USD'). Omit for all currencies.","pattern":"^[A-Z]{3}$"}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Overdue Drivers","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/overdue-drivers"}}},{"name":"get_data_quality","description":"Returns safe import and data-quality diagnostics: duplicate invoice IDs, first visible issue rows, missing currency/date/amount fields, missing booking rates, missing spot rates, and per-currency P&L readiness. Use for questions about why CSV imports failed or why P&L is incomplete. On an unscoped call also returns decision_readiness (workspace ready/limited/blocked verdict with gaps and basis), balance_validation (bank balance source and discrepancy check), scout_currency_quality and data_coverage (invoice lookback and rate-history window held).","inputSchema":{"type":"object","description":"Optional scope filters. Omit both for the whole-workspace report.","properties":{"entity_id":{"type":"string","description":"Specific entity ID from list_entities. Omit for the whole workspace (all entities)."},"currency":{"type":"string","description":"ISO 4217 code to filter to one currency (e.g. 'EUR', 'USD'). Omit for all currencies.","pattern":"^[A-Z]{3}$"}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Data Quality","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_payment_patterns","description":"Returns detected payment timing patterns by counterparty and currency where available, or derives a conservative summary from settled invoice dates. Use for factual questions about who pays late or early. Reports timing only, not realised gains or losses.","inputSchema":{"type":"object","description":"Optional scope filters. Omit both for the whole-workspace report.","properties":{"entity_id":{"type":"string","description":"Specific entity ID from list_entities. Omit for the whole workspace (all entities)."},"currency":{"type":"string","description":"ISO 4217 code to filter to one currency (e.g. 'EUR', 'USD'). Omit for all currencies.","pattern":"^[A-Z]{3}$"}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Payment Patterns","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_cashflow_timing","description":"Returns FX cashflow timing by currency and bucket, separating receivables, payables, bank cash, and hedge maturities where available. Use for Monitor > Exposure & Cash Flow questions about overdue, next 30, 31-60, 61-90, beyond 90, undated, liquidity timing, or same-currency cash coverage. On an unscoped call also returns maturity_ladder (receivables, payables and bank cash per bucket and currency in base), cashflow_coverage (near-term surplus/shortfall verdict per currency) and hedge_maturity_coverage (hedge notional laid against exposure per bucket with coverage percent).","inputSchema":{"type":"object","description":"Optional scope filters. Omit both for the whole-workspace report.","properties":{"entity_id":{"type":"string","description":"Specific entity ID from list_entities. Omit for the whole workspace (all entities)."},"currency":{"type":"string","description":"ISO 4217 code to filter to one currency (e.g. 'EUR', 'USD'). Omit for all currencies.","pattern":"^[A-Z]{3}$"}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Cashflow Timing","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/cashflow-ladder"}}},{"name":"get_cashflow_forecast","description":"Projects the user's OWN expected net cashflow per currency over the next N weeks (default 8), from their OWN settlement history: expected settlement of existing open invoices (due date shifted by how late each customer usually pays), plus projected recurring and seasonal flows. Returns a per-currency net with a P10-P90 band, named drivers, and the walk-forward accuracy of the settlement model (inside-band % and median error in days). This is deterministic statistics on settlement behaviour, NOT an FX-rate prediction. sufficient_history is false when the settlement history is too short for a reliable band.","inputSchema":{"type":"object","properties":{"horizon_weeks":{"type":"integer","description":"Projection horizon in weeks (1-52, default 8). Pass the period the user names: 13 for three months, 26 for six, 52 for twelve."},"currency":{"type":"string","description":"Optional 3-letter currency code to filter to one currency."}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Cashflow Forecast","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/cashflow-forecast"}}},{"name":"get_funding_forecast","description":"TMS liquidity/funding view: per-currency running cash balance seeded from the user's REAL bank balances - INCLUDING base currency (which the FX-exposure tools deliberately exclude). Answers whether the user will hold the units to settle upcoming payables/receivables, the first date each currency runs short and by how much, the trade the gap implies (BUY on a projected shortfall by its date, SELL on a surplus), and whether base-currency cash can fund the foreign purchases (can_self_fund + base_funding_shortfall). Uses real bank balances + real invoices plus the projected settlement component with its band and accuracy. Trade direction is a mechanical consequence of the gap sign, not a recommendation. sufficient_history is false when the settlement history is too short for a reliable band.","inputSchema":{"type":"object","properties":{"horizon_weeks":{"type":"integer","description":"Projection horizon in weeks (1-52, default 8). Pass the period the user names: 13 for three months, 26 for six, 52 for twelve."},"currency":{"type":"string","description":"Optional 3-letter currency code to filter to one currency."}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Funding Forecast","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false},"_meta":{"ui":{"resourceUri":"ui://hedgr/funding-forecast"}}},{"name":"get_protection_builder_snapshot","description":"Returns the read-only Protection Builder / Scenario Builder snapshot: simulated row inputs, residual exposure after active hedges, cashflow-aware grouping basis, and policy sizing context. It does not execute trades, produce broker instructions, return quote IDs, or recommend a hedge.","inputSchema":{"type":"object","description":"Optional currency filter. Omit for every currency with open exposure.","properties":{"currency":{"type":"string","description":"ISO 4217 code to return one currency's simulated row (e.g. 'USD'). Omit for all currencies. applied_filters echoes it.","pattern":"^[A-Z]{3}$"}}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Protection Builder Snapshot","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_policy_backtest_summary","description":"Returns a saved Control > Backtest policy replay summary when available, plus the policy snapshot used for context. Use for historical policy replay questions only. Does not predict future performance or recommend policy settings.","inputSchema":{"type":"object","description":"No inputs. Returns the latest FX policy backtest summary.","properties":{}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Policy Backtest Summary","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_rate_assumptions","description":"Returns rate assumptions used by the dashboard: spot rates, source labels, timestamps, custom override presence, missing spot rates, and invoice rows with missing or placeholder booking rates. Use when users ask where a number came from or why a rate/P&L is unavailable. Also returns spot_rates_market_convention (the pair orientation the Control panel shows), forward_rates with forward_rates_basis (empty with the reason stated when no feed supplies a forward curve) and unsupported_currencies.","inputSchema":{"type":"object","description":"No inputs. Returns the market-rate assumptions (source and as-of date) the tools use.","properties":{}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Rate Assumptions","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_export_manifest","description":"Returns a read-only manifest of Hedgr exports available in the dashboard and where to generate them. Does not download files, expose temporary URLs, or generate private report drafts through MCP.","inputSchema":{"type":"object","description":"No inputs. Returns the reports and exports available for the workspace.","properties":{}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Export Manifest","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_navigation_targets","description":"Returns safe client-facing Hedgr navigation targets: current tab/subtab labels and what each surface is used for. Use for 'where do I find this in Hedgr' questions. Excludes admin routes, operator pages, and feature-flag internals.","inputSchema":{"type":"object","description":"No inputs. Returns deep-link navigation targets into the Hedgr app.","properties":{}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Navigation Targets","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_workspace_setup_state","description":"Returns setup state for accounting, Google Sheets, and CSV/manual workspaces. Explains whether Company & reporting is required for MCP. Accounting providers supply company settings automatically; Google Sheets and CSV/manual workspaces may need Company & reporting completed.","inputSchema":{"type":"object","description":"No inputs. Returns onboarding and setup completeness for the workspace.","properties":{}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get Workspace Setup State","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}},{"name":"get_fx_guidance","description":"Returns Hedgr's shared FX-guidance canon - the same read-only methodology Scout uses in-app (e.g. margin-basis / IAS 21 and Xero unrealised FX overlap). Public-safe subset only; internal partner/marketing guidance is filtered out. Not financial, legal, tax, or investment advice.","inputSchema":{"type":"object","description":"No inputs. Returns Hedgr's shared read-only FX-guidance canon (methodology, e.g. IAS 21 margin basis).","properties":{}},"outputSchema":{"type":"object","description":"Hedgr MCP envelope. Inspect connection_status.state before relying on data. Mirrors mcp/schema/connection_status.json (inlined because MCP hosts do not resolve external $refs reliably).","required":["connection_status","data"],"properties":{"connection_status":{"type":"object","required":["state"],"properties":{"state":{"type":"string","enum":["ready","setup_required","partial","stale"],"description":"ready: at least one server-readable source is connected, such as an accounting provider, Google Sheets, or saved CSV/manual cloud workspace, with data fresh (<24h). setup_required: no server-readable source is connected, data is null - surface setup_url and setup_steps. partial: some entities/sections connected, data covers only connected entities/sections. stale: connected but last_sync >24h - warn before executing."},"connected_systems":{"type":"array","items":{"type":"string"},"description":"Identifiers of connected accounting systems, e.g. ['xero:acme-uk', 'qbo:acme-us']."},"missing_systems":{"type":"array","items":{"type":"string"},"description":"Entity IDs configured in policy but not yet connected. Present in 'partial' state."},"last_sync":{"type":"string","format":"date-time","description":"ISO 8601 timestamp of most recent successful data sync."},"setup_url":{"type":"string","format":"uri","description":"Deep link to Hedgr settings/setup. Present when state is 'setup_required' or 'partial'."},"setup_label":{"type":"string","description":"Human-facing label for setup_url."},"setup_reason":{"type":"string","description":"Plain-English reason Hedgr cannot answer with exposure data yet."},"setup_steps":{"type":"array","items":{"type":"string"},"description":"Ordered next steps the assistant should show when state is setup_required, including Save workspace to cloud for CSV/manual workspaces."},"setup_options":{"type":"array","items":{"type":"string"},"description":"Available Hedgr setup surfaces to mention without implying a single provider path."}}},"data":{"type":["object","null"],"description":"Tool-specific payload. Null when connection_status.state is 'setup_required'."}}},"annotations":{"title":"Get FX Guidance","readOnlyHint":true,"openWorldHint":false,"destructiveHint":false}}],"tool_count":27,"product_features":{"scout":{"name":"Scout","description":"Hedgr in-app FX assistant for explaining dashboard numbers, invoice exposure, cash positions, hedge book context, regimes, and setup guidance.","answer_style":"Number or label first, then plain explanation, basis, and next place to look.","availability":"Available inside the Hedgr dashboard. MCP exposes the underlying read-only data tools, not Scout chat history or private prompts."}},"oauth":{"authorization_endpoint":"/mcp/oauth/authorize","token_endpoint":"/mcp/oauth/token","registration_endpoint":"/mcp/oauth/register","scopes_supported":["fx:read"],"code_challenge_methods_supported":["S256"],"protected_resource_metadata":"https://hedgr.app/.well-known/oauth-protected-resource/mcp","authorization_server_metadata":"https://hedgr.app/.well-known/oauth-authorization-server"},"read_only":true}