← Back to all apps

Intuit TurboTax

Financial Servicesby Intuit
Launched Aug 21, 2026 on ChatGPTLaunched Mar 12, 2026 on Claude

Get fast federal tax estimates and discover filing options with Intuit TurboTax-powered tools. Start with a simple tax estimator that guides you through the info you need and see your refund or amount owed as you go. When you're ready for expert help, connect with trusted tax pros. Confident tax filing starts here.

By connecting, you agree to the Intuit TurboTax [Terms of Service](https://www.intuit.com/legal/terms/en-us/turbotax/online-license/) and acknowledge Intuit's [Global Privacy Statement](https://www.intuit.com/privacy/statement/).

11ChatGPT Tools
3Claude Tools
IntuitDeveloper
Financial ServicesCategory

Use Cases

financial-services

Available Tools

Book Appointment

book_appointment
Full Description

Use this when the user wants to book an appointment with a tax expert they've viewed. REQUIRES a prior expert_search call in this conversation.

REQUIRED WORKFLOW: 1. expert_search must have been called first 2. From the search response's structuredContent, extract:

  • search_id (from structuredContent.search_id)
  • id (from structuredContent.experts[].id for the chosen expert)
  • availability_id (from structuredContent.experts[].closest_availability[].slots[].id for the time slot)

3. Collect from user:

  • first_name: User's first name
  • last_name: User's last name
  • phone_number: User's phone number (should be numbers only - you can remove formatting characters like +, -, ., spaces, or parentheses before passing)
  • email: User's email address

4. MANDATORY CONFIRMATION

  • You MUST explicitly confirm ALL booking details with the user and wait for their response:

Display these details clearly:

  • Name (first and last)
  • Phone number
  • Email address
  • Expert name
  • Date and time of appointment

Then ask: 'Please confirm these details are correct before I proceed with the booking.' 5. Only after user explicitly confirms (e.g., 'yes', 'looks good', 'confirm'), call this tool

CRITICAL RULES:

  • NEVER skip the confirmation step - you MUST always confirm details and wait for user response before booking
  • ONLY use search_id, id, and availability_id from expert_search's structuredContent
  • NEVER make up or guess these values
  • NEVER show IDs (search_id, availability_id, etc.) to the user in conversation
  • If you don't have a recent expert_search result, call expert_search first
  • The availability_id must be from the specific time slot the user wants to book

RETRY BEHAVIOR:

  • If the booking did not go through for any reason and the user wants to retry, you MAY retry the booking with the same parameters or different parameters

DO NOT use this tool for:

  • Searching for experts (use expert_search instead)
  • Modifying or canceling bookings
Parameters (6 required)
Required
availability_idstring

Availability slot ID from search results

emailstring

User's email address

first_namestring

User's first name

last_namestring

User's last name

phone_numberstring

User's phone number (accepts various formats - will be validated and converted to E.164 format)

search_idstring

Search session ID from expert_search

Document Upload Private

document_upload_private
Full Description

Internal tool for uploading files. Called by the file upload widget with all files in a single call. Accepts a JSON array of file objects. For small static content files like tax forms.

Parameters (1 required)
Required
filesstring

JSON array of file objects, each with: base64_content (string) OR encrypted_content_b64+wrapped_key_b64+iv_b64+key_id, file_name (string), mimetype (string), size (number)

Expert Availability

expert_availability
Full Description

Fetch detailed availability for a specific expert.

Use this tool when a user wants to see more time slots for an expert or schedule an appointment at a specific time.

PARAMETERS:

  • search_id: REQUIRED. The search_id from the previous expert_search call
  • date: Optional date filter (YYYY-MM-DD). If not provided, returns all available slots

RETURNS:

  • Expert basic info (name, photo, rating, experience)
  • Available time slots grouped by date
  • Widget UI for slot selection

IMPORTANT:

  • DO NOT list specific times or time slots in your response to the user
  • DO NOT show internal IDs (search_id, availability_id, etc.) to the user
  • Let the widget display all time options interactively
  • Simply tell the user to select a time from the widget
Parameters (1 required, 1 optional)
Required
search_idstring

The search_id from the previous expert_search call

Optional
datestring

Optional date to filter availability (YYYY-MM-DD format)

Default: null

Expert Search

expert_search
Full Description

Use this tool when the user wants help with their U.S. taxes or wants to find, search, or connect with a TurboTax tax expert. This tool only supports U.S. tax situations. Do not use it for users filing taxes in other countries. When invoked, display expert profiles with a single available time slot.

ConnectIntent Determination Rules

  • First, call expert_search() without connect_intent parameter to discover available options
  • ONLY provide this parameter if you receive a validation error asking you to choose between options.
  • If you receive a validation error listing the available options, then present these options to the user and ask them to choose
  • After user selects an option, follow the next steps based on their selection.
  • If the user explicitly states they want to "book appointment", "schedule", or similar then use connect_intent='Book Appointment'.
  • If the user explicitly states they want to "connect now", "talk now", or similar then use connect_intent='Connect Now'.

After user selects connect_intent:

  • If user selected 'Connect Now': Call expert_search(connect_intent='Connect Now')

ONLY IF user selected 'Book Appointment', ask about their tax situation BEFORE calling the tool: When user selects 'Book Appointment', ask them to select one or more tax situations. Present the following list as clear selectable options:

  • "Job (W-2)"
  • "Self-employed/freelance"
  • "Sold stock"
  • "Sold crypto"
  • "Retirement income"
  • "Multiple states"
  • "Rental properties"
  • "Other income"

Then call expert_search with both connect_intent='Book Appointment' AND the selected tax situations.

IMPORTANT: Tax situations are NOT required for "Connect Now" option.

  • Timezone parameter rules (Book Appointment only)
  • Timezone is ONLY required for "Book Appointment". It is NOT required for "Connect Now".
  • NEVER guess or invent a timezone.
  • ONLY ask this parameter if you receive a validation error saying timezone is missing. When you do receive that error, then ask the user for their timezone and retry with the timezone parameter.
  • Ask the user for their timezone in a user-friendly way ("What's your timezone?" or "What city are you in?").
  • The user may answer in any format. YOU must convert it to a valid IANA timezone string for the tool parameter.

IMPORTANT

  • Connect Now Flow:
    • If structuredContent contains 'connect_link', NEVER mention or display the URL to the user.
    • Simply inform them that they can click the button in the widget to connect.
    • The connect_link is for widget use only and should never be exposed in your response text

WHEN NOT TO USE THIS TOOL:

  • The user is filing taxes outside the United States. This tool only connects users with U.S. tax experts via TurboTax.
  • The user clicks "More times" → use expert_availability instead.
  • The user says "see more times" or "show more availability" → use expert_availability.
  • The user wants all available slots for a specific expert → use expert_availability.
  • The user is asking general questions about taxes, deductions, forms, timelines, rules, or strategies.
  • DO NOT use this tool for General tax questions, Filing returns, Tax calculations.

ALLOWED TOOL INVOCATION CONDITIONS:

  • If connect_intent='Book Appointment': The user MUST have selected one or more tax situations from the required list.
  • If connect_intent='Connect Now': Tax situations are NOT required. You may call the tool without tax situations.
  • The user is not asking for more times, more availability, or detailed scheduling for a specific expert.

If any of these conditions are missing, incomplete, or ambiguous: DO NOT CALL THE TOOL. Ask the necessary questions to the user instead.

Parameters (0 required, 3 optional)
Optional
connect_intentstring

How the user wants to proceed with connecting to an expert. IMPORTANT: DO NOT guess, infer, or fabricate connect_intent values. DO NOT provide this parameter on first call. ONLY provide this parameter if you receive a validation error asking you to choose between options. When you do receive that error, the error message will list the available options. Ask the user how they would like to proceed and retry with the connect_intent parameter using one of the options from the error message.

Default: null
tax_situationsarray

Optional tax situations from: 'Job (W-2)', 'Self-employed/freelance', 'Sold stock', 'Sold crypto', 'Retirement income', 'Multiple states', 'Rental properties', 'Other income'. IMPORTANT: Only provide this if you receive a TaxSituationsNeeded error. Do NOT ask for tax situations on first call or for 'Connect Now' flow.

Default: null
timezonestring

IANA timezone string (e.g., 'America/Chicago', 'America/New_York', 'America/Los_Angeles'). ONLY required for 'Book Appointment' flow. NOT required for 'Connect Now'. IMPORTANT: DO NOT guess, infer, or fabricate timezone values. If you can extract this from the request context, prefill it automatically. Otherwise, leave empty/null and only ask the user if you receive a validation error. Incorrect timezone directly impacts booking times shown to the user.

Default: null

Tax Interview

interview
Full Description

Conduct a structured multi-page tax interview. Each user has one active session — no session ID needed. INVALID COMBINATIONS — these are bugs:

  • topic + anything else (answers, action, bulk_entry, etc.): topic only starts a session; no other params are valid in the same call
  • answers with invented field names: field_id values must be copied from the tool response, never guessed
  • any key other than field_id in an answers entry (not "key", "name", "id", "question", "answer", "fieldId", etc.)
  • any parameter not in this list: topic, answers, action, bulk_entry

REMOVING OR CHANGING A SITUATION: There is no delete or remove operation. To undo a situation (e.g., user says "actually I don't have student loans"): interview(answers=[{"field_id": "<copied from response>", "value": false}], bulk_entry=True) Set the field to false — do not try to omit, delete, or use a remove_items key. MODE SELECTION — choose exactly one: | Goal | Params | |------------------------------------|---------------------------------| | Start new interview | topic only | | Start new interview + view all fields | topic only, then call again with bulk_entry=True | | Peek at current page | (no params) | | Save answers, stay on page | answers only | | Save answers and advance | answers + action | | Go back (no validation) | action="back" | | Complete interview | action="complete" | | Peek all fields (all pages) | bulk_entry=True | | Bulk save many fields | answers + bulk_entry=True | To save progress and exit mid-interview: submit answers without action — answers are persisted immediately. Resume any time by calling interview() with no parameters. PARAMETERS:

  • topic (string): Interview topic. Starts a new session, replacing any existing one. NEVER combine with answers, action, or bulk_entry.
  • answers (array): Each entry must be {"field_id": "...", "value": ...}. The key is always field_id. Copy field_id exactly from the returned fields list — never invent field names. Field types (boolean, string, number) are indicated in each field's definition in the response. For yes/no fields use JSON booleans (true/false), not strings.
  • action (string): Copy the action_id value from the returned actions list. Valid values are page-specific — passing an invalid action returns an error listing valid options. Answers submitted alongside action are persisted before the action executes.
  • bulk_entry (boolean, default false): NOT persisted — set true on every call where bulk behavior is needed.

AUTO-MERGE: Applies ONLY when action != "back" AND bulk_entry is false. When active: required fields that already have a current_value are preserved even if omitted from answers. When NOT active (action="back" or bulk_entry=True): only the fields you explicitly include in answers are updated. Fields you omit are not touched. UPDATING A SPECIFIC SITUATION (e.g. "I have mortgage interest", "I got married"): You do not know the field_ids in advance — you must fetch them first. Always use this two-step flow: Step 1 — start interview and get all fields (two separate calls): interview(topic="tax_situation") interview(bulk_entry=True) → returns ALL fields; read each field's field_id from the response Step 2 — submit using field_ids copied from the step 1 response: interview(answers=[{"field_id": "<copied from step 1 response>", "value": true}, ...], bulk_entry=True) EXAMPLES:

PAGE-BY-PAGE FLOW (typical linear interview):

Step 1 — start, get first page

interview(topic="tax_situation")

Step 2 — collect answers from user, submit and advance

interview(answers=[{"field_id": "filing_status", "value": "single"}, {"field_id": "had_w2", "value": true}], action="next")

Step 3 — repeat for each page until is_complete=True

interview(answers=[{"field_id": "wages", "value": 85000}], action="next")

Peek at current page (resume after a break)

interview()

Go back

interview(action="back")

Bulk save across pages (no auto-merge, no navigation)

interview(answers=[{"field_id": "had_w2", "value": true}, {"field_id": "wages", "value": 85000}], bulk_entry=True) BEHAVIORAL RULES:

  • Never invent field IDs — copy field_id exactly from the returned fields list.
  • current_value on each returned field is the stored answer — use it to avoid re-asking answered questions.
  • Be conversational: present related options together ("Which apply: W-2, freelance, investments?"), let user respond naturally, then submit.
  • After each advance, check progress in the response. Continue until complete or the user asks to stop.
  • Stop immediately if the user says to quit — do not force completion.

HANDLING REQUIRED FIELDS (page-by-page mode only):

  • Fields WITH current_value: Auto-preserved even if omitted from answers[]. Just confirm with user.
  • Fields WITHOUT current_value: MUST collect from user before advancing with action="next".
  • When using action="next": include ALL required fields on the current page that lack a current_value.

RECONCILE BEFORE ASKING

  • USE WHAT YOU ALREADY KNOW (page-by-page mode only):

When stepping through pages one at a time, reconcile each field against facts already established in the conversation. For any required field the user stated explicitly in the current conversation, auto-fill it rather than re-asking. Only ask again if:

  • The earlier statement was ambiguous
  • The fact could have changed
  • The tool shows a conflicting current_value

Treat previously stated exclusions like "no home," "no investments," and "nothing else applies" as valid answers to later matching questions unless the user indicates otherwise. VALIDATION ERRORS: Explain in plain language. Ask for missing info naturally. COMPLETION: Summarize what was gathered and explain next steps. CONSENT: This tool requires IRC §7216 tax disclosure consent. Do not proceed with this tool's action until consent is confirmed. The user must accept or deny using the buttons in the consent widget -- never via chat. If the user previously declined, that is NOT permanent; the server will show a fresh consent form.

Parameters (0 required, 4 optional)
Optional
actionstring

Navigation action to perform after saving answers. Copy the action_id value from the returned actions list — never invent it. Common values: 'next' (advance), 'back' (go back, no validation), 'complete' (finish). If omitted, answers are saved and the current page is returned.

Default: null
answersarray

List of answers to submit. Each entry MUST be {"field_id": "...", "value": ...}. The key is always field_id — never 'key', 'name', 'id', 'fieldId', or 'answer'. Copy field_id exactly from the returned fields list — never invent values. Use JSON booleans (true/false) for boolean fields, not strings.

Default: null
bulk_entryboolean

If true, return all fields across all pages at once (no page navigation). Use when updating a specific field without stepping through pages. NOT persisted — must be set to true on every call where bulk behavior is needed.

Default: False
topicstring

Topic ID to start a new interview (e.g., 'tax_situation'). Starts a new session, replacing any existing one. NEVER combine with any other parameter — topic only starts the session.

Default: null

Search Tax Knowledge

search_tax_knowledge
Full Description

Searches authoritative tax-knowledge sources (IRS and IGC) for content relevant to a tax question, using RAG over curated knowledge bases.

USE THIS WHEN

  • A Skill needs grounded source passages to answer a tax question.
  • You want citations or supporting text for tax guidance.

DO NOT INVOKE

  • For refund status (use the refund tracker tool).
  • For tax estimation or calculation (use the tax estimate tool).
Parameters (1 required, 1 optional)
Required
querystring

Natural-language tax question to retrieve passages for.

Optional
paramsarray

Optional per-knowledge-base targets. When non-empty these are authoritative (exactly these KBs are queried); omit or leave empty to use the default KB set for the environment.

Default: null

Tax Checklist

tax_checklist
Full Description

Display the tax document checklist showing required and completed documents. USE THIS WHEN:

  • User wants to see what tax documents are needed
  • User asks about their tax document checklist or status
  • User wants to know what documents they still need to provide

UPDATING TAX SITUATION DATA: If the user's current message contains new tax situation information (e.g., mentions a new job, a new dependent, rental income, mortgage interest, or any other change), update that data using the interview tool before calling this tool. To update a single field: call interview(topic='tax_situation'), then interview(bulk_entry=True) to get field_ids, then interview(answers=[{"field_id": "<id>", "value": ...}], bulk_entry=True) to submit. To update multiple fields or complete a full interview: call interview(topic='tax_situation') and step through all pages. Call this tool after either flow completes. Users can always change their answers (e.g., 'I don't have a W-2 after all'). Use the interview tool to set the relevant field to false — the checklist will update to reflect the new situation.

