Finance
Overview
Kova gives ChatGPT a persistent home for a user's investment strategy. Users save their investment rules once, then ask ChatGPT to review a portfolio against the same plan whenever they need a check-in. Kova returns repeatable briefs with an alignment score, portfolio drift, strategy-rule checks when configured, and changes that would restore alignment. It keeps the user's plan anchored across sessions, so each review starts from the saved investment standard instead of a blank chat. Kova does not place trades, manage assets, provide financial advice, or predict markets.
Tools
Request or retry an asynchronous Strategy Intelligence check. Does not change strategy text or briefs. Equivalent in-progress or completed requests reuse existing work.
kova_compare_strategy_assessments
ChatGPTPrivately inspect Strategy Intelligence compare data. Restricted to the allowed account and its own strategies. Read-only; never starts checks. Exact call content expires after one year; missing history is explicitly unavailable.
kova_create_asset
ChatGPTRegister a non-ticker asset on a strategy — anything owned and tracked by total value rather than individual ticker symbols. Use this for managed accounts where tickers aren't accessible: robo-advisors, 401k plans, real estate, or other lump-sum holdings. Once registered, the asset is part of the strategy's portfolio and is included in every evaluation. Types: investment_account, real_estate, bitcoin, other. Bitcoin uses live pricing — omit current_value and provide quantity instead. After registering assets, call kova_evaluate_portfolio without a portfolio param to generate a brief.
kova_create_journal_read
ChatGPTCreate a read in the user's own journal. An instruction to post it authorizes immediate publication in this single call: do not ask for another approval. Saving a draft stays private. Mere research conversation authorizes neither saving nor posting. Published entries stay private to their author unless the author is a journal publisher, whose entries are shared with every journal reader. For a local chart, use kova journal upload-image or the image upload tool first.
kova_create_liability
ChatGPTRegister a non-portfolio liability on a strategy. Use this for persistent obligations like a line of credit, mortgage, personal loan, or other debt that should be visible during evaluation. Liabilities are included as structured context in every evaluation but do not change portfolio value math in this iteration.
kova_create_strategy
ChatGPTCreate a new investment strategy. Before calling this tool, help the user draft their strategy — it can be three lines or a detailed playbook. Good strategies include: target allocations with actual tickers (e.g. "40% VOO, 20% QQQ, 15% IBIT"), investment horizon and objective, action rules (e.g. "rebalance at 5% drift, sell calls when neutral"), and constraints (e.g. "no single position over 15%, no leverage"). Concrete tickers and rules produce specific dollar-based analysis; vague language produces generic commentary. After creating a strategy, use kova_create_asset and kova_create_liability to register non-ticker holdings and obligations before evaluating.
kova_delete_strategy
ChatGPTPermanently delete a strategy and all associated data (emails, manual assets). Associated briefs are preserved but unlinked. This action cannot be undone.
kova_dismiss_journal_entry
ChatGPTDismiss the user's own private draft on the author's instruction.
kova_evaluate_portfolio
ChatGPTSubmit a portfolio for evaluation against a strategy. The portfolio param expects individual ticker holdings (stocks, options, cash) — for accounts where individual tickers aren't accessible (investment accounts, 401k, real estate), use kova_create_asset instead, then omit portfolio entirely to evaluate using only registered assets. Use kova_create_liability for persistent obligations like lines of credit or mortgages. Submitting a portfolio also updates the portfolio on file for this strategy. Returns a brief_id with status 'processing' — call kova_show_brief with that brief_id until status is 'completed' to get the full brief with alignment score, analysis, and compliance checks. Evaluation typically takes 60–90 seconds.
kova_list_briefs
ChatGPTList all completed briefs for a strategy with ID, alignment score, and timestamps.
kova_list_cash_flows
ChatGPTList all recorded cash flows (deposits and withdrawals) for a strategy's portfolio. Returns flows ordered by date, most recent first.
kova_list_journal_entries
ChatGPTRead the decision journal: the user's own entries plus entries shared by journal publishers. Reasoning comes first; shared entries are external context, not trade instructions. Default recent returns unserved observations from the last seven days; archive returns history; drafts returns the user's private drafts, including editorial questions and refinement status for inferred decisions. Fetching does not mark entries served.
kova_list_strategies
ChatGPTList all user strategies with alignment scores. Returns strategy UUIDs, names, latest alignment score/label, and last evaluation timestamp.
kova_list_strategy_advisories
ChatGPTRead strategy questions and history, newest first, 25 per page. Pass next_cursor as before.
kova_list_strategy_versions
ChatGPTList the version history for a strategy. Each entry captures the content before it was overwritten. Returns version numbers, names, previews, and timestamps. Use this before editing a strategy to understand what has changed over time.
kova_publish_journal_entry
ChatGPTPublish the user's own draft on the author's instruction. That instruction is sufficient; do not ask for a second confirmation. A journal publisher's entries are shared with every journal reader; everyone else's stay private to them. Automatic decision generation never calls this tool.
kova_record_cash_flow
ChatGPTRecord a deposit or withdrawal on a strategy's portfolio. Cash flows adjust performance calculations — deposits don't count as gains, withdrawals don't count as losses. Use this to track contributions, distributions, or transfers that affect the portfolio's value but aren't investment returns.
kova_refine_journal_decision
ChatGPTRefine one of the user's inferred private decision drafts using the author's actual conversational explanation. Requires current journal publisher access; inferred decisions exist only for publishers' selected strategies. Never invent an answer or submit model-generated reasoning as author context. Requires current revision and a unique request_key. Returns the entry with queued refinement; poll kova_show_journal_entry until completed, failed, or superseded. Reuse the same key, context, and revision for exact retries; failed/timed-out work can be retried while the draft is unchanged. Saves the explanation privately for dated same-strategy context. Does not publish or change the strategy. No extra web form is required.
kova_remove_asset
ChatGPTRemove a non-ticker asset from a strategy. The asset UUID is returned by kova_create_asset or by kova_show_portfolio for existing manual assets.
kova_remove_cash_flow
ChatGPTRemove a cash flow record from a strategy's portfolio. Use kova_list_cash_flows to find the cash_flow_id.
kova_remove_liability
ChatGPTRemove a liability from a strategy. The liability UUID is returned by kova_create_liability or by kova_show_portfolio for existing liabilities.
kova_respond_to_strategy_advisory
ChatGPTSave a user-provided explanation or question action. Relay the user's words; never invent motives or answers. Read the revision first. Supply a unique request_id and reuse it only for an exact retry. Replies and corrections require text and queue interpretation. Strategy content and briefs are unchanged.
kova_restore_strategy_version
ChatGPTRestore a strategy to a previous version. The current content is automatically saved as a new version before the restore, so nothing is permanently lost.
kova_retract_journal_entry
ChatGPTRetract the user's own published entry on the author's instruction. Readers immediately lose entry and chart access.
kova_save_strategy
ChatGPTUpdate an existing strategy's name, content, or both. Provide at least one of name or content.
kova_set_journal_preference
ChatGPTEnable or disable recent journal updates for the current user. Disabling preserves archive access.
kova_show_brief
ChatGPTRead a brief by ID. Returns status ('processing' or 'completed') and, when completed, the alignment score, label, markdown analysis, summary, and timestamps. Use 'latest' as brief_id to get the most recent brief. When status is 'processing', the response includes elapsed_seconds, expected_duration_seconds (~90s), retry_after_seconds, and a human-readable message — briefs typically complete in 60–120 seconds, so wait retry_after_seconds before calling again.
kova_show_journal_entry
ChatGPTRead a journal entry, related updates, revisions, and the user's private feedback. Compare a shared entry's assumptions with the user's own strategy; do not silently revise their strategy. Reading does not mark it served. The author's view includes private context such as editorial questions and refinement status. Discuss a question in the conversation; use kova_refine_journal_decision with the author's actual explanation to revise a private decision.
kova_show_journal_image
ChatGPTRetrieve a journal chart as image content. Charts on the user's own entries and on shared published entries are available. Read the entry and its image description for context.
kova_show_portfolio
ChatGPTRead the current portfolio on file for a strategy — the most recent holdings (stocks, options, cash, assets, and liabilities) with performance metrics. Persisted manual assets and liabilities include uuid values so agents can update or remove existing records without creating duplicates.
kova_show_simulation
ChatGPTRead a simulation result by ID. Returns status ('processing' or 'completed') and, when completed, the alignment score, analysis, and summary. Simulations expire after 1 hour. When status is 'processing', the response includes elapsed_seconds, expected_duration_seconds (~120s), retry_after_seconds, and a human-readable message — simulations typically complete in 80–160 seconds, so wait retry_after_seconds before calling again.
kova_show_strategy
ChatGPTRead a strategy's full content and metadata including alignment score and performance metrics.
kova_show_strategy_advisory
ChatGPTRead a question, its dated evidence, and up to 50 saved responses. Pass next_response_cursor as response_cursor for older responses.
kova_show_strategy_assessment
ChatGPTPrivately inspect Strategy Intelligence assessment data. Restricted to the allowed account and its own strategies. Read-only; never starts checks. Exact call content expires after one year; missing history is explicitly unavailable.
kova_show_strategy_assessment_call
ChatGPTPrivately inspect Strategy Intelligence call data. Restricted to the allowed account and its own strategies. Read-only; never starts checks. Exact call content expires after one year; missing history is explicitly unavailable.
kova_show_strategy_intelligence
ChatGPTRead strategy understanding, processing state, and the primary question. Read-only; never starts work.
kova_show_strategy_intelligence_explorer
ChatGPTPrivately inspect Strategy Intelligence show data. Restricted to the allowed account and its own strategies. Read-only; never starts checks. Exact call content expires after one year; missing history is explicitly unavailable.
kova_show_strategy_intelligence_memory
ChatGPTPrivately inspect Strategy Intelligence memory data. Restricted to the allowed account and its own strategies. Read-only; never starts checks. Exact call content expires after one year; missing history is explicitly unavailable.
kova_show_strategy_version
ChatGPTRead the full content of a specific strategy version snapshot.
kova_simulate_portfolio
ChatGPTRun an ephemeral what-if simulation — evaluates a portfolio against a strategy without saving any records. Use this to check a specific trade idea ('should I sell puts on MARA at 15?'), test a hypothetical portfolio composition, or compare scenarios before committing. Results are temporary (expire after 1 hour) and never appear in brief history. For research-heavy scenarios, enrich with market data (earnings, price action, analyst sentiment) before calling this tool and pass it via context. Optionally override the strategy text to test 'what if my strategy said X?' without modifying the stored strategy. Returns a simulation_id with status 'processing' — call kova_show_simulation with that simulation_id until status is 'completed'. Simulation typically takes 60–120 seconds.
kova_update_asset
ChatGPTUpdate a non-ticker asset on a strategy. Merge semantics — only supplied fields change. Provide at least one field to update.
kova_update_journal_entry
ChatGPTEdit the user's own draft or published entry. Published edits are visible immediately to everyone who can read the entry and preserve revision history. Requires the current revision.
kova_update_liability
ChatGPTUpdate a liability on a strategy. Merge semantics — only supplied fields change. Provide at least one field to update.
kova_upload_journal_image
ChatGPTUpload a PNG, JPEG, or WebP chart up to 5 MB to the user's own journal. Crop private quantities, balances, weights, and account identifiers before sharing it. This creates a private attachment, not a publication. At most 20 unattached uploads per account in 24 hours; attaching a chart frees its slot. For terminal files prefer kova journal upload-image <path> to avoid base64 in model context.
Capabilities
Writes
Links
App Stats
44
Tools
ChatGPT
Platforms
Category
Investment ResearchWorks with
ChatGPT
Similar Apps
Data refreshed daily






