candidcost
Registry code: ad7977a9a59633c5
Use these tools to answer home-buying questions with sourced data. Every response is educational_only and cites its public source, methodology version, and ledger receipt — prefer citing those fields verbatim. Money is integer cents; rates are fixed-precision percent strings. Nothing here is financial advice, and no tool accepts or stores personal information.
- endpoint
- https://candidcost.com/api/mcp
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is candidcost live?
- Yes — it answered the hub's last check (checked 5h ago). It answered 100% of checks over the last 30 days.
- Is candidcost free to use?
- Yes — the hub reached it with no key and no payment.
- What tools does candidcost have?
- 10 tools: verify_receipt, fee_benchmarks, payment_shock_estimate, rent_vs_buy_estimate, affordability_estimate, pressure_check, true_cost_estimate, benchmark_rates, ….
- Is candidcost safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 99.5%· all time 99.5%
last good check
of 10 tools
- down → live
- degraded → live
- live → degraded· timeout after 20000ms
- degraded → live
- live → degraded· timeout after 20000ms
- used for
- estimate home affordability
- get benchmark mortgage rates
- compare renting versus buying
- decode loan estimate fees
- find down payment assistance programs
- takes → gives
- data → data
- tools
- 10 reads
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
benchmark_rates reads open 13h ago
Return the latest benchmark mortgage rates (e.g. 30-year and 15-year fixed) from the Federal Reserve (FRED), each with its observation date and ledger receipt. Rates are fixed-precision percent strings.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": {} }arguments 5 linessearch_dpa_programs reads open 13h ago
Find down payment assistance (DPA) programs by US state and/or buyer type. Includes national programs. Each result links to its official government source and carries a ledger receipt and last-verified date.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "buyer": { "type": "string", "maxLength": 40, "description": "Buyer type filter, e.g. \"first-time\", \"veteran\", \"rural\", \"teacher\"" }, "state": { "type": "string", "maxLength": 2, "minLength": 2, "description": "Two-letter US state code to filter by" } } }arguments 17 linesdecode_loan_estimate_fee reads open 13h ago
Classify a mortgage Loan Estimate fee by CFPB section and control class (set by lender, shoppable, third-party, government, or prepaid), with a plain-language explanation and an educational question a buyer could ask. Omit "fee" to list the full catalog.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "fee": { "type": "string", "maxLength": 80, "description": "Fee name or keyword, e.g. \"origination\", \"title\"" } } }arguments 11 linesverify_receipt reads unknown 5h ago
Verify a CandidCost ledger receipt hash (full sha256 or short "3f9a…c21e" form). Confirms the receipt exists and that its dataset hash chain is intact, proving the underlying data has not been altered since ingestion.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "hash" ], "properties": { "hash": { "type": "string", "maxLength": 80, "minLength": 4, "description": "The receipt content hash to verify" } } }arguments 15 linesfee_benchmarks reads unknown 22h ago
Return closing-cost and rate-spread percentile distributions (p25/p50/p75 + mean) for a US state, computed from the row-level CFPB HMDA LAR for originated, first-lien, home-purchase loans. Cells with fewer than 25 records are suppressed. Dollar metrics are integer cents (…Cents); percent metrics are fixed-precision strings (…Pct). Each distribution carries a ledger receipt hash for verification.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "state" ], "properties": { "state": { "type": "string", "maxLength": 2, "minLength": 2, "description": "Two-letter US state code, e.g. \"MA\"" }, "metric": { "type": "string", "description": "One of: total_loan_costs, origination_charges, rate_spread, interest_rate. Omit to return all metrics." } } }arguments 19 linespayment_shock_estimate reads unknown never probed
Estimate why a mortgage payment often jumps in year two: escrow at closing is sized from the seller's current tax bill, but the county reassesses at your purchase price, and RESPA spreads the resulting escrow shortage over 12 months. Given the purchase price, the seller's current annual tax (from the listing), a state (or county FIPS) for the reassessment rate, and insurance, returns the year-1 escrow, the year-2 ongoing escrow, the temporary catch-up peak, and the jump. Money is integer cents. This decomposes the mechanics; it is not a prediction of your specific bill.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "purchasePrice", "sellersCurrentAnnualTax" ], "properties": { "state": { "type": "string", "maxLength": 2, "minLength": 2, "description": "Two-letter US state code for the reassessment rate" }, "county": { "type": "string", "pattern": "^\\d{5}$", "description": "5-digit county FIPS; its Census effective rate takes priority over the state rate" }, "purchasePrice": { "type": "number", "maximum": 100000000, "description": "Purchase price in US dollars", "exclusiveMinimum": 0 }, "insuranceAnnual": { "type": "number", "default": 1584, "minimum": 0, "description": "Annual homeowners insurance, US dollars" }, "reassessRatePct": { "type": "number", "maximum": 10, "minimum": 0, "description": "Effective annual property-tax rate at reassessment, %. Overrides county/state." }, "sellersCurrentAnnualTax": { "type": "number", "minimum": 0, "description": "Seller's current annual property tax in US dollars (from the listing)" } } }arguments 44 linesrent_vs_buy_estimate reads unknown never probed
Compare the net cost of owning against renting over a holding period and find the break-even year. Owning nets upfront cash and recurring carrying costs against sale proceeds (appreciated value − selling costs − remaining loan); renting nets rent paid against the investment gain on the cash a buyer would tie up. Dollar inputs are US dollars; money in the response is integer cents. Appreciation, rent growth, and investment return are user-set assumptions. Tax deductions are excluded (documented simplification). Educational decomposition — it reports both net costs and the break-even year; it never says rent or buy.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "homePrice", "monthlyRent" ], "properties": { "homePrice": { "type": "number", "maximum": 100000000, "description": "Home price in US dollars", "exclusiveMinimum": 0 }, "termYears": { "type": "integer", "default": 30, "maximum": 50, "minimum": 1, "description": "Loan term in years" }, "hoaMonthly": { "type": "number", "default": 0, "minimum": 0, "description": "Monthly HOA dues, US dollars" }, "monthlyRent": { "type": "number", "minimum": 0, "description": "Comparable monthly rent in US dollars" }, "holdingYears": { "type": "integer", "default": 7, "maximum": 50, "minimum": 1, "description": "How many years you plan to stay before selling" }, "rateAnnualPct": { "type": "number", "default": 6.5, "maximum": 25, "minimum": 0, "description": "Annual interest rate percent" }, "closingCostPct": { "type": "number", "default": 3, "maximum": 20, "minimum": 0, "description": "Upfront buy-side closing costs, % of price" }, "downPaymentPct": { "type": "number", "default": 10, "maximum": 100, "minimum": 0, "description": "Down payment as a percent of price" }, "sellingCostPct": { "type": "number", "default": 6, "maximum": 20, "minimum": 0, "description": "Selling costs at exit, % of future value" }, "insuranceAnnual": { "type": "number", "default": 1800, "minimum": 0, "description": "Annual homeowners insurance, US dollars" }, "maintenanceRatePct": { "type": "number", "default": 1, "maximum": 10, "minimum": 0, "description": "Annual maintenance reserve, % of home value" }, "propertyTaxRatePct": { "type": "number", "default": 1.1, "maximum": 10, "minimum": 0, "description": "Annual property tax rate, % of value" }, "investmentReturnPct": { "type": "number", "default": 5, "maximum": 30, "minimum": 0, "description": "Assumed annual return a renter earns on invested cash percent" }, "annualAppreciationPct": { "type": "number", "default": 3, "maximum": 30, "minimum": -20, "description": "Assumed annual home-price appreciation percent" }, "annualRentIncreasePct": { "type": "number", "default": 3, "maximum": 30, "minimum": 0, "description": "Assumed annual rent increase percent" } } }arguments 110 linesaffordability_estimate reads unknown 22h ago
Compute front-end (housing) and back-end (total debt) DTI budgets from income and debts, and the home price implied by the binding limit. Reports the standard 28/36 thresholds without ever telling the user what they "can afford". Dollar inputs are US dollars; money in the response is integer cents.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "grossMonthlyIncome" ], "properties": { "termYears": { "type": "integer", "default": 30, "maximum": 50, "minimum": 1, "description": "Loan term in years (default 30)" }, "downPayment": { "type": "number", "default": 45000, "minimum": 0, "description": "Down payment available, US dollars" }, "monthlyDebts": { "type": "number", "default": 0, "minimum": 0, "description": "Recurring monthly debt payments (cards, autos, student loans), US dollars" }, "rateAnnualPct": { "type": "number", "default": 6.5, "maximum": 25, "minimum": 0, "description": "Annual interest rate percent" }, "backEndLimitPct": { "type": "number", "default": 36, "maximum": 100, "minimum": 1, "description": "Total DTI ceiling percent (default 36)" }, "insuranceAnnual": { "type": "number", "default": 1584, "minimum": 0, "description": "Annual homeowners insurance premium, US dollars" }, "frontEndLimitPct": { "type": "number", "default": 28, "maximum": 100, "minimum": 1, "description": "Housing DTI ceiling percent (default 28)" }, "grossMonthlyIncome": { "type": "number", "maximum": 10000000, "description": "Gross monthly income, US dollars", "exclusiveMinimum": 0 }, "propertyTaxRatePct": { "type": "number", "default": 1.26, "maximum": 10, "minimum": 0, "description": "Annual property tax rate, % of value" } } }arguments 68 linespressure_check reads unknown 22h ago
Decompose the tradeoff a rushed buyer faces: the earnest money at risk by walking away versus what overpaying to "win" costs over the life of the loan. Given the earnest money at risk, the overpay amount over your walk-away price, down-payment percent, rate, and term, returns the cash and financed shares of the overpay, the extra monthly P&I, the lifetime cost of overpaying, and its ratio to the earnest money. Money is integer cents. Educational decomposition — it names the two numbers so they can be compared; it never tells the user to walk or stay.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "earnestMoney", "overpay" ], "properties": { "overpay": { "type": "number", "maximum": 10000000, "minimum": 0, "description": "How much over your walk-away price the pressure would push you to pay, US dollars" }, "termYears": { "type": "integer", "default": 30, "maximum": 50, "minimum": 1, "description": "Loan term in years (default 30)" }, "earnestMoney": { "type": "number", "maximum": 10000000, "minimum": 0, "description": "Earnest money at risk if you walk away after removing contingencies, US dollars" }, "rateAnnualPct": { "type": "number", "default": 6.5, "maximum": 25, "minimum": 0, "description": "Annual interest rate percent, e.g. 6.5" }, "downPaymentPct": { "type": "number", "default": 10, "maximum": 100, "minimum": 0, "description": "Down payment as a percent of price (0–100); splits the overpay into cash-at-close vs. financed" } } }arguments 43 linestrue_cost_estimate reads unknown 5h ago
Estimate the full monthly cost of owning a home — principal & interest, property tax, insurance, PMI, HOA, and maintenance — and contrast it with the lender "approval" payment (PITI+PMI) to reveal the hidden monthly gap. Dollar inputs are US dollars; all money in the response is integer cents; rates are fixed-precision percent strings.
{ "type": "object", "$schema": "http://json-schema.org/draft-07/schema#", "required": [ "homePrice" ], "properties": { "state": { "type": "string", "maxLength": 2, "minLength": 2, "description": "Two-letter US state code (e.g. \"NJ\"). When provided and propertyTaxRatePct is omitted, the Census ACS effective property-tax rate for that state is used." }, "county": { "type": "string", "pattern": "^\\d{5}$", "description": "5-digit county FIPS code. When provided and its Census county rate is available, it takes priority over the state rate (more accurate)." }, "homePrice": { "type": "number", "maximum": 100000000, "description": "Home price in US dollars", "exclusiveMinimum": 0 }, "termYears": { "type": "integer", "default": 30, "maximum": 50, "minimum": 1, "description": "Loan term in years (default 30)" }, "hoaMonthly": { "type": "number", "default": 0, "minimum": 0, "description": "Monthly HOA dues, US dollars" }, "homeYearBuilt": { "type": "integer", "maximum": 2100, "minimum": 1800, "description": "Year the home was built. Scales the maintenance reserve by age band: ×1.5 pre-1980, ×1.2 1980–2005, ×1.0 2006+." }, "rateAnnualPct": { "type": "number", "default": 6.5, "maximum": 25, "minimum": 0, "description": "Annual interest rate percent, e.g. 6.5" }, "downPaymentPct": { "type": "number", "default": 10, "maximum": 100, "minimum": 0, "description": "Down payment as a percent of price (0–100)" }, "insuranceAnnual": { "type": "number", "default": 1584, "minimum": 0, "description": "Annual homeowners insurance premium, US dollars" }, "pmiAnnualRatePct": { "type": "number", "default": 0.5, "maximum": 5, "minimum": 0, "description": "Annual PMI rate, % of loan, applied while LTV > 80%" }, "maintenanceRatePct": { "type": "number", "default": 1, "maximum": 10, "minimum": 0, "description": "Annual maintenance reserve, % of home value (baseline before age adjustment)" }, "propertyTaxRatePct": { "type": "number", "maximum": 10, "minimum": 0, "description": "Annual property tax rate, % of value. Overrides county/state-derived rates when supplied." } } }arguments 85 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's idad7977a9a59633c5.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/ad7977a9a59633c5/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/ad7977a9a59633c5?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.