← WebMCP Directory

Tool tree

koshara.vercel.app

Finance & CryptoTools verified
Website
Koshara
Explore capabilities

    page: Statements

    check_transactionsAnswer

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/statements"
    }
    get_import_contextAnswer

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/statements"
    }
    create_import_sessionAction

    Create a temporary statement import workspace. This does not add anything to Transactions. Reuse the returned session ID when staging rows or proposing groups.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sourceName": {
            "type": "string"
          },
          "accountId": {
            "type": "string"
          }
        },
        "required": [
          "sourceName"
        ],
        "additionalProperties": false
      },
      "page": "/statements"
    }
    stage_transactionsAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/statements"
    }
    update_import_itemAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/statements"
    }
    group_import_itemsAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/statements"
    }
    get_import_sessionAnswer

    Return the current staged rows, review statuses, duplicate references, and proposed groups for one import session. This is read-only.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "sessionId": {
            "type": "string"
          }
        },
        "required": [
          "sessionId"
        ],
        "additionalProperties": false
      },
      "page": "/statements"
    }

    page: Dashboard

    get_accountsAnswer

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/dashboard"
    }
    list_categoriesAnswer

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      },
      "page": "/dashboard"
    }
    search_transactionsAnswer

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/dashboard"
    }
    get_spending_summaryAnswer

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/dashboard"
    }
    configure_cashflow_chartAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/dashboard"
    }
    configure_category_spending_chartAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/dashboard"
    }

    page: Workspace

    create_accountSensitive Action

    Create a Koshara account only when the user explicitly requested or confirmed that new account. Do not create accounts automatically while interpreting a statement.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/workspace"
    }
    update_accountAction

    Update selected fields on an existing Koshara account. Omitted fields remain unchanged.

    View tool JSON
    {
      "name": "update_account",
      "kind": "act",
      "impl": "imperative",
      "description": "Update selected fields on an existing Koshara account. Omitted fields remain unchanged.",
      "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
      },
      "page": "/workspace"
    }
    delete_accountSensitive Action

    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.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "page": "/workspace"
    }

    page: Transactions

    get_transactionAnswer

    Get one Koshara transaction by its exact ID, including review metadata and resolved account/category names.

    View tool JSON
    {
      "name": "get_transaction",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get one Koshara transaction by its exact ID, including review metadata and resolved account/category names.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "page": "/transactions"
    }
    create_transactionAction

    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.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/transactions"
    }
    update_transactionAction

    Update selected fields on an existing transaction. Use reviewStatus confirmed after uncertainty has been resolved; omitted fields remain unchanged.

    View tool JSON
    {
      "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.",
      "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
      },
      "page": "/transactions"
    }
    delete_transactionSensitive Action

    Permanently delete one transaction. Only call this after the user explicitly asks to delete that exact transaction.

    View tool JSON
    {
      "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "additionalProperties": false
      },
      "page": "/transactions"
    }