{"ok":true,"site":{"host":"koshara.vercel.app","url":"https://koshara.vercel.app/statements","type":"live","desc":"Koshara","tools":[{"name":"check_transactions","kind":"answer","impl":"imperative","description":"Validate and check a batch of proposed Koshara transactions without creating them. Use this for statement imports instead of validating transactions one by one. Checks account/category validity, required fields, review metadata, and possible duplicates. Categorize the batch yourself using one list_categories call; this tool does not infer categories.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"transactions":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"YYYY-MM-DD date."},"description":{"type":"string"},"amount":{"type":"number","exclusiveMinimum":0,"description":"Positive amount in INR."},"kind":{"type":"string","enum":["expense","income"],"default":"expense"},"accountId":{"type":"string"},"categoryId":{"type":"string"},"notes":{"type":"string"},"reviewStatus":{"type":"string","enum":["confirmed","needs_review"],"default":"confirmed"},"source":{"type":"string","enum":["manual","agent"],"default":"agent"},"confidence":{"type":"number","minimum":0,"maximum":1}},"required":["date","description","amount","accountId","categoryId"],"additionalProperties":false},"minItems":1,"maxItems":200}},"required":["transactions"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/statements","pages":["/statements"]},{"name":"get_import_context","kind":"answer","impl":"imperative","description":"Return the accounts, categories, recent transaction reference data, and active staged import in one call. Use this once before preparing a statement so you can reuse existing finance structures and identify possible duplicates.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/statements","pages":["/statements"]},{"name":"create_import_session","kind":"act","impl":"imperative","description":"Create a temporary statement import workspace. This does not add anything to Transactions. Reuse the returned session ID when staging rows or proposing groups.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"sourceName":{"type":"string"},"accountId":{"type":"string"}},"required":["sourceName"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/statements","pages":["/statements"]},{"name":"stage_transactions","kind":"act","impl":"imperative","description":"Add a prepared transaction batch to a temporary import session for human review. This never creates live Koshara Transactions; uncertain and duplicate rows are excluded by default.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"sessionId":{"type":"string"},"transactions":{"type":"array","items":{"type":"object","properties":{"date":{"type":"string","description":"YYYY-MM-DD date."},"description":{"type":"string"},"amount":{"type":"number","exclusiveMinimum":0,"description":"Positive amount in INR."},"kind":{"type":"string","enum":["expense","income"],"default":"expense"},"accountId":{"type":"string"},"categoryId":{"type":"string"},"notes":{"type":"string"},"reviewStatus":{"type":"string","enum":["confirmed","needs_review"],"default":"confirmed"},"source":{"type":"string","enum":["manual","agent"],"default":"agent"},"confidence":{"type":"number","minimum":0,"maximum":1}},"required":["date","description","amount","accountId","categoryId"],"additionalProperties":false},"minItems":1,"maxItems":200}},"required":["sessionId","transactions"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/statements","pages":["/statements"]},{"name":"update_import_item","kind":"act","impl":"imperative","description":"Adjust one staged row without creating a live transaction. Use it to improve the proposed description, account, category, note, or skip decision. Suspected duplicate overrides remain a human-only action in the Statements review UI.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"sessionId":{"type":"string"},"itemId":{"type":"string"},"description":{"type":"string"},"accountId":{"type":"string"},"categoryId":{"type":"string"},"note":{"type":"string"},"status":{"type":"string","enum":["skipped"]}},"required":["sessionId","itemId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/statements","pages":["/statements"]},{"name":"group_import_items","kind":"act","impl":"imperative","description":"Propose that two or more statement rows represent one logical expense, such as EMI principal, interest, and tax. The group remains a suggestion until the human chooses Merge or Keep separate in Koshara.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"sessionId":{"type":"string"},"itemIds":{"type":"array","items":{"type":"string"},"minItems":2},"label":{"type":"string"},"description":{"type":"string"},"categoryId":{"type":"string"}},"required":["sessionId","itemIds","label"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/statements","pages":["/statements"]},{"name":"get_import_session","kind":"answer","impl":"imperative","description":"Return the current staged rows, review statuses, duplicate references, and proposed groups for one import session. This is read-only.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"sessionId":{"type":"string"}},"required":["sessionId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/statements","pages":["/statements"]},{"name":"get_accounts","kind":"answer","impl":"imperative","description":"Returns available Koshara accounts. When importing a statement, call this once and map all transactions to the appropriate existing account. Do not invent or silently create an account when the correct account is uncertain.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard","/workspace","/accounts","/categories"]},{"name":"list_categories","kind":"answer","impl":"imperative","description":"Returns all existing Koshara categories, including optional monthlyBudget values in INR. When processing multiple transactions, call this once and use the returned category list to categorize the entire batch. Prefer existing categories and avoid creating new ones unnecessarily; use Uncategorized with needs_review when genuinely uncertain.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"search_transactions","kind":"answer","impl":"imperative","description":"Search Koshara transactions using the same live data shown in the Transactions UI. Use this to inspect existing activity before importing or answering finance questions.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Matched against description and notes."},"accountId":{"type":"string"},"categoryId":{"type":"string"},"kind":{"type":"string","enum":["expense","income"]},"reviewStatus":{"type":"string","enum":["confirmed","needs_review"]},"from":{"type":"string","description":"Inclusive YYYY-MM-DD date."},"to":{"type":"string","description":"Inclusive YYYY-MM-DD date."},"amount":{"type":"number","exclusiveMinimum":0,"description":"Exact amount in INR."},"limit":{"type":"integer","minimum":1,"maximum":200,"default":50}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard","/transactions"]},{"name":"get_spending_summary","kind":"answer","impl":"imperative","description":"Return structured expense and category facts from Koshara for a date range, optionally filtered by account or category. Includes budgets and variance, transaction counts, review and uncategorized totals, six-month category trends, top merchants, recurring payments, and exact possible-duplicate groups. Use these facts for external reasoning; Koshara does not generate AI insights.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Inclusive YYYY-MM-DD date. Defaults to the start of the current month."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Inclusive YYYY-MM-DD date. Defaults to today."},"accountId":{"type":"string"},"categoryId":{"type":"string"}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"configure_cashflow_chart","kind":"act","impl":"imperative","description":"Update the currently visible Dashboard cash-flow chart after analyzing Koshara data with read-only finance tools. This changes temporary presentation state only and never changes transactions, accounts, categories, or budgets. Use an insightTitle to summarize the finding, comparison to show change over time, and highlights to identify responsible dates or categories.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"mode":{"type":"string","enum":["combined","spending","income"],"description":"Visible cash-flow series."},"grouping":{"type":"string","enum":["daily","weekly","monthly"],"description":"Time bucket size."},"dateRange":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Inclusive start date."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Inclusive end date."}},"required":["from","to"],"additionalProperties":false},"accountIds":{"type":"array","items":{"type":"string"},"uniqueItems":true,"description":"Existing account IDs to include. Empty or omitted includes every account."},"categoryIds":{"type":"array","items":{"type":"string"},"uniqueItems":true,"description":"Existing category IDs to include. Empty or omitted includes every category."},"comparePreviousPeriod":{"type":"boolean","description":"Overlay the immediately preceding period of equal duration."},"highlightedDates":{"type":"array","items":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$"},"uniqueItems":true,"description":"Dates to emphasize on the chart."},"highlightedCategoryIds":{"type":"array","items":{"type":"string"},"uniqueItems":true,"description":"Existing category IDs to emphasize as drivers."},"insightTitle":{"type":"string","minLength":1,"maxLength":120,"description":"Short agent-generated title explaining the chart insight."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"configure_category_spending_chart","kind":"act","impl":"imperative","description":"Update the currently visible Dashboard spending-by-category pie chart after analyzing Koshara data with read-only finance tools. This changes temporary presentation state only and never changes transactions, categories, or budgets.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"dateRange":{"type":"object","properties":{"from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Inclusive start date."},"to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Inclusive end date."}},"required":["from","to"],"additionalProperties":false},"accountIds":{"type":"array","items":{"type":"string"},"uniqueItems":true,"description":"Existing account IDs to include. Empty or omitted includes every account."},"categoryIds":{"type":"array","items":{"type":"string"},"uniqueItems":true,"description":"Existing category IDs to include. Empty or omitted includes every spending category."},"highlightedCategoryIds":{"type":"array","items":{"type":"string"},"uniqueItems":true,"description":"Existing category IDs to emphasize in the pie chart."},"insightTitle":{"type":"string","minLength":1,"maxLength":120,"description":"Short agent-generated title explaining the category insight."}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/dashboard","pages":["/dashboard"]},{"name":"create_account","kind":"transact","impl":"imperative","description":"Create a Koshara account only when the user explicitly requested or confirmed that new account. Do not create accounts automatically while interpreting a statement.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"name":{"type":"string"},"type":{"type":"string","enum":["bank","credit-card","cash","wallet","other"]},"last4":{"type":"string","pattern":"^\\d{4}$"},"institution":{"type":"string"}},"required":["name","type"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/workspace","pages":["/workspace","/accounts","/categories"]},{"name":"update_account","kind":"act","impl":"imperative","description":"Update selected fields on an existing Koshara account. Omitted fields remain unchanged.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string"},"name":{"type":"string"},"type":{"type":"string","enum":["bank","credit-card","cash","wallet","other"]},"last4":{"type":"string"},"institution":{"type":"string"}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/workspace","pages":["/workspace","/accounts","/categories"]},{"name":"delete_account","kind":"transact","impl":"imperative","description":"Permanently delete an account and all transactions assigned to it. Only call this after the user explicitly requests deletion and understands the returned transaction count will also be removed.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/workspace","pages":["/workspace","/accounts","/categories"]},{"name":"get_transaction","kind":"answer","impl":"imperative","description":"Get one Koshara transaction by its exact ID, including review metadata and resolved account/category names.","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/transactions","pages":["/transactions"]},{"name":"create_transaction","kind":"act","impl":"imperative","description":"Create one transaction in the live Koshara store. Use create_transactions instead for statement imports. Do not silently guess an uncertain account or category: ask the user, or follow their instruction by using a suitable fallback such as Uncategorized and reviewStatus needs_review.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"date":{"type":"string"},"description":{"type":"string"},"amount":{"type":"number","exclusiveMinimum":0},"kind":{"type":"string","enum":["expense","income"],"default":"expense"},"accountId":{"type":"string"},"categoryId":{"type":"string"},"notes":{"type":"string"},"reviewStatus":{"type":"string","enum":["confirmed","needs_review"],"default":"confirmed"},"source":{"type":"string","enum":["manual","agent"],"default":"agent"},"confidence":{"type":"number","minimum":0,"maximum":1}},"required":["date","description","amount","accountId","categoryId"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/transactions","pages":["/transactions"]},{"name":"update_transaction","kind":"act","impl":"imperative","description":"Update selected fields on an existing transaction. Use reviewStatus confirmed after uncertainty has been resolved; omitted fields remain unchanged.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string"},"date":{"type":"string"},"description":{"type":"string"},"amount":{"type":"number","exclusiveMinimum":0},"kind":{"type":"string","enum":["expense","income"]},"accountId":{"type":"string"},"categoryId":{"type":"string"},"notes":{"type":"string"},"reviewStatus":{"type":"string","enum":["confirmed","needs_review"]},"confidence":{"type":"number","minimum":0,"maximum":1}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/transactions","pages":["/transactions"]},{"name":"delete_transaction","kind":"transact","impl":"imperative","description":"Permanently delete one transaction. Only call this after the user explicitly asks to delete that exact transaction.","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/transactions","pages":["/transactions"]}],"category":"Finance & Crypto","apiSurface":"spec","toolCount":20}}