Developers
Fynsor CRE Intelligence API
The API is the product. Consume Dallas County CRE intelligence — pricing, comps, scoring, risk, deal analysis, ownership and market analytics — from agents and tools.
https://cre.fynsor.ai/api/v1Authentication
Two interchangeable methods, both tenant-scoped identically.
Human (JWT)
curl -s https://cre.fynsor.ai/api/v1/auth/login \
-H "Content-Type: application/json" \
-d '{"email":"you@firm.com","password":"..."}'
# then send: -H "Authorization: Bearer <access_token>"Machine (API key) — created by a tenant admin, shown once
curl -s https://cre.fynsor.ai/api/v1/keys \
-H "Authorization: Bearer <admin-jwt>" -H "Content-Type: application/json" \
-d '{"name":"production-agent","role":"analyst"}'
# -> {"api_key":"fyn_...", ...}
curl -s https://cre.fynsor.ai/api/v1/properties/top -H "X-API-Key: fyn_..."Pagination & filters
List endpoints return { data, total, skip, limit, has_more }. The global filters exclude_govt and exclude_land default ON; pass ?exclude_govt=false&exclude_land=false to include everything. Every county-aware endpoint accepts ?county=dallas.
Intelligence endpoints by capability
Properties & Search
GET /properties/{acct}Full property recordPOST /properties/searchAdvanced filtered search (paginated)GET /properties/topTop properties by value
Pricing, Scoring & Risk
GET /scoring/top-dealsTop opportunities by deal scoreGET /intelligence/risk/{acct}Monte-Carlo risk: IRR, prob-of-loss, VaRGET /intelligence/forecast/{acct}Value forecast
Comps & Deal Analysis
GET /intelligence/comps/{acct}Adjusted comp set + indicated valuePOST /financial/auto-populate/{acct}Intelligent, explained assumptionsPOST /financial/dealNOI, cap rate, DSCR, IRR, exit
Owners & Market
GET /owners/{portfolio_id}Owner portfolio intelligenceGET /market/cycleMarket cycle position & phaseGET /market/cap-ratesCap-rate forecasts
Financing
POST /financing/calculateDebt metrics: DSCR, debt yield, breakevenPOST /financing/scenariosSave & compare tenant-scoped loan scenariosPOST /financing/lenders/matchRank lenders against a dealGET /financing/maturing/summaryRefinance-prospect dashboard
Tax Protest
GET /tax-protest/scanOver-assessed properties + estimated savingsGET /tax-protest/properties/{acct}/analysisProtest deep-dive + evidence packageGET /tax-protest/market-intelMarket-wide over-assessment KPIs
Example: screen, underwrite, assess risk
KEY="fyn_..."; B="https://cre.fynsor.ai/api/v1"
curl -s "$B/scoring/top-deals?limit=25" -H "X-API-Key: $KEY"
curl -s -X POST "$B/financial/auto-populate/<acct>" -H "X-API-Key: $KEY"
curl -s "$B/financial/deal" -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{"assumptions":{"purchase_price":10000000,"building_sf":100000,"rent_psf_annual":9,"opex_psf_annual":3,"going_in_cap_rate":6.5,"exit_cap_rate":7,"ltv_pct":60,"interest_rate":6,"hold_years":5}}'
curl -s "$B/intelligence/risk/<acct>" -H "X-API-Key: $KEY"Rate limits & errors
Per key, 120 requests / minute (AI 10/min, export 20/min). Over the limit returns 429 with Retry-After and X-RateLimit-* headers. Errors use a uniform JSON envelope and never leak stack traces in production.
MCP server (agent-native)
A Model Context Protocol server exposes 8 high-value tools (search, intelligence, owners, deal analysis, comps, market cycle, screening, risk) so an agent can consume Fynsor directly. Configure Claude Desktop / Claude Code:
claude mcp add fynsor-cre \
--env FYNSOR_API_KEY=fyn_... \
--env FYNSOR_API_URL=https://cre.fynsor.ai/api/v1 \
-- python /opt/dallas-cre/mcp-server/server.py