UPLOADED DOCUMENTS -- IMPORTANT:

  • Once a document has been uploaded, it CANNOT be deleted, removed, or modified

through this tool or through chat.

  • There are no 'delete', 'remove', or 'undo upload' actions available.
  • If the user asks to delete or remove an uploaded document, tell them:

'Uploaded documents cannot be removed here. To manage uploaded files, use Continue in TurboTax.'

  • Never suggest or imply that uploaded documents can be deleted via chat.

PARAMETER RULES:

  • DO NOT set the 'mode' parameter. Always omit it and let it default.
  • The 'mode' parameter is reserved for internal widget use only.
  • You must NEVER pass mode='full' unless the user's message explicitly

contains the exact phrase 'mode full' or the widget instructs you to.

  • If you are unsure, do not set mode. The default behavior is correct.

This tool supports mixed authentication. If the user has not authenticated, a preview screen is shown with an overview of checklist capabilities and a prompt to connect their TurboTax account. After authentication, the full personalized checklist is returned grouped by category with completion status.

AFTER THE WIDGET (AUTHENTICATED FULL CHECKLIST): The tool result includes model-only instructions and neutral facts for a brief follow-up you compose for the user. Do not read the instruction block verbatim. After you show the checklist, speak to the user in a conversational tone (no bullet walls). Cover: (1) categories and items on their checklist, (2) documents already uploaded or connected, (3) an invitation to update in natural language, (4) next steps: they can upload documents in this checklist (per-item or dropzone) or use Continue in TurboTax to continue or file; do not imply uploads only happen in TurboTax (do not paste URLs). Use structuredContent.followUp and the 'facts' / 'prompt' lines in the text as inputs; translate them into natural second-person speech. CONSENT: This tool requires IRC §7216 tax disclosure consent. Do not proceed with this tool's action until consent is confirmed. The user must accept or deny using the buttons in the consent widget -- never via chat. If the user previously declined, that is NOT permanent; the server will show a fresh consent form.

