Tool tree
gradeNot graded
page: Every page
pingAction
A trivial tool to confirm the page is reachable by the agent.
View tool JSON
{
"name": "ping",
"kind": "act",
"impl": "imperative",
"description": "A trivial tool to confirm the page is reachable by the agent.",
"inputSchema": {
"type": "object",
"properties": {
"message": {
"type": "string",
"description": "Optional message to echo back."
}
},
"required": []
},
"page": "/"
}list_pluginsAnswer
List available document plugins.
View tool JSON
{
"name": "list_plugins",
"kind": "answer",
"impl": "imperative",
"description": "List available document plugins.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/"
}select_pluginAction
Switch the active plugin. This changes which tools are registered.
View tool JSON
{
"name": "select_plugin",
"kind": "act",
"impl": "imperative",
"description": "Switch the active plugin. This changes which tools are registered.",
"inputSchema": {
"type": "object",
"properties": {
"plugin": {
"type": "string",
"description": "Plugin id: finance or labs",
"enum": [
"finance",
"labs"
]
}
},
"required": [
"plugin"
]
},
"page": "/"
}get_audit_logAnswer
Return the full audit log of disclosures and denials.
View tool JSON
{
"name": "get_audit_log",
"kind": "answer",
"impl": "imperative",
"description": "Return the full audit log of disclosures and denials.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/"
}list_documentsAnswer
List documents loaded into the active document set (plugin) only — never documents from another plugin.
View tool JSON
{
"name": "list_documents",
"kind": "answer",
"impl": "imperative",
"description": "List documents loaded into the active document set (plugin) only — never documents from another plugin.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/"
}get_disclosure_policyAnswer
Get the current disclosure policy and active grants.
View tool JSON
{
"name": "get_disclosure_policy",
"kind": "answer",
"impl": "imperative",
"description": "Get the current disclosure policy and active grants.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/"
}get_page_textAnswer
Get the text of a specific page, with redaction applied according to the disclosure policy. Requires consent if denied fields are present.
View tool JSON
{
"name": "get_page_text",
"kind": "answer",
"impl": "imperative",
"description": "Get the text of a specific page, with redaction applied according to the disclosure policy. Requires consent if denied fields are present.",
"inputSchema": {
"type": "object",
"properties": {
"doc": {
"type": "string",
"description": "Document id"
},
"page": {
"type": "number",
"description": "Page number (1-based)"
},
"reason": {
"type": "string",
"description": "Why the agent needs this page"
}
},
"required": [
"doc",
"page"
]
},
"page": "/"
}request_disclosureAction
Request just-in-time disclosure for a denied scope.
View tool JSON
{
"name": "request_disclosure",
"kind": "act",
"impl": "imperative",
"description": "Request just-in-time disclosure for a denied scope.",
"inputSchema": {
"type": "object",
"properties": {
"scope": {
"type": "string",
"description": "Scope to disclose"
},
"reason": {
"type": "string",
"description": "Why it is needed"
},
"level": {
"type": "string",
"description": "once | session | always",
"enum": [
"once",
"session",
"always"
]
}
},
"required": [
"scope",
"reason"
]
},
"page": "/"
}page: Finance
get_page_textAnswer
Get raw text from a specific statement page only when the user explicitly needs source-page content. Do not use for transaction categorisation, merchant mappings, charts, spending analysis, or plans; use list_accepted_transactions and finance analysis tools for those tasks. Raw page access requires consent if denied fields are present.
View tool JSON
{
"name": "get_page_text",
"kind": "answer",
"impl": "imperative",
"description": "Get raw text from a specific statement page only when the user explicitly needs source-page content. Do not use for transaction categorisation, merchant mappings, charts, spending analysis, or plans; use list_accepted_transactions and finance analysis tools for those tasks. Raw page access requires consent if denied fields are present.",
"inputSchema": {
"type": "object",
"properties": {
"doc": {
"type": "string",
"description": "Document id"
},
"page": {
"type": "number",
"description": "Page number (1-based)"
},
"reason": {
"type": "string",
"description": "Why the agent needs this page"
}
},
"required": [
"doc",
"page"
]
},
"page": "/finance"
}propose_transactionsAction
Scan loaded statements and propose transaction rows for human review.
View tool JSON
{
"name": "propose_transactions",
"kind": "act",
"impl": "imperative",
"description": "Scan loaded statements and propose transaction rows for human review.",
"inputSchema": {
"type": "object",
"properties": {
"doc": {
"type": "string",
"description": "Document id, or \"all\" for all loaded documents"
}
},
"required": [
"doc"
]
},
"page": "/finance"
}get_review_statusAnswer
Get the current state of staged proposals, including accept/reject notes.
View tool JSON
{
"name": "get_review_status",
"kind": "answer",
"impl": "imperative",
"description": "Get the current state of staged proposals, including accept/reject notes.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}reconcile_statementAction
Check that debits + credits match the closing balance on a statement.
View tool JSON
{
"name": "reconcile_statement",
"kind": "act",
"impl": "imperative",
"description": "Check that debits + credits match the closing balance on a statement.",
"inputSchema": {
"type": "object",
"properties": {
"doc": {
"type": "string",
"description": "Document id"
},
"openingBalance": {
"type": "number",
"description": "Opening balance"
},
"closingBalance": {
"type": "number",
"description": "Closing balance"
}
},
"required": [
"doc",
"openingBalance",
"closingBalance"
]
},
"page": "/finance"
}list_categoriesAnswer
List default spending categories.
View tool JSON
{
"name": "list_categories",
"kind": "answer",
"impl": "imperative",
"description": "List default spending categories.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}list_accepted_transactionsAnswer
List the locally extracted transactions the human explicitly accepted for processing. Use this tool—not get_page_text—when categorising spending, identifying merchants, proposing mappings, or inspecting transaction descriptions. It returns only accepted structured rows and never exposes raw statement text, account details, or rejected transactions.
View tool JSON
{
"name": "list_accepted_transactions",
"kind": "answer",
"impl": "imperative",
"description": "List the locally extracted transactions the human explicitly accepted for processing. Use this tool—not get_page_text—when categorising spending, identifying merchants, proposing mappings, or inspecting transaction descriptions. It returns only accepted structured rows and never exposes raw statement text, account details, or rejected transactions.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}propose_category_mappingsAction
Inspect accepted extracted transactions and stage recognized merchant/category rules for human approval. Use this whenever the user asks to categorise spending or show a category chart. It never reads raw statement text or silently applies classifications. For unmatched merchants, use list_accepted_transactions and propose_mapping. After proposing, ask the human to approve the visible mappings; approval updates the chart.
View tool JSON
{
"name": "propose_category_mappings",
"kind": "act",
"impl": "imperative",
"description": "Inspect accepted extracted transactions and stage recognized merchant/category rules for human approval. Use this whenever the user asks to categorise spending or show a category chart. It never reads raw statement text or silently applies classifications. For unmatched merchants, use list_accepted_transactions and propose_mapping. After proposing, ask the human to approve the visible mappings; approval updates the chart.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}propose_mappingAction
Propose a merchant/category classification rule based on accepted transaction descriptions. Call list_accepted_transactions first; raw statement text and get_page_text are not needed for categorisation. This creates a rule, not individual rows. One approved rule classifies every matching transaction, now and on future statements. Staged until a human approves; applied at read time only, never rewrites a stored transaction.
View tool JSON
{
"name": "propose_mapping",
"kind": "act",
"impl": "imperative",
"description": "Propose a merchant/category classification rule based on accepted transaction descriptions. Call list_accepted_transactions first; raw statement text and get_page_text are not needed for categorisation. This creates a rule, not individual rows. One approved rule classifies every matching transaction, now and on future statements. Staged until a human approves; applied at read time only, never rewrites a stored transaction.",
"inputSchema": {
"type": "object",
"properties": {
"pattern": {
"type": "string",
"description": "Lowercase substring to match against transaction descriptions, e.g. \"amzn mktp\""
},
"merchant": {
"type": "string",
"description": "Human-readable merchant name, e.g. \"Amazon\""
},
"category": {
"type": "string",
"description": "Category, e.g. Dining out, Groceries, Subscriptions, Transport, Health, Bills, Income, Other"
}
},
"required": [
"pattern",
"merchant",
"category"
]
},
"page": "/finance"
}get_goalAnswer
Get the current goal (null if none is set yet — savings goal or debt/loan goal, whichever the human is currently working on). Reflects the page right now, including unsaved slider drags.
View tool JSON
{
"name": "get_goal",
"kind": "answer",
"impl": "imperative",
"description": "Get the current goal (null if none is set yet — savings goal or debt/loan goal, whichever the human is currently working on). Reflects the page right now, including unsaved slider drags.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}get_planAnswer
Get the current plan — goal, per-category adjustments, and the human's notes — reflecting exactly what's on screen right now, including slider drags the human hasn't explicitly saved. Always call this before judging a plan (e.g. "is this feasible?") rather than assuming it still matches what you last proposed. Null if no goal is set yet.
View tool JSON
{
"name": "get_plan",
"kind": "answer",
"impl": "imperative",
"description": "Get the current plan — goal, per-category adjustments, and the human's notes — reflecting exactly what's on screen right now, including slider drags the human hasn't explicitly saved. Always call this before judging a plan (e.g. \"is this feasible?\") rather than assuming it still matches what you last proposed. Null if no goal is set yet.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}get_plan_feasibilityAnswer
Check whether the current plan's required savings/payment is actually achievable given the account's real average monthly surplus (income minus expense) from the loaded statements. Use this whenever asked "is this plan feasible?" instead of eyeballing the numbers.
View tool JSON
{
"name": "get_plan_feasibility",
"kind": "answer",
"impl": "imperative",
"description": "Check whether the current plan's required savings/payment is actually achievable given the account's real average monthly surplus (income minus expense) from the loaded statements. Use this whenever asked \"is this plan feasible?\" instead of eyeballing the numbers.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}propose_savings_planAction
Draft a savings plan toward a goal (e.g. a car, an emergency fund) and advise which accepted spending categories offer realistic savings opportunities. Every adjustment must include a rationale grounded in the user's category spending. Staged until approved; renders as advice plus editable sliders on the page.
View tool JSON
{
"name": "propose_savings_plan",
"kind": "act",
"impl": "imperative",
"description": "Draft a savings plan toward a goal (e.g. a car, an emergency fund) and advise which accepted spending categories offer realistic savings opportunities. Every adjustment must include a rationale grounded in the user's category spending. Staged until approved; renders as advice plus editable sliders on the page.",
"inputSchema": {
"type": "object",
"properties": {
"goal": {
"type": "object",
"description": "Goal object: { label, target, current, rate? } — rate is an assumed annual return, as a plain percentage number where 5 means 5% (not 0.05). Omit or 0 if you're not assuming any investment growth."
},
"adjustments": {
"type": "array",
"description": "Savings advice as an array of { category, currentMonthly, targetMonthly, rationale }. Recommend only categories supported by accepted transaction data, and explain why each reduction is realistic. currentMonthly must be a true monthly average — use get_spend_by_category's avgMonthly field, never its total (which is summed across every month of statements loaded, not one month) — or the plan will propose an unaffordable amount."
}
},
"required": [
"goal",
"adjustments"
]
},
"page": "/finance"
}propose_repayment_planAction
Draft a debt repayment plan: outstanding balance, interest rate, and monthly payment freed up from spending adjustments. Staged until approved; renders as sliders on the page.
View tool JSON
{
"name": "propose_repayment_plan",
"kind": "act",
"impl": "imperative",
"description": "Draft a debt repayment plan: outstanding balance, interest rate, and monthly payment freed up from spending adjustments. Staged until approved; renders as sliders on the page.",
"inputSchema": {
"type": "object",
"properties": {
"goal": {
"type": "object",
"description": "Goal object: { label, current, target?, rate } — current is the outstanding balance, target is the payoff target (default 0), rate is the annual interest rate (APR) as a plain percentage number where 20 means 20% (not 0.20)"
},
"adjustments": {
"type": "array",
"description": "Array of { category, currentMonthly, targetMonthly, rationale } — freed cash applied as extra payment toward the balance. currentMonthly must be a true monthly average (get_spend_by_category's avgMonthly field, not its total) or the payment plan won't be affordable."
}
},
"required": [
"goal",
"adjustments"
]
},
"page": "/finance"
}get_spend_summaryAnswer
Aggregate summary of committed transactions: income, expense, savings rate, top spending categories. Use for open-ended questions about spending patterns.
View tool JSON
{
"name": "get_spend_summary",
"kind": "answer",
"impl": "imperative",
"description": "Aggregate summary of committed transactions: income, expense, savings rate, top spending categories. Use for open-ended questions about spending patterns.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}get_spend_by_categoryAnswer
Spend per category across accepted transactions, sorted highest first—both the total across all loaded statements and the monthly average. This and list_accepted_transactions are sufficient for categorisation and planning; never request raw statement text for those tasks. Use `avgMonthly`, not `total`, as a category's "currentMonthly" when drafting a plan.
View tool JSON
{
"name": "get_spend_by_category",
"kind": "answer",
"impl": "imperative",
"description": "Spend per category across accepted transactions, sorted highest first—both the total across all loaded statements and the monthly average. This and list_accepted_transactions are sufficient for categorisation and planning; never request raw statement text for those tasks. Use `avgMonthly`, not `total`, as a category's \"currentMonthly\" when drafting a plan.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}plot_spend_by_categoryAction
Render the "Spend by category" chart from accepted transactions and human-approved mappings. If mappings are pending or none are approved, this waits instead of applying hidden guesses: call propose_category_mappings and ask the human to approve the visible proposals first.
View tool JSON
{
"name": "plot_spend_by_category",
"kind": "act",
"impl": "imperative",
"description": "Render the \"Spend by category\" chart from accepted transactions and human-approved mappings. If mappings are pending or none are approved, this waits instead of applying hidden guesses: call propose_category_mappings and ask the human to approve the visible proposals first.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}get_monthly_cashflowAnswer
Net cashflow (income minus expense) per month across committed transactions.
View tool JSON
{
"name": "get_monthly_cashflow",
"kind": "answer",
"impl": "imperative",
"description": "Net cashflow (income minus expense) per month across committed transactions.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}find_recurringAnswer
Find repeating charges across committed transactions.
View tool JSON
{
"name": "find_recurring",
"kind": "answer",
"impl": "imperative",
"description": "Find repeating charges across committed transactions.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/finance"
}page: Labs
propose_resultsAction
Scan loaded lab reports and propose result rows for human review.
View tool JSON
{
"name": "propose_results",
"kind": "act",
"impl": "imperative",
"description": "Scan loaded lab reports and propose result rows for human review.",
"inputSchema": {
"type": "object",
"properties": {
"doc": {
"type": "string",
"description": "Document id, or \"all\" for all loaded documents"
}
},
"required": [
"doc"
]
},
"page": "/labs"
}get_review_statusAnswer
Get the current state of staged result proposals, including accept/reject notes.
View tool JSON
{
"name": "get_review_status",
"kind": "answer",
"impl": "imperative",
"description": "Get the current state of staged result proposals, including accept/reject notes.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/labs"
}propose_reference_rangeAction
Propose a standard reference range for an analyte the report printed no range for. Staged until a human approves it; never applied silently.
View tool JSON
{
"name": "propose_reference_range",
"kind": "act",
"impl": "imperative",
"description": "Propose a standard reference range for an analyte the report printed no range for. Staged until a human approves it; never applied silently.",
"inputSchema": {
"type": "object",
"properties": {
"analyte": {
"type": "string",
"description": "Canonical analyte name"
},
"low": {
"type": "number",
"description": "Lower bound"
},
"high": {
"type": "number",
"description": "Upper bound"
},
"unit": {
"type": "string",
"description": "Unit"
},
"source": {
"type": "string",
"description": "Cited source, e.g. \"Mayo Clinic Laboratories\""
},
"population": {
"type": "string",
"description": "Population the range applies to, e.g. \"adult male\""
},
"reason": {
"type": "string",
"description": "Why this fallback is being proposed"
}
},
"required": [
"analyte",
"unit",
"source",
"population",
"reason"
]
},
"page": "/labs"
}list_seriesAnswer
List accepted lab results grouped by analyte, as time series with the effective reference range for each.
View tool JSON
{
"name": "list_series",
"kind": "answer",
"impl": "imperative",
"description": "List accepted lab results grouped by analyte, as time series with the effective reference range for each.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/labs"
}plot_seriesAction
Get the plotted time series for one analyte, with its reference band, so the agent can describe the trend.
View tool JSON
{
"name": "plot_series",
"kind": "act",
"impl": "imperative",
"description": "Get the plotted time series for one analyte, with its reference band, so the agent can describe the trend.",
"inputSchema": {
"type": "object",
"properties": {
"analyte": {
"type": "string",
"description": "Canonical analyte name"
}
},
"required": [
"analyte"
]
},
"page": "/labs"
}plot_panelAction
Get the plotted time series for every analyte in a named panel (e.g. "Lipid Panel").
View tool JSON
{
"name": "plot_panel",
"kind": "act",
"impl": "imperative",
"description": "Get the plotted time series for every analyte in a named panel (e.g. \"Lipid Panel\").",
"inputSchema": {
"type": "object",
"properties": {
"panel": {
"type": "string",
"description": "Panel name as printed on the report"
}
},
"required": [
"panel"
]
},
"page": "/labs"
}plot_heatmapAction
Get a matrix of every analyte over every collection date, each cell normalised to its position in the reference band (0 = low bound, 1 = high bound) so drift is visible at a glance.
View tool JSON
{
"name": "plot_heatmap",
"kind": "act",
"impl": "imperative",
"description": "Get a matrix of every analyte over every collection date, each cell normalised to its position in the reference band (0 = low bound, 1 = high bound) so drift is visible at a glance.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/labs"
}find_out_of_rangeAnswer
List accepted results currently outside their effective reference band, most recent first — a starting point for a diet plan goal.
View tool JSON
{
"name": "find_out_of_range",
"kind": "answer",
"impl": "imperative",
"description": "List accepted results currently outside their effective reference band, most recent first — a starting point for a diet plan goal.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/labs"
}get_goalAnswer
Get the current dietary goal.
View tool JSON
{
"name": "get_goal",
"kind": "answer",
"impl": "imperative",
"description": "Get the current dietary goal.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/labs"
}get_planAnswer
Get the current approved diet plan.
View tool JSON
{
"name": "get_plan",
"kind": "answer",
"impl": "imperative",
"description": "Get the current approved diet plan.",
"inputSchema": {
"type": "object",
"properties": {},
"required": []
},
"page": "/labs"
}propose_diet_planAction
Create or revise the diet-plan artifact shown in the page table. Always use this tool—not browser clicks or typing—when the user asks for a new plan or asks to add, remove, replace, or change an existing plan item. For a revision, first call get_plan, apply the requested change to the returned goal and adjustments, then call propose_diet_plan with the complete revised plan. The proposal renders immediately for human review and is saved only after approval.
View tool JSON
{
"name": "propose_diet_plan",
"kind": "act",
"impl": "imperative",
"description": "Create or revise the diet-plan artifact shown in the page table. Always use this tool—not browser clicks or typing—when the user asks for a new plan or asks to add, remove, replace, or change an existing plan item. For a revision, first call get_plan, apply the requested change to the returned goal and adjustments, then call propose_diet_plan with the complete revised plan. The proposal renders immediately for human review and is saved only after approval.",
"inputSchema": {
"type": "object",
"properties": {
"goal": {
"type": "object",
"description": "Goal object with analyte, label, target, current, unit"
},
"adjustments": {
"type": "array",
"description": "Array of {item, action, targetAnalyte, rationale} objects"
}
},
"required": [
"goal",
"adjustments"
]
},
"page": "/labs"
}review_diet_planAction
Publish a final review of the latest edited diet-plan table on the page. Before calling, use get_plan to inspect every row. Pass a finding for every dietary claim. Format summary as 3–6 concise newline-separated bullets, each beginning with "• ": cover unresolved/resolved labs, uncovered issues, questionable plan items, and the recommended next step. The page renders this summary, so never leave it only in chat. Multi-analyte targets such as "Vitamin D and Total Cholesterol" are matched separately against lab results.
View tool JSON
{
"name": "review_diet_plan",
"kind": "act",
"impl": "imperative",
"description": "Publish a final review of the latest edited diet-plan table on the page. Before calling, use get_plan to inspect every row. Pass a finding for every dietary claim. Format summary as 3–6 concise newline-separated bullets, each beginning with \"• \": cover unresolved/resolved labs, uncovered issues, questionable plan items, and the recommended next step. The page renders this summary, so never leave it only in chat. Multi-analyte targets such as \"Vitamin D and Total Cholesterol\" are matched separately against lab results.",
"inputSchema": {
"type": "object",
"properties": {
"findings": {
"type": "array",
"description": "One entry per plan row: {item, status: \"supported\" | \"questionable\" | \"unsupported\", note}. Include user-added rows and flag false or weak claims."
},
"summary": {
"type": "string",
"description": "A readable 3–6 line summary. Every line must be one concise bullet beginning with \"• \". Include lab status, plan concerns, and next steps; do not submit a paragraph."
}
},
"required": [
"findings",
"summary"
]
},
"page": "/labs"
}