Techy Broker MCP server
Techy Broker speaks the Model Context Protocol, the open standard AI agents use to call tools. Connect ChatGPT, Claude, Claude Code, Cursor or an agent you build, sign in once, and it can work for a real estate agent: their clients and properties, 26 calculators with branded PDF reports, property research and form drafts. 45 tools in all.
Just want to use it in ChatGPT or Claude? Follow Use Techy Broker in ChatGPT and Claude.
At a glance
| Server URL | https://techybroker.com/api/mcp |
|---|---|
| Transport | Streamable HTTP (POST, with GET for the event stream) |
| Sign-in | OAuth 2.1 with PKCE (S256) and dynamic client registration; no API keys |
| Scope | techybroker |
| Acts as | One signed-in agent, with their plan and permissions |
| Deletes | Never: no tool deletes anything |
| Support | service@techybroker.com |
Connect an agent
Every MCP client takes the same URL. The first time it connects, a Techy Broker window opens: the agent signs in, reviews what the client can do and clicks Allow.
claude mcp add --transport http techy-broker https://techybroker.com/api/mcp
Then run /mcp in Claude Code and choose Authenticate.
{
"mcpServers": {
"techy-broker": {
"url": "https://techybroker.com/api/mcp"
}
}
}~/.cursor/mcp.json (or .cursor/mcp.json in a project).
{
"servers": {
"techy-broker": {
"type": "http",
"url": "https://techybroker.com/api/mcp"
}
}
}.vscode/mcp.json, then Start on the server.
Add a custom connector named Techy Broker with the server URL (in ChatGPT, choose OAuth). Step by step: Use Techy Broker in ChatGPT and Claude.
Use any MCP client library with OAuth support, such as the official TypeScript or Python SDK: give it the server URL and an OAuth client provider, and it handles discovery, registration and sign-in. The flow it follows is below.
Sign-in (OAuth)
- A request without a token gets
401with aWWW-Authenticateheader pointing athttps://techybroker.com/.well-known/oauth-protected-resource/api/mcp. - That names the authorization server. Its metadata is at
https://techybroker.com/.well-known/oauth-authorization-server. - Register at
https://techybroker.com/api/oauth/registerwith yourredirect_uris(https, loopback http such ashttp://127.0.0.1:port, or an app scheme). Public clients only: no client secret. Client ID metadata documents are supported too. - Send the agent to
https://techybroker.com/oauth/authorizewithresponse_type=code, PKCES256,scope=techybrokerandresource=https://techybroker.com/api/mcp. - Exchange the code at
https://techybroker.com/api/oauth/token, then call the server withAuthorization: Bearer. Access tokens last about an hour; refresh tokens rotate on use and expire after 90 days without use.
Each approval is its own connection, listed in the agent's Techy Broker account under Account, AI assistants, where they can remove it. Signing out of all sessions or changing the password ends every connection. Tools only ever do what the agent could do in the dashboard.
What comes back
- Text first. The first content block is a short, plain summary written to be read aloud, headline number first, followed by the disclaimer that applies. Pass the disclaimer along to the user.
- Full data. The same result as JSON in
structuredContent(and as a second text block, for clients that don't read structured content). - Files. A PDF report comes as a
resource_linkwithmimeType: application/pdf, and its URL is also in the text. - Errors.
isError: truewith a sentence you can say to the user, such as which client matched or which plan a tool needs.
Calculators return estimates. Research comes from public records and AI, and can be wrong or out of date. Neither is legal, tax, lending or appraisal advice.
Results and PDF links
Work done through MCP lands in the agent's dashboard exactly like work done on the website. Every calculator run is saved to Results with its inputs and report, filed under the client and property when you pass client_id or property_id; the reply includes a link that reopens it. Every finished research lookup is saved the same way. Because each call saves, calling twice makes two entries.
With pdf: true, a calculator also returns a link to the branded PDF (the agent's name, photo and color, and "Prepared for" the client). The link is signed, opens for anyone who has it without signing in, and expires after 30 days; the PDF can always be downloaded again from Results.
Rules for agents
The server sends these instructions when a client connects. Follow them in your own agent too.
Techy Broker is a toolkit for real estate agents. You are acting for one signed-in agent. - Clients and properties are the agent's real CRM. Before creating or changing anything, confirm names, spellings, emails, phone numbers and addresses with the agent, and read back what you'll save. This matters most by voice. - Prefer find_clients / get_client before create_client so you don't make duplicates. - Calculator runs and research lookups are saved to the agent's Results in Techy Broker, as if they'd run them on the website. When it's for a client, pass client_id / property_id so it's filed under them. - Every calculator can also make the agent's branded PDF report: set pdf: true. Give the agent the PDF link exactly as returned; it opens for anyone for 30 days. - Calculators return estimates. Research tools return public-record lookups that can be wrong or out of date. Always pass along the disclaimer that comes with a result, and never present a number or a record as a guarantee, an appraisal, or legal, tax or lending advice. - Form tools only start drafts with the client, property and agent details filled in. The agent reviews, edits and signs in Form Filler. Never choose or suggest contract terms. - Nothing can be deleted through this connection. - For questions about Techy Broker itself (how to do something, a real estate term, the terms of use, privacy, partnering at eXp, what a plan includes), call search_techy_broker_info and answer only from what it returns. Say less rather than more: never interpret the terms or privacy policy for someone's own situation, and never discuss eXp fees, stock, revenue share or income. When unsure, or when the agent wants a person, offer contact_techy_broker; ask before sending and confirm it's OK for the team to reach out.
Plans
Tools follow the agent's Techy Broker plan, the same as the website. Clients and properties, every calculator and PDF reports work on every plan, including the free Basic plan. Flood risk, school district, zoning, tax history and forms need Plus; permit history needs Premier. A tool outside the plan returns an error that says which plan includes it.
Tool reference
Generated from the live server, so it always matches what your agent sees. Inputs marked * are required; everything else has a default or is optional.
Clients and properties
The agent's CRM. Look up before creating, and confirm spellings before saving. Nothing can be deleted.
whoamiWho am IRead onlyThe signed-in Techy Broker agent: name, email, plan and how many clients they have. Call this first if unsure which account is connected.
find_clientsFind clientsRead onlySearch the agent's clients by name, email, phone, tag or property address. Leave query empty to list everyone (most recently updated first).
Inputs (4)
| Name | Type | Default | What it is |
|---|---|---|---|
| query | string | Words to match: a name, email, phone, tag or part of an address | |
| stage | lead | active | under-contract | closed | past | Only clients in this stage | |
| type | buyer | seller | both | investor | landlord | renter | Only clients of this type | |
| limit | whole number | 25 |
get_clientGet a clientRead onlyOne client with contact details, notes and every property (with property ids). Pass client_id, or client_name if it matches one client.
Inputs (2)
| Name | Type | Default | What it is |
|---|---|---|---|
| client_id | string | ||
| client_name | string |
create_clientCreate a clientSaves to accountAdd a new client to the agent's CRM. Confirm the spelling of the name (and email/phone) with the agent before calling, especially by voice. Warns instead of creating if a client with the same name exists unless allow_duplicate is true.
Inputs (8)
| Name | Type | Default | What it is |
|---|---|---|---|
| name* | string | Full name, e.g. 'Daniel and Priya Shah' | |
| string | |||
| phone | string | ||
| type | buyer | seller | both | investor | landlord | renter | buyer | |
| stage | lead | active | under-contract | closed | past | lead | |
| notes | string | ||
| tags | array of string | ||
| allow_duplicate | boolean | false | Create even if a client with this name already exists |
update_clientUpdate a clientSaves to accountChange a client's contact details, type, stage or tags, or add to their notes. Only the fields you pass change. Use append_note to add a dated note without replacing existing notes.
Inputs (10)
| Name | Type | Default | What it is |
|---|---|---|---|
| client_id | string | ||
| client_name | string | ||
| name | string | ||
| string | |||
| phone | string | ||
| type | buyer | seller | both | investor | landlord | renter | ||
| stage | lead | active | under-contract | closed | past | ||
| tags | array of string | Replaces the tag list | |
| append_note | string | Added to the end of the notes with today's date | |
| notes | string | Replaces all notes. Prefer append_note |
add_propertyAdd a property to a clientSaves to accountAttach a property to a client. Give the full address as said (street, city, state); it's looked up on the map to fill in city, state, ZIP and location. Read the matched address back to the agent.
Inputs (9)
| Name | Type | Default | What it is |
|---|---|---|---|
| client_id | string | ||
| client_name | string | ||
| address* | string | Full street address, e.g. '1420 Maple Ave, Evanston, IL' | |
| role* | selling | buying | owns | renting | selling: their listing; buying: a home they want; owns: they own it; renting: they rent it | |
| price | number | List, offer or estimated price in dollars | |
| beds | number | ||
| baths | number | ||
| sqft | number | ||
| notes | string |
update_propertyUpdate a propertySaves to accountChange a client's property: role, price, beds, baths, square feet or notes. Find it by property_id, or by address (optionally within one client).
Inputs (10)
| Name | Type | Default | What it is |
|---|---|---|---|
| client_id | string | ||
| client_name | string | ||
| property_id | string | ||
| address | string | Part of the property's address, if no property_id | |
| role | selling | buying | owns | renting | ||
| price | number | ||
| beds | number | ||
| baths | number | ||
| sqft | number | ||
| notes | string |
recent_resultsRecent resultsRead onlyThe agent's saved results, newest first: calculator runs (net sheets, mortgage, etc., with PDFs) and research lookups (flood, schools, zoning, permits, taxes). Filter by a client's name, a property address, or a type (e.g. 'net sheet', 'flood'). Use open_result to reopen a calculator run.
Inputs (4)
| Name | Type | Default | What it is |
|---|---|---|---|
| query | string | Words to match against the client, property address, or result type | |
| kind | all | calculator | research | all | |
| days | whole number | Only results from the last N days | |
| limit | whole number | 15 |
open_resultOpen a saved resultRead onlyReopen a saved result from recent_results: a calculator run (run_id) as its full report card, or a research or other tool result (result_id) as its card. Set pdf to also get a calculator's branded PDF link.
Inputs (3)
| Name | Type | Default | What it is |
|---|---|---|---|
| run_id | string | A calculator run's id (kind calculator in recent_results) | |
| result_id | string | A research or other tool result's id (kind research in recent_results) | |
| boolean | false | Also return a link to the branded PDF |
Calculators
The same math as the calculator pages. Every run is saved to Results; pdf: true adds a link to the branded PDF. Every calculator also takes pdf, client_id, client_name and property_id.
seller_net_sheetSeller net sheetSaves to accountEstimate what a seller walks away with at closing: payoff, commissions, transfer tax, tax proration, title, fees and credits, plus the net at 2.5% below and above the price. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (24)
| Name | Type | Default | What it is |
|---|---|---|---|
| price | number | 525000 | Sale price in dollars |
| closing | date (YYYY-MM-DD) | Estimated closing date, YYYY-MM-DD. Defaults to 45 days from today | |
| hasMortgage | boolean | true | Whether the seller has a mortgage to pay off |
| payoff | number | 310000 | Mortgage payoff balance in dollars |
| secondPayoff | number | 0 | Second mortgage or HELOC payoff in dollars |
| listingPct | number | 2.5 | Listing-side commission, percent (e.g. 2.5) |
| buyerPct | number | 2.5 | Buyer-side commission, percent (e.g. 2.5) |
| transferPer1k | number | 1.5 | Transfer tax in dollars per $1,000 of price |
| annualTax | number | 8400 | Annual property tax in dollars |
| title | number | 2100 | Owner's title insurance in dollars |
| attorney | number | 950 | Attorney or escrow fee in dollars |
| otherFees | number | 820 | Recording and other closing fees in dollars |
| concessions | number | 0 | Seller concessions (credits to the buyer) in dollars |
| repairCredit | number | 0 | Repair or inspection credit in dollars |
| warranty | number | 0 | Home warranty the seller pays for, dollars |
| staging | number | 0 | Staging and prep costs in dollars |
| hasHoa | boolean | false | Whether the property has an HOA |
| hoaTransfer | number | 500 | HOA transfer fee in dollars |
| hoaMonthly | number | 325 | Monthly HOA dues in dollars |
| prorateHoa | boolean | true | Prorate this month's HOA dues to the closing date |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
mortgage_paymentMortgage paymentSaves to accountEstimate the full monthly mortgage payment (principal and interest, property tax, insurance, PMI, HOA), total interest, the effect of discount points and extra principal payments, and the payment if the rate moves half a point. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (19)
| Name | Type | Default | What it is |
|---|---|---|---|
| price | number | 500000 | Home price in dollars |
| downPct | number | 20 | Down payment, percent of price (e.g. 20) |
| rate | number | 6.5 | Interest rate, percent (e.g. 6.5) |
| term | whole number | 30 | Loan term in years (e.g. 30 or 15) |
| taxRate | number | 1.1 | Property tax rate, percent of price per year (e.g. 1.1) |
| insurance | number | 1800 | Homeowner's insurance in dollars per year |
| hoa | number | 0 | HOA dues in dollars per month |
| pmiRate | number | 0.5 | PMI, percent of the loan per year (e.g. 0.5); applies only under 20% down |
| extra | number | 0 | Extra principal paid each month, dollars |
| extraYearly | number | 0 | Extra principal paid once a year (with every 12th payment), dollars |
| lump | number | 0 | One-time lump-sum principal payment, dollars |
| lumpMonth | whole number | 12 | Payment number the lump sum goes in with (e.g. 12) |
| points | number | 0 | Discount points bought (1 point = 1% of the loan) |
| perPoint | number | 0.25 | Rate reduction per point, percent (e.g. 0.25) |
| startDate | date (YYYY-MM-DD) | First payment date, YYYY-MM-DD (only the month counts). Defaults to this month | |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
affordabilityHome affordabilitySaves to accountEstimate how much home a buyer can afford from income, monthly debts, down payment and rate: the max price whose full payment (principal and interest, tax, insurance, PMI, HOA) hits a target debt-to-income ratio, plus comfortable (36%), standard (43%) and stretch (50%) scenarios. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (17)
| Name | Type | Default | What it is |
|---|---|---|---|
| income | number | 120000 | Gross household income in dollars per year |
| debts | number | 650 | Other monthly debt payments (cars, student loans, cards) in dollars per month |
| down | number | 50000 | Cash available for the down payment, dollars |
| dti | number | 43 | Target debt-to-income ratio, percent (e.g. 43): all monthly debts plus the housing payment as a share of gross monthly income |
| rate | number | 6.5 | Interest rate, percent (e.g. 6.5) |
| term | whole number | 30 | Loan term in years |
| taxRate | number | 1.1 | Property tax rate, percent of price per year (e.g. 1.1) |
| insurance | number | 1800 | Homeowner's insurance in dollars per year |
| hoa | number | 0 | HOA dues in dollars per month |
| pmiRate | number | 0.5 | PMI, percent of the loan per year (e.g. 0.5); applies only under 20% down |
| useFrontEnd | boolean | false | Also cap the housing payment alone at the front-end ratio |
| frontEnd | number | 28 | Front-end ratio: max housing payment as a share of gross income, percent (e.g. 28). Used only when useFrontEnd is true |
| closingPct | number | 0 | Closing costs paid out of the down-payment cash, percent of price (e.g. 2.5) |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
buyer_cash_to_closeBuyer cash to closeSaves to accountEstimate how much cash a buyer needs at closing: down payment, lender and third-party fees, title, prepaid interest, insurance and escrow reserves, less earnest money and credits. Also gives the estimated monthly payment. Handles conventional, FHA, VA and cash purchases. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (26)
| Name | Type | Default | What it is |
|---|---|---|---|
| price | number | 425000 | Purchase price in dollars |
| loanType | conventional | fha | va | cash | conventional | Loan type: conventional, fha, va, or cash (no loan) |
| downPct | number | 10 | Down payment, percent of price (e.g. 10). Ignored for cash |
| rate | number | 6.5 | Interest rate, percent (e.g. 6.5) |
| term | whole number | 30 | Loan term in years |
| closing | date (YYYY-MM-DD) | Closing date, YYYY-MM-DD. Defaults to 45 days from today | |
| lenderFees | number | 2400 | Lender fees (origination, underwriting) in dollars |
| titleEscrow | number | 2200 | Title insurance and escrow fees in dollars |
| recording | number | 250 | Recording and government fees in dollars |
| annualTax | number | 5100 | Annual property tax in dollars |
| insurance | number | 1650 | Homeowner's insurance in dollars per year |
| emd | number | 5000 | Earnest money already paid, dollars (credited at closing) |
| sellerCredit | number | 0 | Seller credit toward closing costs, dollars |
| lenderCredit | number | 0 | Lender credit, dollars |
| pmiRate | number | 0.5 | PMI, percent of the loan per year (e.g. 0.5); conventional loans under 20% down only |
| hoa | number | 0 | HOA dues in dollars per month (affects the monthly payment only) |
| appraisal | number | 600 | Appraisal fee in dollars |
| inspection | number | 500 | Inspection fee in dollars |
| survey | number | 0 | Survey fee in dollars |
| attorney | number | 0 | Buyer's attorney fee in dollars |
| taxDueMonth | whole number | 6 | Month the next property tax bill is due, 1-12 (e.g. 6 for June) |
| billsPerYear | 1 | 2 | 2 | Property tax bills per year: 2 (semi-annual) or 1 (annual) |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
closing_prorationsClosing prorationsSaves to accountProrate closing items to the day, settlement-statement style: property taxes (arrears or prepaid), HOA dues and assessments, rent and security deposits, fuel, the seller's payoff interest and the buyer's prepaid interest, with who credits whom and the net between buyer and seller. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (30)
| Name | Type | Default | What it is |
|---|---|---|---|
| closing | date (YYYY-MM-DD) | 2026-12-15 | Closing date, YYYY-MM-DD |
| sellerOwnsDay | boolean | false | Whether the seller owns (pays for) the day of closing |
| annualTax | number | 8400 | Annual property tax bill in dollars |
| taxPaidThrough | date (YYYY-MM-DD) | 2025-12-31 | Date property taxes are paid (or prepaid) through, YYYY-MM-DD |
| arrears | boolean | true | True if taxes are paid in arrears (seller credits buyer); false if prepaid (buyer reimburses seller) |
| proratePct | number | 105 | Tax proration factor, percent of the last bill (e.g. 105) |
| hoa | number | 250 | Monthly HOA dues in dollars (0 if none) |
| hoaPaidThrough | date (YYYY-MM-DD) | 2026-12-31 | Date HOA dues are paid through, YYYY-MM-DD |
| assessment | number | 0 | Outstanding special assessment the seller pays, dollars |
| hoaTransferFee | number | 0 | HOA transfer or move-in fee in dollars |
| hoaFeePayer | seller | buyer | seller | Who pays the HOA transfer fee: seller or buyer |
| tenant | boolean | false | Whether the property is tenant-occupied |
| rent | number | 2200 | Monthly rent in dollars (if tenant-occupied) |
| rentPaidThrough | date (YYYY-MM-DD) | 2026-12-31 | Date the tenant's rent is paid through, YYYY-MM-DD |
| deposit | number | 2200 | Tenant security deposit held by the seller, dollars |
| hasLoan | boolean | true | Whether the seller has a mortgage to pay off |
| payoff | number | 310000 | Seller's mortgage payoff balance in dollars |
| payoffRate | number | 6.25 | Seller's mortgage interest rate, percent (e.g. 6.25) |
| lastPayment | date (YYYY-MM-DD) | 2026-12-01 | Date the seller's last mortgage payment covers interest through, YYYY-MM-DD |
| hasNewLoan | boolean | true | Whether the buyer is getting a mortgage |
| newLoan | number | 420000 | Buyer's new loan amount in dollars |
| newRate | number | 6.5 | Buyer's new loan interest rate, percent (e.g. 6.5) |
| fuel | number | 0 | Fuel oil or propane left in the tank, dollars (buyer reimburses seller) |
| water | number | 0 | Estimated final water/sewer bill for the seller's use, dollars |
| other | number | 0 | Other item in dollars: positive credits the buyer, negative credits the seller |
| otherLabel | string | Other seller credit | Label for the other item |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
refinance_break_evenRefinance break-evenSaves to accountCompare a current mortgage with a refinance: new principal and interest payment, monthly savings, how many months until the closing costs pay for themselves, interest on each loan, lifetime savings, and savings after 1, 3, 5 and 10 years. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (14)
| Name | Type | Default | What it is |
|---|---|---|---|
| balance | number | 350000 | Current loan balance in dollars |
| rate | number | 7.25 | Current interest rate, percent (e.g. 7.25) |
| yearsLeft | number | 27 | Years left on the current loan |
| currentPayment | number | 0 | Current monthly principal and interest in dollars; 0 to calculate it from balance, rate and years left |
| newRate | number | 6 | New loan interest rate, percent (e.g. 6.0) |
| newTerm | whole number | 30 | New loan term in years |
| closing | number | 6000 | Refinance closing costs in dollars |
| points | number | 0 | Discount points on the new loan, percent of the loan (1 point = 1%) |
| cashOut | number | 0 | Cash taken out in the refinance, dollars |
| roll | boolean | false | Roll the closing costs and points into the new loan instead of paying them in cash |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
rate_buydownRate buydownSaves to accountCompare a permanent rate buydown with discount points against 2-1, 3-2-1 and 1-0 temporary buydowns: upfront cost, monthly payment in years 1–3 and after, break-even, and the savings over the years the loan is kept. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (11)
| Name | Type | Default | What it is |
|---|---|---|---|
| loan | number | 400000 | Loan amount in dollars |
| rate | number | 6.75 | Note rate, percent (e.g. 6.75) |
| term | whole number | 30 | Loan term in years |
| points | number | 2 | Discount points for the permanent buydown; one point costs 1% of the loan (e.g. 2) |
| perPoint | number | 0.25 | Rate drop per point, percent (e.g. 0.25) |
| hold | whole number | 7 | Years the borrower expects to keep the loan |
| payer | seller | buyer | seller | Who pays for the buydown: seller (as a concession) or buyer |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
appraisal_gapAppraisal gapSaves to accountEstimate what a low appraisal costs the buyer: the gap, the loan on the lower value, the extra cash needed under the contract's gap coverage, and the outcomes if the buyer covers it all, the price drops to the appraisal, or the gap is split. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (16)
| Name | Type | Default | What it is |
|---|---|---|---|
| price | number | 500000 | Contract price in dollars |
| appraised | number | Appraised value in dollars. Defaults to 96% of the contract price | |
| downMode | pct | amt | pct | Whether the down payment is given as a percent (pct) or dollars (amt) |
| downPct | number | 20 | Planned down payment, percent of price (e.g. 20); used when downMode is pct |
| downAmt | number | 100000 | Planned down payment in dollars; used when downMode is amt |
| loanType | conv | fha | va | jumbo | conv | Loan type: conv (97% max LTV), fha (96.5%), va (100%), jumbo (90%) |
| cash | number | 125000 | Buyer's cash available in dollars |
| coverage | none | upto | full | upto | Gap coverage in the contract: none, upto (up to a set amount) or full |
| coverUpTo | number | 10000 | Most the buyer agreed to cover of the gap, dollars; used when coverage is upto |
| closingCosts | number | 0 | Closing costs to count against the buyer's cash, dollars |
| earnest | number | 10000 | Earnest money deposit in dollars (shown in the PDF) |
| contingency | boolean | true | Whether the contract has an appraisal contingency, so earnest money comes back if the buyer walks |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
rent_vs_buyRent vs. buySaves to accountCompare the all-in cost of renting vs. buying over the years you'll stay: payments, taxes, insurance, maintenance, buying and selling costs, lost investment return and equity. Returns which comes out ahead, by how much, and the year buying pulls ahead (looks out 15 years). Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (21)
| Name | Type | Default | What it is |
|---|---|---|---|
| rent | number | 2400 | Monthly rent today in dollars |
| rentGrowth | number | 3 | Yearly rent increase, percent (e.g. 3) |
| price | number | 450000 | Home price in dollars |
| downPct | number | 10 | Down payment, percent of price (e.g. 10) |
| rate | number | 6.5 | Mortgage interest rate, percent (e.g. 6.5) |
| term | whole number | 30 | Loan term in years |
| taxRate | number | 1.1 | Property tax rate, percent of price per year (e.g. 1.1) |
| insurance | number | 1800 | Homeowners insurance in dollars per year |
| hoa | number | 0 | HOA dues in dollars per month |
| maintenance | number | 1 | Maintenance, percent of price per year (e.g. 1) |
| appreciation | number | 3 | Home appreciation, percent per year (e.g. 3) |
| years | whole number | 7 | Years you'll stay, 1 to 15 |
| buyCosts | number | 3 | Buying closing costs, percent of price (e.g. 3) |
| sellCosts | number | 7 | Selling costs when you move, percent of the home's value then (e.g. 7) |
| investReturn | number | 5 | Return the cash at closing would earn if invested instead, percent per year (e.g. 5) |
| deduct | boolean | false | Whether the buyer itemizes and deducts mortgage interest and property tax |
| taxBracket | number | 24 | Marginal income tax rate for the deduction, percent (e.g. 24) |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
investment_propertyInvestment propertySaves to accountQuick look at a rental property: monthly cash flow, NOI, cap rate, cash-on-cash return, DSCR, gross rent multiplier, 1% rule, break-even rent, and a 10-year projection of equity, cash flow and total return. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (19)
| Name | Type | Default | What it is |
|---|---|---|---|
| price | number | 400000 | Purchase price in dollars |
| downPct | number | 25 | Down payment, percent of price (e.g. 25) |
| rate | number | 7 | Mortgage interest rate, percent (e.g. 7) |
| term | whole number | 30 | Loan term in years |
| closing | number | 2 | Closing costs, percent of price (e.g. 2) |
| rent | number | 3400 | Monthly rent in dollars |
| vacancy | number | 5 | Vacancy, percent of gross rent (e.g. 5) |
| taxes | number | 6000 | Property taxes in dollars per year |
| insurance | number | 1800 | Insurance in dollars per year |
| hoa | number | 0 | HOA dues in dollars per month |
| maintenance | number | 8 | Maintenance, percent of collected rent (e.g. 8) |
| management | number | 8 | Property management, percent of collected rent (e.g. 8) |
| appreciation | number | 3 | Appreciation, percent per year (e.g. 3) |
| rentGrowth | number | 3 | Rent growth, percent per year (e.g. 3) |
| expenseGrowth | number | 2 | Growth in taxes, insurance and HOA, percent per year (e.g. 2) |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
capital_gainsHome sale capital gainsSaves to accountEstimate the taxable gain on a home sale after the primary-home exclusion ($250k single / $500k joint), plus a rough federal (0/15/20% brackets, depreciation recapture, 3.8% NIIT) and state tax. This is an estimate, not tax advice; confirm with a CPA. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (19)
| Name | Type | Default | What it is |
|---|---|---|---|
| purchase | number | 300000 | Original purchase price in dollars |
| purchaseClosing | number | 6000 | Closing costs paid when buying, dollars |
| improvements | number | 40000 | Capital improvements made (not repairs), dollars |
| sale | number | 750000 | Sale price in dollars |
| sellingCosts | number | 45000 | Selling costs (commissions, fees) in dollars |
| primary | boolean | true | Whether it is the seller's primary home |
| yearsLived | number | 5 | Years lived in the home out of the last 5, years |
| filing | single | joint | joint | Filing status: single or joint (married filing jointly) |
| customExclusion | number | 0 | Partial exclusion in dollars, used only for a primary home lived in under 2 years |
| depreciation | number | 0 | Depreciation taken if the home was ever rented, dollars |
| income | number | 150000 | Other taxable income this year in dollars |
| zeroTop | number | Taxable income where the 0% long-term rate ends, dollars. Defaults to the assumed 2026 breakpoint for the filing status | |
| fifteenTop | number | Taxable income where the 15% long-term rate ends, dollars. Defaults to the assumed 2026 breakpoint for the filing status | |
| niit | boolean | true | Apply the 3.8% net investment income tax |
| stateRate | number | 5 | State income tax rate on the gain, percent (e.g. 5) |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
exchange_10311031 exchangeSaves to accountEstimate a 1031 like-kind exchange: equity to reinvest, the replacement price and loan needed to defer all gain, cash and mortgage boot, the taxable and deferred gain, and rough tax with and without the exchange. This is an estimate, not tax advice; confirm with a CPA and a qualified intermediary. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (12)
| Name | Type | Default | What it is |
|---|---|---|---|
| salePrice | number | 600000 | Sale price of the property being sold, dollars |
| sellCosts | number | 36000 | Selling costs in dollars |
| payoff | number | 250000 | Loan payoff on the property being sold, dollars |
| basis | number | 300000 | Adjusted basis after depreciation, dollars |
| replPrice | number | 700000 | Replacement property price in dollars |
| newLoan | number | 400000 | New loan on the replacement property, dollars |
| fedRate | number | 15 | Federal capital gains rate, percent (e.g. 15) |
| stateRate | number | 5 | State tax rate, percent (e.g. 5) |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
commission_splitCommission splitSaves to accountWhat an agent keeps over a year at their brokerage after the split, cap, per-deal fees, monthly fees, dues and franchise royalty, with the deal they cap on and a deal-by-deal breakdown. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (17)
| Name | Type | Default | What it is |
|---|---|---|---|
| deals | whole number | 15 | Closed deals per year |
| price | number | 400000 | Average sale price in dollars |
| rate | number | 2.5 | Agent's side of the commission, percent of price (e.g. 2.5) |
| agentSplit | number | 70 | Agent's share of each commission before the cap, percent (70 means a 70/30 split) |
| hasCap | boolean | false | Whether the brokerage caps its split each year |
| cap | number | 20000 | Yearly cap: the most the brokerage takes in split, dollars (used when hasCap is true) |
| txFee | number | 395 | Transaction fee per deal in dollars |
| eo | number | 0 | E&O fee per deal in dollars |
| monthly | number | 0 | Desk or tech fee in dollars per month |
| dues | number | 1200 | MLS and board dues in dollars per year |
| royaltyPct | number | 0 | Franchise royalty, percent of each commission (e.g. 6) |
| royaltyCap | number | 0 | Yearly royalty cap in dollars; 0 means no cap |
| postCapFee | number | 0 | Fee per deal after capping, dollars |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
property_tax_prorationProperty tax prorationSaves to accountProrate the property tax between buyer and seller to the closing day: how much the seller credits the buyer (taxes paid in arrears) or the buyer reimburses the seller (taxes prepaid), with the daily rate and days counted. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (12)
| Name | Type | Default | What it is |
|---|---|---|---|
| closing | date (YYYY-MM-DD) | Closing date, YYYY-MM-DD. Defaults to 45 days from today | |
| annualTax | number | 8400 | Annual property tax bill in dollars |
| arrears | boolean | true | True if taxes are paid in arrears (seller credits buyer); false if paid in advance (buyer reimburses seller) |
| sellerOwnsDay | boolean | false | Whether the seller owns (pays for) the day of closing |
| basis | 360 | 365 | 365 | Day count: "365" for actual days (365 or 366), "360" for twelve 30-day months |
| proratePct | number | 100 | Proration percentage of the annual bill, percent (e.g. 100, or 105 to 110 in Cook County) |
| paidThrough | date (YYYY-MM-DD) | Date taxes are paid (or prepaid) through, YYYY-MM-DD. Defaults to Dec 31 of the year before closing in arrears markets, Dec 31 of the closing year if prepaid | |
| alreadyPaid | number | 0 | Amount already paid toward this period in dollars (e.g. a second installment) |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
fix_and_flipFix and flipSaves to accountAnalyze a fix-and-flip: projected profit after purchase, rehab, an interest-only hold loan, carrying and selling costs, with cash invested, ROI and the max offer by the 70% rule or a target profit. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (20)
| Name | Type | Default | What it is |
|---|---|---|---|
| price | number | 220000 | Purchase price in dollars |
| closingPct | number | 2 | Purchase closing costs, percent of price (e.g. 2) |
| rehab | number | 60000 | Rehab budget in dollars |
| contingencyPct | number | 10 | Contingency on the rehab budget, percent (e.g. 10) |
| ltv | number | 80 | Loan amount, percent of purchase price (e.g. 80) |
| rate | number | 11 | Loan interest rate, percent per year (e.g. 11); interest only for the hold |
| loanPoints | number | 2 | Loan points, percent of the loan (e.g. 2) |
| financeRehab | boolean | true | Whether the loan also covers the rehab (with contingency) |
| months | whole number | 6 | Months held, from purchase to sale |
| taxes | number | 300 | Property taxes during the hold, dollars per month |
| insurance | number | 150 | Insurance during the hold, dollars per month |
| utilities | number | 200 | Utilities during the hold, dollars per month |
| arv | number | 380000 | Resale price after repairs (ARV) in dollars |
| sellPct | number | 7 | Selling costs, percent of resale price (e.g. 7) |
| rulePct | number | 70 | Max-offer rule, percent of ARV (e.g. 70 for the 70% rule) |
| target | number | 40000 | Target profit in dollars, for the max offer that still hits it |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
referral_feeReferral feeSaves to accountWork out the referral fee on a deal and what the agent nets after their brokerage split, cap and fees, as either the referring or the receiving agent. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (13)
| Name | Type | Default | What it is |
|---|---|---|---|
| price | number | 450000 | Sale price in dollars |
| commission | number | 2.5 | This side's commission, percent of price (e.g. 2.5) |
| referralPct | number | 25 | Referral fee, percent of the side's commission (e.g. 25) |
| referring | boolean | false | True if the agent is the referring agent (receives the fee); false if they received the client (pay the fee) |
| split | number | 80 | Agent's split with their brokerage, percent the agent keeps (e.g. 80) |
| onCap | boolean | false | Whether the agent's brokerage has a cap |
| capLeft | number | 6000 | Dollars left to pay on the cap (0 if already capped); used when onCap is true |
| fees | number | 400 | Transaction or franchise fees on the deal, dollars |
| eo | number | 0 | E&O fee on the deal, dollars |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
exp_commission_spliteXp commission splitSaves to accountWhat an agent would keep in a year at eXp Realty under its split, cap and fees, compared with what they keep at their current brokerage, plus eXp stock awards. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (17)
| Name | Type | Default | What it is |
|---|---|---|---|
| deals | whole number | 15 | Closed deals per year |
| price | number | 400000 | Average sale price in dollars |
| rate | number | 2.5 | Agent's side of the commission, percent of price (e.g. 2.5) |
| firstYear | boolean | true | Whether this is the agent's first year at eXp (adds the onboarding fee) |
| icon | boolean | false | Whether to count ICON (the cap back in eXp stock) if the agent earns it |
| nowSplit | number | 70 | Agent's split at their current brokerage, percent they keep (70 means 70/30) |
| nowCap | number | 0 | Yearly cap at the current brokerage in dollars; 0 means no cap |
| nowFees | number | 395 | Fee per deal at the current brokerage, dollars |
| nowMonthly | number | 0 | Monthly fees at the current brokerage, dollars |
| split | number | 80 | eXp split, percent the agent keeps before the cap (e.g. 80) |
| cap | number | 16000 | eXp yearly cap in dollars |
| monthly | number | 85 | eXp tech fee, dollars per month |
| review | number | 25 | eXp broker review fee per deal, dollars |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
rent_vs_listKeep the rental or sellSaves to accountFor an owner deciding whether to keep a rental or sell it now and invest the cash: where each choice leaves them after the years they'd hold it, counting cash flow, equity, selling costs and optional rough taxes on the sale. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (26)
| Name | Type | Default | What it is |
|---|---|---|---|
| value | number | 400000 | Home value today in dollars |
| loanBal | number | 220000 | Mortgage balance today in dollars |
| loanRate | number | 4 | Mortgage interest rate, percent (e.g. 4) |
| loanYears | number | 24 | Years left on the mortgage |
| sellPct | number | 7 | Selling costs, percent of the sale price (e.g. 7) |
| rent | number | 2500 | Monthly rent in dollars |
| vacancy | number | 5 | Vacancy, percent of rent (e.g. 5) |
| taxes | number | 4800 | Property tax in dollars per year |
| insurance | number | 1600 | Insurance in dollars per year |
| maintenance | number | 8 | Maintenance, percent of rent (e.g. 8) |
| mgmt | number | 8 | Property management, percent of rent collected (e.g. 8) |
| hoa | number | 0 | HOA dues in dollars per month |
| appreciation | number | 3 | Home appreciation, percent per year (e.g. 3) |
| rentGrowth | number | 3 | Rent growth, percent per year (e.g. 3) |
| costGrowth | number | 3 | Growth in tax, insurance and HOA, percent per year (e.g. 3) |
| years | whole number | 10 | Years the owner would keep it, 1 to 30 |
| investReturn | number | 6 | Return on the cash if sold now and invested, percent per year (e.g. 6) |
| useTax | boolean | false | Include rough federal tax on the sale (depreciation recapture and capital gains) |
| basis | number | 260000 | Adjusted basis today, after depreciation, dollars (used when useTax is true) |
| depTaken | number | 40000 | Depreciation taken so far, dollars (used when useTax is true) |
| depPerYear | number | 9000 | Depreciation per year if kept, dollars (used when useTax is true) |
| ltcgRate | number | 15 | Long-term capital gains rate, percent (e.g. 15; used when useTax is true) |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
seller_rent_backSeller rent-backSaves to accountWork out what a seller pays to stay in the home after closing: the daily occupancy rate from the buyer's monthly cost, the total charge credited to the buyer, and the security deposit held from the seller's proceeds. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (23)
| Name | Type | Default | What it is |
|---|---|---|---|
| closing | date (YYYY-MM-DD) | Closing date, YYYY-MM-DD. Defaults to 30 days from today | |
| moveOut | date (YYYY-MM-DD) | Date the seller moves out, YYYY-MM-DD. Defaults to 14 days after closing | |
| fromLoan | boolean | false | Work the buyer's monthly cost out from the loan (loan, rate, term, tax, insurance) instead of a given monthly payment |
| piti | number | 3200 | Buyer's monthly mortgage payment (principal, interest, tax, insurance) in dollars, used when fromLoan is false |
| hoa | number | 0 | HOA dues in dollars per month |
| loan | number | 400000 | Buyer's loan amount in dollars, used when fromLoan is true |
| rate | number | 6.5 | Buyer's interest rate, percent (e.g. 6.5), used when fromLoan is true |
| term | whole number | 30 | Buyer's loan term in years, used when fromLoan is true |
| annualTax | number | 6000 | Property tax in dollars per year, used when fromLoan is true |
| annualIns | number | 1800 | Homeowners insurance in dollars per year, used when fromLoan is true |
| sellerUtilities | boolean | true | Whether the seller pays utilities during the stay. If false, the buyer pays and utilities are added to the rate |
| utilities | number | 300 | Utilities in dollars per month, added to the rate when the buyer pays them |
| override | boolean | false | Use an agreed daily rate instead of the buyer's monthly cost divided by 30 |
| dailyOverride | number | 100 | Agreed daily rate in dollars, used when override is true |
| depositMode | pct | amt | days | pct | How the security deposit is set: pct (percent of sale price), amt (dollar amount) or days (days of rent) |
| depositPct | number | 1 | Security deposit, percent of sale price (e.g. 1), used when depositMode is pct |
| price | number | 500000 | Sale price in dollars, used for a percent-of-price deposit |
| depositAmt | number | 5000 | Security deposit in dollars, used when depositMode is amt |
| depositDays | whole number | 30 | Security deposit as this many days of the daily rate, used when depositMode is days |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
home_maintenance_costHome maintenance costSaves to accountEstimate what to set aside each month for a home's upkeep: a routine yearly budget by age, size, type and climate, plus the big replacements (roof, HVAC, water heater, exterior paint) likely in the next 10 years. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (16)
| Name | Type | Default | What it is |
|---|---|---|---|
| value | number | 450000 | Home value in dollars |
| sqft | whole number | 2000 | Square feet |
| yearBuilt | whole number | 1998 | Year the home was built |
| thisYear | whole number | Year the budget starts. Defaults to the current year | |
| type | sfh | town | condo | multi | sfh | Home type: sfh (single family), town (townhome), condo (HOA covers the exterior) or multi (multi-family) |
| climate | mild | harsh | mild | Climate: mild, or harsh (heat, freeze, storms), which shortens system lives and raises upkeep 15% |
| units | whole number | 2 | Number of units, used only for multi-family |
| roofAge | whole number | 12 | Roof age in years (capped at the home's age). Not used for condos |
| hvacAge | whole number | 10 | HVAC age in years (capped at the home's age) |
| heaterAge | whole number | 7 | Water heater age in years (capped at the home's age) |
| paint | boolean | true | Whether the exterior is painted. Not used for condos |
| paintAge | whole number | 5 | Years since the exterior was last painted |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
property_tax_appealProperty tax appealSaves to accountCheck a home's assessed value against recent comparable sales (median price per square foot) and estimate what a property tax appeal could save per year and over several years. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (13)
| Name | Type | Default | What it is |
|---|---|---|---|
| assessed | number | 450000 | Current assessed value in dollars |
| ratio | number | 100 | Assessment ratio: assessed value as a percent of market value (100 if assessed at full market value) |
| mode | pct | mills | pct | How the tax rate is given: pct (percent of assessed value) or mills (dollars per $1,000) |
| rate | number | 1.2 | Tax rate: a percent when mode is pct (e.g. 1.2), or mills when mode is mills (e.g. 12) |
| exemptions | number | 0 | Exemptions subtracted from the assessed value, dollars |
| subjectSqft | number | 1950 | The home's square feet |
| comps | array of object | [{"address":"","price":410000,"sqft":1900},{"address":"","price":395000,"sqft":1850},{"address":"","price":425000,"sqft":2000}] | Recent comparable sales (3 to 6 recommended), each with a sale price and square feet |
| years | whole number | 3 | Years the lower assessment would last, for total savings |
| filingCost | number | 0 | Cost to file the appeal, dollars (subtracted from total savings) |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
listing_price_strategyListing price strategySaves to accountCompare three ways to price a listing (under value, at value, above value) side by side: list and likely sale price, days on market, price cuts, carrying costs and what the seller nets. Returns which strategy nets the most and by how much. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (12)
| Name | Type | Default | What it is |
|---|---|---|---|
| value | number | 500000 | Market value of the home in dollars |
| payoff | number | 250000 | Seller's mortgage payoff in dollars |
| commission | number | 5.5 | Total commission, percent of sale price (e.g. 5.5) |
| otherPct | number | 1.5 | Other closing costs, percent of sale price (e.g. 1.5) |
| carrying | number | 3200 | Monthly carrying cost while listed (mortgage, taxes, insurance, HOA, utilities), dollars |
| typicalDom | whole number | 30 | Typical days on market in the area |
| closeDays | whole number | 30 | Days from contract to closing |
| scenarios | array of object | [{"listPct":-4,"salePct":2,"domMult":0.5,"reductions":0,"offers":3},{"listPct":0,"salePct":-1.5,"domMult":1,"reductions":0,"offers":1},{"listPct":7,"salePct":-4,"domMult":2.5,"reductions":2,"offers":0}] | Exactly three scenarios, in order: Aggressive (priced under value), Market value, Aspirational (priced over value). Defaults: list -4%/sale +2%/0.5x days/0 cuts/3 offers; 0%/-1.5%/1x/0/1; +7%/-4%/2.5x/2/0 |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
seller_readinessSeller readiness scoreSaves to accountScore how ready a seller is to list (condition, presentation, pricing, timing and finances, 0 to 100) and return a prioritized to-do list. Scores preparation, not what the home is worth. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (15)
| Name | Type | Default | What it is |
|---|---|---|---|
| condition | ready | touch | work | major | touch | Condition of the home: "ready" = Move-in ready, "touch" = Needs touch-ups, "work" = Needs real work, "major" = Major repairs |
| repairs | array of roof | hvac | plumbing | electrical | foundation | water | windows | appliances | flooring | paint | none | ["paint"] | Known repairs, any number: "roof" = Roof, "hvac" = Heating / AC, "plumbing" = Plumbing, "electrical" = Electrical, "foundation" = Foundation, "water" = Water damage / mold, "windows" = Windows, "appliances" = Appliances, "flooring" = Flooring, "paint" = Paint, "none" = None. Roof, heating / AC, plumbing, electrical, foundation and water damage count as major |
| clutter | minimal | some | lots | some | How much clutter: "minimal" = Minimal, "some" = Some, "lots" = A lot |
| curb | great | ok | needs | ok | Curb appeal: "great" = Great, "ok" = OK, "needs" = Needs work |
| value | number | 450000 | Estimated value of the home in dollars (from the agent) |
| expect | number | Price the seller hopes for, in dollars. Defaults to 5% above the estimated value | |
| timeline | lt1 | 1to3 | 3to6 | 6plus | flex | 3to6 | When the seller needs to move: "lt1" = Under 1 mo, "1to3" = 1–3 mo, "3to6" = 3–6 mo, "6plus" = 6+ mo, "flex" = Flexible |
| nextHome | found | looking | notyet | renting | looking | Next home: "found" = Found it, "looking" = Looking, "notyet" = Haven't started, "renting" = Renting / not buying |
| payoffKnown | yes | estimate | no | estimate | Does the seller know their mortgage payoff: "yes" = Yes, from the lender, "estimate" = Rough idea, "no" = No |
| payoff | number | 250000 | Mortgage payoff in dollars (0 if paid off) |
| bridge | no | maybe | yes | maybe | Does the seller need this sale's money to buy the next home: "no" = No, "maybe" = Maybe, "yes" = Yes |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
seller_prep_checklistPre-listing prep planSaves to accountBuild a week-by-week pre-listing prep checklist that counts back from the list date, tailored to the home (type, age, pets, kids, yard, pool), the work it needs, staging and media. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (19)
| Name | Type | Default | What it is |
|---|---|---|---|
| listDate | string | Planned list date, YYYY-MM-DD. Leave blank for an undated week-by-week plan | |
| startDate | string | Date prep starts, YYYY-MM-DD. Blank means today | |
| today | date (YYYY-MM-DD) | Today's date, YYYY-MM-DD. Defaults to today | |
| homeType | house | townhome | condo | house | Type of home: "house" = House, "townhome" = Townhome, "condo" = Condo |
| age | whole number | 20 | Age of the home in years |
| bedrooms | whole number | 3 | Number of bedrooms |
| occupied | boolean | true | Whether the seller still lives in the home |
| pets | boolean | false | Whether there are pets |
| kids | boolean | false | Whether there are kids |
| yard | boolean | true | Whether the home has a yard |
| pool | boolean | false | Whether the home has a pool |
| work | array of paint | carpet | roof | landscaping | repairs | clean | declutter | storage | ["paint","clean","declutter"] | What needs work, any number: "paint" = Paint, "carpet" = Carpet / floors, "roof" = Roof, "landscaping" = Landscaping, "repairs" = Repairs, "clean" = Deep clean, "declutter" = Declutter, "storage" = Storage unit |
| repairList | string | Specific repairs, one per line (used when work includes "repairs") | |
| staging | none | partial | full | partial | Staging: "none" = None, "partial" = Some rooms, "full" = Full, by a stager |
| media | photos | video | drone | photos | Listing media: "photos" = Photos, "video" = Photos and video, "drone" = Photos, video, drone |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
buyer_readinessFirst-time buyer readiness scoreSaves to accountScore how ready a first-time buyer is (savings, credit, income and debt, stability and preparation, 0 to 100), with the estimated payment, cash needed and next steps. Not a pre-approval. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (15)
| Name | Type | Default | What it is |
|---|---|---|---|
| price | number | 350000 | Target home price in dollars |
| down | 3 | 5 | 10 | 20 | 5 | Down payment, percent of price: "3" = 3%, "5" = 5%, "10" = 10%, "20" = 20% |
| savings | number | 25000 | Dollars saved for the down payment and closing costs |
| emergency | 0 | 1 | 2 | 3 | 6 | 2 | Emergency fund, apart from those savings, in months of expenses: "0" = None, "1" = Under 1 mo, "2" = 1–2 mo, "3" = 3–5 mo, "6" = 6+ mo |
| credit | 580 | 620 | 680 | 740 | low | unsure | 680 | Credit score range: "740" = 740+, "680" = 680–739, "620" = 620–679, "580" = 580–619, "low" = Under 580, "unsure" = Not sure |
| income | number | 7500 | Monthly household income before tax, dollars |
| debts | number | 600 | Monthly debt payments (cars, cards, loans), dollars |
| job | lt1 | 1to2 | 2plus | 2plus | Time at the current job or line of work: "lt1" = Under 1 yr, "1to2" = 1–2 yrs, "2plus" = 2+ yrs |
| approval | none | prequal | preapproved | none | Talked to a lender: "none" = Not yet, "prequal" = Pre-qualified, "preapproved" = Pre-approved |
| areas | yes | some | no | some | Knows where they want to live: "yes" = Yes, "some" = Sort of, "no" = No |
| agent | yes | no | no | Working with an agent: "yes" = Yes, "no" = Not yet |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
moving_checklistMoving checklistSaves to accountBuild a dated moving checklist from the closing and move dates: notice, movers or truck, utilities, insurance, address changes and after-the-move tasks, tailored to renting or owning, out-of-state moves, kids, pets and storage. Estimates only. Ask the agent for any number they know rather than relying on the defaults. Each run is saved to the agent's Results (pass the client when it's for one); set pdf for a branded PDF report link.
Inputs (12)
| Name | Type | Default | What it is |
|---|---|---|---|
| closing | date (YYYY-MM-DD) | Closing date on the new home, YYYY-MM-DD. Defaults to 45 days from today | |
| move | date (YYYY-MM-DD) | Move date, YYYY-MM-DD. Defaults to 2 days after closing | |
| current | rent | own | rent | Where they live now: "rent" = Renting, "own" = Own (selling) |
| mover | movers | diy | movers | How they're moving: "movers" = Hiring movers, "diy" = Doing it ourselves |
| outOfState | boolean | false | Whether the move is out of state |
| kids | boolean | false | Whether there are kids in school |
| pets | boolean | false | Whether there are pets |
| storage | boolean | false | Whether they need a storage unit |
| boolean | false | Also return a link to the branded PDF report. Set true when the agent asks for a PDF, a report, or something to send a client. | |
| client_id | string | The client this is for (from find_clients). Optional; files the result under them and puts their name on the PDF. | |
| client_name | string | The client's name, if it matches one client. Optional; client_id is safer. | |
| property_id | string | The client's property it's about (from get_client). Optional. |
Property research
Public-record and AI research. Every finished lookup is saved to Results. The slow ones take background: true and get_research_result.
flood_riskFlood risk (FEMA)Saves to accountPublic recordsTakes a few seconds. The FEMA flood zone for a property from the National Flood Hazard Layer: zone, whether it's a special flood hazard area (where lenders usually require flood insurance), base flood elevation and FIRM panel. Straight from FEMA's map, no AI.
Inputs (4)
| Name | Type | Default | What it is |
|---|---|---|---|
| address | string | Full address, e.g. '1420 Maple Ave, Evanston, IL 60201' | |
| client_id | string | Use this client's property instead of typing an address | |
| client_name | string | ||
| property_id | string |
school_districtSchool district lookupSaves to accountPublic recordsThe public school district that serves an address, with public facts (enrollment, schools, student-teacher ratio, spending, graduation rate), contacts, and the schools that likely serve it, with official links. Attendance boundaries change: always verify with the district. Share facts, never opinions of school quality (fair housing). Usually takes about 30 to 90 seconds. Tell the agent that before starting. Use background: true to start it and come back later with get_research_result (the result also lands in the agent's Techy Broker dashboard).
Inputs (5)
| Name | Type | Default | What it is |
|---|---|---|---|
| address | string | Full address, e.g. '1420 Maple Ave, Evanston, IL 60201' | |
| client_id | string | Use this client's property instead of typing an address | |
| client_name | string | ||
| property_id | string | ||
| background | boolean | false | Start it and return right away (it takes about 30 to 90 seconds); fetch the answer later with get_research_result |
zoning_lookupZoning lookupSaves to accountPublic recordsZoning for a property from official sources: zone code, permitted and conditional uses, ADU rules, setbacks, height and lot coverage, plus an answer to an optional question (e.g. 'can they build a detached garage?'). AI research; verify with the zoning office. Usually takes about 30 to 90 seconds. Tell the agent that before starting. Use background: true to start it and come back later with get_research_result (the result also lands in the agent's Techy Broker dashboard).
Inputs (6)
| Name | Type | Default | What it is |
|---|---|---|---|
| address | string | Full address, e.g. '1420 Maple Ave, Evanston, IL 60201' | |
| client_id | string | Use this client's property instead of typing an address | |
| client_name | string | ||
| property_id | string | ||
| question | string | A specific zoning question to answer | |
| background | boolean | false | Start it and return right away (it takes about 30 to 90 seconds); fetch the answer later with get_research_result |
permit_historyPermit historySaves to accountPublic recordsPublic building permits for a property, a renovation timeline, and features that may not have been permitted, with questions to ask the seller. AI research of public permit portals; records are often incomplete. Usually takes about 1 to 2 minutes. Tell the agent that before starting. Use background: true to start it and come back later with get_research_result (the result also lands in the agent's Techy Broker dashboard).
Inputs (6)
| Name | Type | Default | What it is |
|---|---|---|---|
| address | string | Full address, e.g. '1420 Maple Ave, Evanston, IL 60201' | |
| client_id | string | Use this client's property instead of typing an address | |
| client_name | string | ||
| property_id | string | ||
| features | string | Renovations or features to check, e.g. 'finished basement, new deck' | |
| background | boolean | false | Start it and return right away (it takes about 1 to 2 minutes); fetch the answer later with get_research_result |
tax_historyProperty tax historySaves to accountPublic recordsA property's assessed values and tax bills by year from public records, and nearby comparable assessments where found. AI research; confirm with the county assessor and treasurer. Usually takes about 30 to 90 seconds. Tell the agent that before starting. Use background: true to start it and come back later with get_research_result (the result also lands in the agent's Techy Broker dashboard).
Inputs (5)
| Name | Type | Default | What it is |
|---|---|---|---|
| address | string | Full address, e.g. '1420 Maple Ave, Evanston, IL 60201' | |
| client_id | string | Use this client's property instead of typing an address | |
| client_name | string | ||
| property_id | string | ||
| background | boolean | false | Start it and return right away (it takes about 30 to 90 seconds); fetch the answer later with get_research_result |
get_research_resultGet a research resultRead onlyThe result of a research lookup started with background: true. If it's still running, says how long it's been going; ask again in about 30 seconds.
Inputs (1)
| Name | Type | Default | What it is |
|---|---|---|---|
| job_id* | string |
Forms
Find a standard form and start a draft. The agent reviews, edits and signs it in Form Filler; tools never choose contract terms.
search_formsSearch real estate formsRead onlySearch Techy Broker's library of public real estate forms by state and words (e.g. 'IL', 'residential purchase contract', 'lead paint disclosure'). Fillable forms come with an id to use with start_form_draft; others link to where to get them. Members-only association forms aren't in the library; agents upload those in Form Filler.
Inputs (3)
| Name | Type | Default | What it is |
|---|---|---|---|
| state | string | Two-letter state, e.g. IL | |
| query | string | Words in the form's name, e.g. 'purchase agreement' | |
| limit | whole number | 10 |
start_form_draftStart a form draftSaves to accountStart a draft of a standard form in Form Filler for a client and property, and return the link. Only pass deal facts the agent explicitly said (names, price, earnest money, closing date, county); never choose or suggest terms. The agent opens the link, presses Prefill to fill names, addresses and their own details, reviews every field and downloads it. Nothing is signed or sent.
Inputs (6)
| Name | Type | Default | What it is |
|---|---|---|---|
| form_id* | string | From search_forms | |
| client_id | string | ||
| client_name | string | ||
| property_id | string | ||
| address | string | Part of the property's address, if no property_id | |
| facts | object | {} |
About Techy Broker
Look things up in the help center, glossary, terms, privacy policy, eXp partner page and plans, and ask the Techy Broker team to get in touch.
search_techy_broker_infoLook up Techy Broker infoRead onlySearch Techy Broker's own pages: the help center (how to use every tool), the real estate glossary, the Terms of Use, the Privacy Policy, partnering with Techy Broker at eXp Realty, and what each plan includes. Use it for any question about Techy Broker, how to do something in it, a real estate term, or its policies, instead of answering from memory. Answer only from what comes back. When it doesn't clearly answer, or the question is about someone's own legal rights, billing dispute, refund or the details of eXp's plan, offer contact_techy_broker instead.
Inputs (2)
| Name | Type | Default | What it is |
|---|---|---|---|
| question* | string | The question or words to look up, e.g. 'how do I add my logo', 'what is earnest money', 'can I delete my data' | |
| topic | help | glossary | terms | privacy | exp | plans | Only search one area: help, glossary, terms, privacy, exp (partnering at eXp) or plans |
contact_techy_brokerAsk the Techy Broker team to reach outSaves to accountSend the Techy Broker team a message so someone gets back to the agent: a question the assistant couldn't answer, a support problem, billing, privacy or legal questions, interest in partnering at eXp, feedback or a bug. Before calling, tell the agent what you'll send and ask whether it's OK for the team to contact them; only call with ok_to_contact true if they said yes. Name, email and phone default to the signed-in account; ask before using different ones. Limited to a few a day.
Inputs (6)
| Name | Type | Default | What it is |
|---|---|---|---|
| topic* | question | support | billing | privacy | legal | exp | feedback | bug | What it's about. Use exp for interest in partnering with Techy Broker at eXp Realty. | |
| message* | string | What they want, in their words, with any question the assistant couldn't answer | |
| ok_to_contact* | boolean | True only if the agent clearly said yes to being contacted | |
| name | string | ||
| string | |||
| phone | string |
Questions or trouble connecting? Email service@techybroker.com. See also our Privacy Policy, section 5.3.