Parameters (0 required, 1 optional)
Optional
modestring

INTERNAL USE ONLY - do not set this parameter. Always omit and let it default to 'preview'. Only the widget sets this to 'full' to trigger authentication.

Default: preview

Tax Consent

tax_consent_gate
Full Description

Gate tool execution on IRC §7216 tax disclosure consent for tools that have no widget. This is an INTERNAL gate tool -- it must ONLY be called when another tool's response explicitly directs you to call it. Pass originating_tool and originating_action so the consent widget can route the user back after acceptance; omitting them disables that routing. Do not proceed with the original tool's action until the user confirms consent via this widget. The user must accept or deny using the buttons in the consent widget -- never via chat. If the user previously declined, that is NOT permanent -- always call this tool when directed; the server will show a fresh consent form.

NEVER CALL THIS TOOL WHEN:

  • The user directly asks about consent (e.g. 'I want to give consent', 'show me the consent form', 'let me consent').
  • The user mentions consent in any way without another tool's response directing you.
  • You think consent might be needed but no tool response has told you to call this.

This tool is triggered ONLY by other tools' responses, NEVER by user messages alone.

REVOCATION -- IMPORTANT:

  • This tool does NOT support revoking consent. It can only grant consent.
  • If the user asks to revoke, withdraw, or cancel their consent, do NOT call this tool.
  • Instead, tell the user: 'Consent cannot be revoked here. To revoke your 7216 consent, please reach out to TurboTax support for assistance.'
  • Never suggest or imply that revocation is possible through this tool or through chat.

BEFORE CALLING -- CHECK YOUR CONTEXT FIRST:

  • Review the conversation history to determine if the user has ALREADY accepted consent.
  • If a previous tool response indicated 'already_consented' or consent was accepted earlier in this conversation, do NOT call this tool again.
  • Only call this tool if you have NO evidence of prior consent acceptance in the current session.
  • However, if the user previously DECLINED consent and a prior tool response already directed you to call this tool in this conversation, you MAY call this tool again to show a fresh consent form.
Parameters (0 required, 2 optional)
Optional
originating_actionstring

Human-readable description of the originating tool's action, shown in the consent UI banners (e.g. 'conduct my tax interview').

Default: null
originating_toolstring

MCP tool name that needs consent. After the user accepts, the widget re-invokes this tool via sendMessage.

Default: null

Tax Consent Record

tax_consent_record_private
Full Description

Internal tool to record the user's 7216 consent decision. Called by the consent widget after user accepts or declines.

Parameters (1 required, 4 optional)
Required
consentedboolean

True if user accepted 7216 consent, False if declined.

Optional
consent_typestring

Which consent this decision applies to. Prefer the step id the server sent ('use', 'disclosure', 'host_disclosure'); a consent type such as '7216-Use' is accepted but is ambiguous, because two consents share the type '7216-Disclosure'. Omit entirely for the single-consent flow; the server then records the first outstanding consent -- the one whose text the widget displayed. Only the selector is accepted: purpose, resource and applicationId are resolved server-side.

Default: null
full_namestring

Full name provided by the user when accepting consent.

Default: null
originating_toolstring

MCP tool name that triggered the consent flow, used to guide re-invocation after accept.

Default: null
spouse_namestring

Spouse's full name, when the consent form collected one. Declared so a married customer's accept is not rejected before it reaches this function; see the note below on where the signature goes.

Default: null

Tax Estimate Calculator

tax_estimate
Full Description

IMPORTANT: Only tax year 2025 estimates are supported. If the user asks for a different tax year, inform them that only 2025 estimates are currently available.

USE THIS WHEN

  • the user explicitly requests a US federal tax estimate, refund or amount owed and required minimum info is provided.
  • If unclear or incomplete, ask clarifying questions before invoking.

MINIMUM INFO

  • Filing status, confirm MFJ vs MFS
  • Age
  • Income and withholdings details
  • If filing status is MFJ or MFS, ask for spouse income and withholdings details.
  • Whether the tax payer can be claimed as a dependent on another person's tax return.

CRITICAL BEHAVIORS (MUST FOLLOW):

  • DO NOT USE WORLD KNOWLEDGE OR MAKE ASSUMPTIONS. USE ONLY THE CONTENT PROVIDED IN THE TOOL DESCRIPTION.
  • Do NOT ask the user for the standard deduction amount. This is automatically calculated based on filing status. If its provided, ignore it.

DO NOT INVOKE

  • For general tax questions, non-calculation requests, or when the user declines an estimate.

PRIOR ESTIMATES

  • If a prior estimate exists and inputs haven't changed, reference it. Invoke only if values change or the user requests recalculation.

INVOCATION RULES

  • Do NOT ask the user for the standard deduction amount. This is automatically calculated based on filing status. If its provided, ignore it.
  • Use only user-provided fields. Omit keys entirely if not provided. Do not send null, empty strings, or 0 unless the user stated 0 explicitly.
  • Do not invent values. Only pass fields the user provided. Don't pick values from examples.
  • Accept $ and commas; strip formatting before sending. Preserve cents when provided.
  • Do not annualize per-paycheck or monthly amounts unless the user provides frequency and you confirm conversion.
  • Use the latest values; ask if user is providing conflicting information.

AFTER INVOKING

  • After invoking, use the tool response as a driver for follow-up questions.
  • The tool response includes follow-up questions. ALWAYS ask all the follow-up questions. They are NOT OPTIONAL.
  • ALWAYS suggest the next_actions included in the tool response.
  • Do not modify the tool's call-to-action text or link and any other returned values.
  • Present the summary and offer to re-run if inputs change.
  • The needs follow up status is included in the tool response. If it is "needs_follow_up", then ask all the follow-up questions and suggest the next actions also.
Parameters (5 required, 44 optional)
Required
ageinteger

Taxpayer age at end of tax year. Used for additional standard deduction if 65 or older.

claimed_as_dependentboolean

Whether taxpayer can be claimed as a dependent on another person's tax return. Affects standard deduction.

federal_withholdingsnumber

Federal income tax withheld (W-2 Box 2) in dollars.

filing_statusstring

Tax filing status. Example: 'Single' for unmarried taxpayers, 'MarriedFilingJointly' for married couples filing together.

Options:SingleMarriedFilingJointlyMarriedFilingSeparatelyHeadOfHouseholdQualifyingWidowQualifyingWidower
wagesnumber

Total W-2 wages (Box 1) for the tax year in dollars.

Optional
alimony_paidnumber

Alimony paid during the year in dollars. Only deductible for divorces finalized before 2019.

Default: null
alimony_receivednumber

Alimony received during the year in dollars. Only taxable for divorces finalized before 2019.

Default: null
auto_loan_interestnumber

Auto loan interest paid in dollars. Recent legislation may allow this to be deductible.

Default: null
business_expensesnumber

Deductible business expenses in dollars. Netted against business_income.

Default: null
business_incomenumber

Gross self-employment or business income (Schedule C) in dollars.

Default: null
capital_gains_longnumber

Long-term capital gains (held >1 year) in dollars. Can be negative for losses.

Default: null
capital_gains_shortnumber

Short-term capital gains (held ≤1 year) in dollars. Can be negative for losses.

Default: null
charitable_donationsnumber

Cash charitable contributions in dollars.

Default: null
dependent_care_expensesnumber

Dependent care expenses for children under 13 in dollars.

Default: null
dependents_otherinteger

Number of other dependents (not eligible for Child Tax Credit).

Default: null
dependents_under_13integer

Number of qualifying children under age 13 for Dependent Care Credit (child care expenses).

Default: null
dependents_under_17integer

Number of qualifying children under age 17 for Child Tax Credit.

Default: null
education_expensesnumber

Qualified education expenses for American Opportunity Tax Credit in dollars.

Default: null
eligible_for_american_opportunity_tax_creditboolean

Whether taxpayer is eligible for American Opportunity Tax Credit. Requirements: pursuing a degree, first 4 years of post-secondary education, enrolled at least half-time, no felony drug convictions.

Default: null
estimated_federal_tax_paidnumber

Quarterly estimated federal tax payments made during the year (Form 1040-ES) in dollars.

Default: null
estimated_state_tax_paidnumber

Quarterly estimated state tax payments made during the year in dollars.

Default: null
ira_contributionsnumber

Traditional IRA contributions for the tax year in dollars. Reduces AGI if deductible.

Default: null
ira_distributionsnumber

IRA distributions (Form 1099-R) in dollars.

Default: null
medical_expensesnumber

Unreimbursed medical and dental expenses in dollars. Only amounts exceeding 7.5% of AGI are deductible.

Default: null
mortgage_interestnumber

Home mortgage interest paid (Form 1098) in dollars.

Default: null
non_cash_donationsnumber

Non-cash charitable contributions (e.g., donated goods, property) in dollars. Requires appraisal for high values.

Default: null
ordinary_dividendsnumber

Dividend income (Form 1099-DIV Box 1a) in dollars.

Default: null
other_incomenumber

Other miscellaneous income not captured elsewhere in dollars.

Default: null
overtime_premium_paynumber

Overtime and premium pay already included in W-2 wages in dollars. Used for specific tax calculations.

Default: null
qualified_dividendsnumber

Qualified dividends (Form 1099-DIV Box 1b) taxed at lower rates.

Default: null
qualified_tip_incomenumber

Qualified tip income reported on W-2 Box 8 in dollars. Tips subject to social security and Medicare taxes.

Default: null
real_estate_taxnumber

Real estate property taxes paid in dollars.

Default: null
retirement_plan_participationboolean

Whether taxpayer participated in an employer retirement plan (401k, 403b, pension). Affects IRA deduction eligibility.

Default: null
social_security_incomenumber

Social Security benefits received in dollars. Portion may be taxable based on income.

Default: null
spouse_ageinteger

Spouse age at end of tax year. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_business_incomenumber

Spouse net self-employment income in dollars (can be negative for losses). Only used if filing status is MarriedFilingJointly.

Default: null
spouse_federal_withholdingsnumber

Spouse federal tax withheld in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_ira_contributionsnumber

Spouse traditional IRA contributions in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_retirement_plan_participationboolean

Whether spouse participated in employer retirement plan. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_state_withholdingsnumber

Spouse state tax withheld in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_unemployment_incomenumber

Spouse unemployment compensation in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_unemployment_withholdingsnumber

Federal tax withheld from spouse unemployment in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_wagesnumber

Spouse W-2 wages in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
state_withholdingsnumber

State income tax withheld in dollars.

Default: null
student_loan_interestnumber

Student loan interest paid in dollars (Form 1098-E). Maximum deduction $2,500.

Default: null
students_aged_17_to_23integer

Number of dependent students aged 17-23. May affect education credits and other dependent-related provisions.

Default: null
taxable_interestnumber

Interest income from banks, bonds (Form 1099-INT) in dollars.

Default: null
unemployment_incomenumber

Unemployment compensation (Form 1099-G) in dollars.

Default: null
unemployment_withholdingsnumber

Federal income tax withheld from unemployment compensation in dollars.

Default: null

Tax Expert Connect.book Appointment

tax_expert_connect.book_appointment
Full Description

Use this when the user wants to book an appointment with a tax expert they've viewed. REQUIRES a prior expert_search call in this conversation.

REQUIRED WORKFLOW: 1. expert_search must have been called first 2. From the search response's structuredContent, extract:

  • search_id (from structuredContent.search_id)
  • id (from structuredContent.experts[].id for the chosen expert)
  • availability_id (from structuredContent.experts[].closest_availability[].slots[].id for the time slot)

3. Collect from user:

  • first_name: User's first name
  • last_name: User's last name
  • phone_number: User's phone number (should be numbers only - you can remove formatting characters like +, -, ., spaces, or parentheses before passing)
  • email: User's email address

4. MANDATORY CONFIRMATION

  • You MUST explicitly confirm ALL booking details with the user and wait for their response:

Display these details clearly:

  • Name (first and last)
  • Phone number
  • Email address
  • Expert name
  • Date and time of appointment

Then ask: 'Please confirm these details are correct before I proceed with the booking.' 5. Only after user explicitly confirms (e.g., 'yes', 'looks good', 'confirm'), call this tool

CRITICAL RULES:

  • NEVER skip the confirmation step - you MUST always confirm details and wait for user response before booking
  • ONLY use search_id, id, and availability_id from expert_search's structuredContent
  • NEVER make up or guess these values
  • NEVER show IDs (search_id, availability_id, etc.) to the user in conversation
  • If you don't have a recent expert_search result, call expert_search first
  • The availability_id must be from the specific time slot the user wants to book

RETRY BEHAVIOR:

  • If the booking did not go through for any reason and the user wants to retry, you MAY retry the booking with the same parameters or different parameters

DO NOT use this tool for:

  • Searching for experts (use expert_search instead)
  • Modifying or canceling bookings
Parameters (6 required)
Required
availability_idstring
emailstring
first_namestring
last_namestring
phone_numberstring
search_idstring

Tax Expert Connect.expert Availability

tax_expert_connect.expert_availability
Full Description

Fetch detailed availability for a specific expert.

Use this tool when a user wants to see more time slots for an expert or schedule an appointment at a specific time.

PARAMETERS:

  • search_id: REQUIRED. The search_id from the previous expert_search call
  • date: Optional date filter (YYYY-MM-DD). If not provided, returns all available slots

RETURNS:

  • Expert basic info (name, photo, rating, experience)
  • Available time slots grouped by date
  • Widget UI for slot selection

IMPORTANT:

  • DO NOT list specific times or time slots in your response to the user
  • DO NOT show internal IDs (search_id, availability_id, etc.) to the user
  • Let the widget display all time options interactively
  • Simply tell the user to select a time from the widget
Parameters (1 required, 1 optional)
Required
search_idstring

The search_id from the previous expert_search call

Optional
datestring

Optional date to filter availability (YYYY-MM-DD format)

Default: null

Tax Expert Connect.expert Search

tax_expert_connect.expert_search
Full Description

Use this tool when the user wants help with their taxes or wants to find, search or to connect with a tax expert. When invoked, display expert profiles with a single available time slot.

ConnectIntent Determination Rules

  • First, call expert_search() without connect_intent parameter to discover available options
  • ONLY provide this parameter if you receive a validation error asking you to choose between options.
  • If you receive a validation error listing the available options, then present these options to the user and ask them to choose
  • After user selects an option, follow the next steps based on their selection.
  • If the user explicitly states they want to "book appointment", "schedule", or similar then use connect_intent='Book Appointment'.
  • If the user explicitly states they want to "connect now", "talk now", or similar then use connect_intent='Connect Now'.

After user selects connect_intent:

  • If user selected 'Connect Now': Call expert_search(connect_intent='Connect Now')

ONLY IF user selected 'Book Appointment', ask about their tax situation BEFORE calling the tool: When user selects 'Book Appointment', ask them to select one or more tax situations. Present the following list as clear selectable options:

  • "Job (W-2)"
  • "Self-employed/freelance"
  • "Sold stock"
  • "Sold crypto"
  • "Retirement income"
  • "Multiple states"
  • "Rental properties"
  • "Other income"

Then call expert_search with both connect_intent='Book Appointment' AND the selected tax situations.

IMPORTANT: Tax situations are NOT required for "Connect Now" option.

  • Timezone parameter rules
  • NEVER guess or invent a timezone.
  • ONLY ask this parameter if you receive a validation error saying timezone is missing. When you do receive that error, then ask the user for their timezone and retry with the timezone parameter.

— Ask the user for their timezone in a user-friendly way ("What's your timezone?" or "What city are you in?"). — The user may answer in any format. YOU must convert it to a valid IANA timezone string for the tool parameter.

WHEN NOT TO USE THIS TOOL:

  • The user clicks "More times" → use tax_expert_connect.expert_availability instead.
  • The user says "see more times" or "show more availability" → use tax_expert_connect.expert_availability.
  • The user wants all available slots for a specific expert → use tax_expert_connect.expert_availability.
  • The user is asking general questions about taxes, deductions, forms, timelines, rules, or strategies.
  • DO NOT use this tool for General tax questions, Filing returns, Tax calculations.

ALLOWED TOOL INVOCATION CONDITIONS:

  • If connect_intent='Book Appointment': The user MUST have selected one or more tax situations from the required list.
  • If connect_intent='Connect Now': Tax situations are NOT required. You may call the tool without tax situations.
  • The user is not asking for more times, more availability, or detailed scheduling for a specific expert.

If any of these conditions are missing, incomplete, or ambiguous: DO NOT CALL THE TOOL. Ask the necessary questions to the user instead.

Parameters (0 required, 3 optional)
Optional
connect_intent

How the user wants to proceed with connecting to an expert. IMPORTANT: DO NOT guess, infer, or fabricate connect_intent values. DO NOT provide this parameter on first call. ONLY provide this parameter if you receive a validation error asking you to choose between options. When you do receive that error, the error message will list the available options. Ask the user how they would like to proceed and retry with the connect_intent parameter using one of the options from the error message.

Default: null
tax_situationsarray

Optional tax situations from: 'Job (W-2)', 'Self-employed/freelance', 'Sold stock', 'Sold crypto', 'Retirement income', 'Multiple states', 'Rental properties', 'Other income'. IMPORTANT: Only provide this if you receive a TaxSituationsNeeded error. Do NOT ask for tax situations on first call or for 'Connect Now' flow.

Default: null
timezonestring

IANA timezone string (e.g., 'America/Chicago', 'America/New_York', 'America/Los_Angeles'). IMPORTANT: DO NOT guess, infer, or fabricate timezone values. If you can extract this from the request context, prefill it automatically. Otherwise, leave empty/null and only ask the user if you receive a validation error. Incorrect timezone directly impacts booking times shown to the user.

Default: null

Tax Filing Options

tax_filing_options
Full Description

Use this when user expresses intent to start filing, file taxes, or wants to know filing options. Display TurboTax filing options to help users choose how to file their taxes. Shows DIY, Expert Review, and Full Service options in a carousel format with features and call-to-action buttons.

Post-Invocation Guidelines After the carousel is rendered, you must strictly present the next_actions provided in the tool's JSON response that lead to a tax expert consultation for personalized advice

Parameters (0 required, 1 optional)
Optional
user_contextstring

Optional. User's tax situation complexity for personalized recommendations. - None: Show all options without a specific recommendation - simple: W-2 only, standard deduction (recommends DIY) - complex: Multiple income sources, itemized deductions, investments (recommends Expert Review) - business: Self-employed, Schedule C, business expenses (recommends Full Service)

Default: null

Tax.tax-estimate

tax.tax-estimate
Full Description

IMPORTANT: Only tax year 2025 estimates are supported. If the user asks for a different tax year, inform them that only 2025 estimates are currently available.

USE THIS WHEN

  • the user explicitly requests a US federal tax estimate, refund or amount owed and required minimum info is provided.
  • If unclear or incomplete, ask clarifying questions before invoking.

MINIMUM INFO

  • Filing status, confirm MFJ vs MFS
  • Age
  • Income and withholdings details
  • If filing status is MFJ or MFS, ask for spouse income and withholdings details.
  • Whether the tax payer can be claimed as a dependent on another person's tax return.

CRITICAL BEHAVIORS (MUST FOLLOW):

  • DO NOT USE WORLD KNOWLEDGE OR MAKE ASSUMPTIONS. USE ONLY THE CONTENT PROVIDED IN THE TOOL DESCRIPTION.
  • Do NOT ask the user for the standard deduction amount. This is automatically calculated based on filing status. If its provided, ignore it.

DO NOT INVOKE

  • For general tax questions, non-calculation requests, or when the user declines an estimate.

PRIOR ESTIMATES

  • If a prior estimate exists and inputs haven't changed, reference it. Invoke only if values change or the user requests recalculation.

INVOCATION RULES

  • Do NOT ask the user for the standard deduction amount. This is automatically calculated based on filing status. If its provided, ignore it.
  • Use only user-provided fields. Omit keys entirely if not provided. Do not send null, empty strings, or 0 unless the user stated 0 explicitly.
  • Do not invent values. Only pass fields the user provided. Don't pick values from examples.
  • Accept $ and commas; strip formatting before sending. Preserve cents when provided.
  • Do not annualize per-paycheck or monthly amounts unless the user provides frequency and you confirm conversion.
  • Use the latest values; ask if user is providing conflicting information.

AFTER INVOKING

  • After invoking, use the tool response as a driver for follow-up questions.
  • The tool response includes follow-up questions. ALWAYS ask all the follow-up questions. They are NOT OPTIONAL.
  • ALWAYS suggest the next_actions included in the tool response.
  • Do not modify the tool’s call-to-action text or link and any other returned values.
  • Present the summary and offer to re-run if inputs change.
  • The needs follow up status is included in the tool response. If it is "needs_follow_up", then ask all the follow-up questions and suggest the next actions also.
Parameters (5 required, 44 optional)
Required
ageinteger

Taxpayer age at end of tax year. Used for additional standard deduction if 65 or older.

claimed_as_dependentboolean

Whether taxpayer can be claimed as a dependent on another person's tax return. Affects standard deduction.

federal_withholdingsnumber

Federal income tax withheld (W-2 Box 2) in dollars.

filing_statusstring

Tax filing status. Example: 'Single' for unmarried taxpayers, 'MarriedFilingJointly' for married couples filing together.

Options:SingleMarriedFilingJointlyMarriedFilingSeparatelyHeadOfHouseholdQualifyingWidowQualifyingWidower
wagesnumber

Total W-2 wages (Box 1) for the tax year in dollars.

Optional
alimony_paidnumber

Alimony paid during the year in dollars. Only deductible for divorces finalized before 2019.

Default: null
alimony_receivednumber

Alimony received during the year in dollars. Only taxable for divorces finalized before 2019.

Default: null
auto_loan_interestnumber

Auto loan interest paid in dollars. Recent legislation may allow this to be deductible.

Default: null
business_expensesnumber

Deductible business expenses in dollars. Netted against business_income.

Default: null
business_incomenumber

Gross self-employment or business income (Schedule C) in dollars.

Default: null
capital_gains_longnumber

Long-term capital gains (held >1 year) in dollars. Can be negative for losses.

Default: null
capital_gains_shortnumber

Short-term capital gains (held ≤1 year) in dollars. Can be negative for losses.

Default: null
charitable_donationsnumber

Cash charitable contributions in dollars.

Default: null
dependent_care_expensesnumber

Dependent care expenses for children under 13 in dollars.

Default: null
dependents_otherinteger

Number of other dependents (not eligible for Child Tax Credit).

Default: null
dependents_under_13integer

Number of qualifying children under age 13 for Dependent Care Credit (child care expenses).

Default: null
dependents_under_17integer

Number of qualifying children under age 17 for Child Tax Credit.

Default: null
education_expensesnumber

Qualified education expenses for American Opportunity Tax Credit in dollars.

Default: null
eligible_for_american_opportunity_tax_creditboolean

Whether taxpayer is eligible for American Opportunity Tax Credit. Requirements: pursuing a degree, first 4 years of post-secondary education, enrolled at least half-time, no felony drug convictions.

Default: null
estimated_federal_tax_paidnumber

Quarterly estimated federal tax payments made during the year (Form 1040-ES) in dollars.

Default: null
estimated_state_tax_paidnumber

Quarterly estimated state tax payments made during the year in dollars.

Default: null
ira_contributionsnumber

Traditional IRA contributions for the tax year in dollars. Reduces AGI if deductible.

Default: null
ira_distributionsnumber

IRA distributions (Form 1099-R) in dollars.

Default: null
medical_expensesnumber

Unreimbursed medical and dental expenses in dollars. Only amounts exceeding 7.5% of AGI are deductible.

Default: null
mortgage_interestnumber

Home mortgage interest paid (Form 1098) in dollars.

Default: null
non_cash_donationsnumber

Non-cash charitable contributions (e.g., donated goods, property) in dollars. Requires appraisal for high values.

Default: null
ordinary_dividendsnumber

Dividend income (Form 1099-DIV Box 1a) in dollars.

Default: null
other_incomenumber

Other miscellaneous income not captured elsewhere in dollars.

Default: null
overtime_premium_paynumber

Overtime and premium pay already included in W-2 wages in dollars. Used for specific tax calculations.

Default: null
qualified_dividendsnumber

Qualified dividends (Form 1099-DIV Box 1b) taxed at lower rates.

Default: null
qualified_tip_incomenumber

Qualified tip income reported on W-2 Box 8 in dollars. Tips subject to social security and Medicare taxes.

Default: null
real_estate_taxnumber

Real estate property taxes paid in dollars.

Default: null
retirement_plan_participationboolean

Whether taxpayer participated in an employer retirement plan (401k, 403b, pension). Affects IRA deduction eligibility.

Default: null
social_security_incomenumber

Social Security benefits received in dollars. Portion may be taxable based on income.

Default: null
spouse_ageinteger

Spouse age at end of tax year. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_business_incomenumber

Spouse net self-employment income in dollars (can be negative for losses). Only used if filing status is MarriedFilingJointly.

Default: null
spouse_federal_withholdingsnumber

Spouse federal tax withheld in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_ira_contributionsnumber

Spouse traditional IRA contributions in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_retirement_plan_participationboolean

Whether spouse participated in employer retirement plan. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_state_withholdingsnumber

Spouse state tax withheld in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_unemployment_incomenumber

Spouse unemployment compensation in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_unemployment_withholdingsnumber

Federal tax withheld from spouse unemployment in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
spouse_wagesnumber

Spouse W-2 wages in dollars. Only used if filing status is MarriedFilingJointly.

Default: null
state_withholdingsnumber

State income tax withheld in dollars.

Default: null
student_loan_interestnumber

Student loan interest paid in dollars (Form 1098-E). Maximum deduction $2,500.

Default: null
students_aged_17_to_23integer

Number of dependent students aged 17-23. May affect education credits and other dependent-related provisions.

Default: null
taxable_interestnumber

Interest income from banks, bonds (Form 1099-INT) in dollars.

Default: null
unemployment_incomenumber

Unemployment compensation (Form 1099-G) in dollars.

Default: null
unemployment_withholdingsnumber

Federal income tax withheld from unemployment compensation in dollars.

Default: null

Tax.tax-filing-options

tax.tax-filing-options
Full Description

Use this when user expresses intent to start filing, file taxes, or wants to know filing options. Display TurboTax filing options to help users choose how to file their taxes. Shows DIY, Expert Review, and Full Service options in a carousel format with features and call-to-action buttons.

Post-Invocation Guidelines After the carousel is rendered, you must strictly present the next_actions provided in the tool's JSON response that lead to a tax expert consultation for personalized advice

Parameters (0 required, 1 optional)
Optional
user_contextstring
Default: null