{"server": "dfx-real-estate", "title": "DFX Intelligence", "transport": "streamable-http", "protocol": "Model Context Protocol", "protocol_versions": ["2026-07-28", "2025-11-25", "2025-06-18", "2025-03-26"], "authentication": "none", "price": {"free": "every tool on this endpoint. No key, no signup. debt_maturity_schedule returns up to 200 loans per call."}, "note": "This endpoint speaks JSON-RPC over POST. This GET exists so a human or an agent can read the tool schemas before deciding to call anything.", "tools": [{"name": "resolve_address", "title": "Resolve a US street address to a property or parcel", "description": "Turn a street address into canonical DFX object ids, with the match basis and any ambiguity stated. Returns typed objects: a 'property' (national federal programme multifamily) and/or a 'parcel' (Massachusetts assessor and registry layer). These are separate populations that barely overlap, so an address may return one, the other, or both. Free. The ids returned are the canonical property and parcel ids used across this server.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Resolve a US street address to a property or parcel"}, "inputSchema": {"type": "object", "properties": {"address": {"type": "string", "description": "Street address including the house number, for example '100 Binney St'"}, "city": {"type": "string", "description": "City or town, for example 'Cambridge'. Optional: a one-line address carrying its own city and state is accepted whole in `address` and split server side. A value given here takes precedence over anything parsed out of `address`."}, "state": {"type": "string", "description": "Two letter state code"}, "limit": {"type": "integer", "default": 10, "description": "Max 50. This is candidates for ONE address, not a page of a search. `address_group_size` on a result reports when several published records share the address."}}, "required": ["address"]}, "_meta": {"dfx.example": {"goal": "A street address to a canonical id you can then look up.", "arguments": {"address": "100 Binney St", "city": "Cambridge", "state": "MA"}, "expect": "one or more typed objects; feed an id to get_property_record", "note": "A 'parcel' is the Massachusetts assessor layer and a 'property' is the national federal-programme layer. An address can return either or both, and they are different populations."}}}, {"name": "resolve_organization", "title": "Resolve a company name to a DFX entity", "description": "Turn an owner, manager, lender or servicer name into canonical DFX entity ids. A name is treated as a blocking key and never as an identity, so all candidates are returned rather than a guess. Free. Person lookup is deliberately not offered.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Resolve a company name to a DFX entity"}, "inputSchema": {"type": "object", "properties": {"name": {"type": "string", "description": "Company name as written anywhere: owner, manager, lender or servicer, for example 'KeyBank'. It is matched as a blocking key, so a partial or differently punctuated name returns several candidates rather than one chosen match."}, "limit": {"type": "integer", "default": 10, "description": "Max 50. Every candidate is returned rather than a best guess, so a common name spends this whole budget."}}, "required": ["name"]}, "_meta": {"dfx.example": {"goal": "A lender, owner, manager or servicer name to canonical DFX entity ids.", "arguments": {"name": "KeyBank"}, "expect": "every candidate that blocks on that name, each with a dfx_id", "note": "A name is a blocking key and never an identity, so a common name returns several and DFX will not choose between them for you. Person lookup is deliberately not offered."}}}, {"name": "get_occupancy", "title": "Who occupies a property, or where a company operates", "description": "Two directions from one call. A PROPERTY dfx_id returns the tenants observed at that building: tenant name and dfx_id, occupancy class, leased area, share of the property, and the lease expiration date where the source discloses one. A COMPANY dfx_id returns where that company is observed to operate. `company` with `address` (plus city and state) checks ONE claim: does DFX hold this company at this building. Every row carries its evidence tier and its freshness. Free.\nnot_observed IS NOT VACANT. The published tenancy sources name only the largest tenant of a building, so most real occupiers are outside the disclosure entirely and an absent row is an absent disclosure, never a statement about the space. Accepts the canonical property and company dfx_ids carried by address and name resolution results and by event rows.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Who occupies a property, or where a company operates"}, "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A property dfx_id (returns its tenants) or a company dfx_id (returns its locations). The direction is read from the object, not from a flag."}, "company": {"type": "string", "description": "Company name, for the one-claim check. Used together with `address`; a company name alone is refused."}, "address": {"type": "string", "description": "Street address for the one-claim check. Used together with `company`."}, "city": {"type": "string", "description": "Municipality. The parcel key includes it, so an address without a city resolves poorly."}, "state": {"type": "string", "description": "Two-letter US state code."}, "limit": {"type": "integer", "default": 25, "description": "Max rows. A large building can disclose several tenants."}}, "required": []}}, {"name": "get_property_record", "title": "Everything DFX holds about one property or parcel", "description": "Given a DFX id, return current state, dated events, ownership and management relationships, debt with maturity dates and maturity basis, recorded sales with consideration plus registry book and page, and the provenance of each. Sales carry BOTH the instrument total and this parcel's allocated share, because a deed repeats its full price on every parcel it covers. Free.\nTHIS IS ALSO THE PARCEL LOOKUP. The id can name a property or a parcel, and both come back in full, including the `dfx_id` carried on every address resolution object and every parcel search row.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Everything DFX holds about one property or parcel"}, "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id for a property OR a parcel. Both work and both come back in full. Accepted forms: the `dfx_id` on an address resolution object, the `dfx_id` on a parcel search row, or the evidence `dfx_id` handle carried on every returned event."}}, "required": ["dfx_id"]}, "_meta": {"dfx.example": {"goal": "Everything DFX holds about one parcel, including what it last sold for and under which registry book and page.", "arguments": {"dfx_id": "90555f06-627e-4946-a97f-8397a7bf8726"}, "expect": "the object, its dated events, relationships, debt and recorded sales, each carrying its own provenance", "note": "That id is 100 Binney St in Cambridge, the parcel the resolve_address example above returns. Ids normally come from resolve_address; this one is written down so the call is copyable on its own."}}}, {"name": "search_property_events", "title": "Find dated property events by type, state and time window", "description": "Dated events over US properties and parcels, with provenance and a human-readable headline. Covers LIHTC compliance period endings (the Year 15 recapitalisation trigger, 11,956 of them), HUD subsidy contract expiries (4,721), scheduled loan maturities (3,395) now national rather than Massachusetts, CMBS distress and workout reporting (163 delinquency flags across 26 states, 123 foreclosures across 21), issued building permits and demolition filings (Boston only), and recorded sales (43,680, 2 states). 9,384 events fall inside the next 548 days, measured 2026-09-15. Filter by event type, state and days ahead. An unrecognised event type is REFUSED with the served vocabulary, never answered with an empty list. Free. ORDER: results are sorted by `occurred_at`. A family whose events lie AHEAD is returned soonest first, so the first row is the next thing to happen. A family whose events have already happened is returned NEWEST first, so the first row is the most recent thing that did. The tie-break is stable, so paging never reorders what you have already seen. FORWARD, soonest first: COMPLIANCE_PERIOD_ENDING, LEASE_EXPIRING, LOAN_MATURITY_SCHEDULED, SUBSIDY_CONTRACT_EXPIRING. HISTORICAL, newest first: BANKRUPTCY_EVENT, CERTIFICATE_OF_OCCUPANCY, DEMOLITION_FILED, DISTRESS_FLAG_RAISED, FORECLOSURE_EVENT, LOAN_MODIFIED, PERMIT_ISSUED, PORTFOLIO_CONTRACTED, PORTFOLIO_EXPANDED, PROPERTY_SOLD, USE_CONVERSION_PERMITTED. Measured 2026-09-15. Passing `within_days` asks about a future whatever the family, so it sorts soonest first. PAGING: a full page carries `next_cursor`. Supplied as `cursor` with every other argument unchanged, it continues the traversal; `next_cursor` is null on the last page, and that is the only signal the traversal has ended. The cursor carries the sort it was issued under, so a cursor replayed against a different `event_type` is REFUSED rather than quietly paging you back through rows you have seen. The counts above are therefore all reachable.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Find dated property events by type, state and time window"}, "inputSchema": {"type": "object", "properties": {"event_type": {"type": "string", "enum": ["BANKRUPTCY_EVENT", "CERTIFICATE_OF_OCCUPANCY", "COMPLIANCE_PERIOD_ENDING", "DEMOLITION_FILED", "DISTRESS_FLAG_RAISED", "FORECLOSURE_EVENT", "LEASE_EXPIRING", "LOAN_MATURITY_SCHEDULED", "LOAN_MODIFIED", "PERMIT_ISSUED", "PERMIT_STATUS_CHANGED", "PORTFOLIO_CONTRACTED", "PORTFOLIO_EXPANDED", "PROPERTY_SOLD", "SUBSIDY_CONTRACT_EXPIRING", "USE_CONVERSION_PERMITTED"], "description": "ONE family per call. Left unset, every family is searched together, which mixes populations of very different sizes. The list is generated from what this server actually publishes today, so it grows without a release. An empty result for a family in a state is not by itself evidence of an absent market: coverage per family and state is measured and published separately."}, "state": {"type": "string", "description": "Two letter state code"}, "within_days": {"type": "integer", "description": "FORWARD ONLY: it filters to events occurring between today and N days from now, and it cannot reach the past. A historical event fails every forward window, so any value here returns an empty list for a backward-looking question (\"recent sales\", \"foreclosures that already happened\"), which reads like an absent market; those events are reached with this argument unset. 548 is eighteen months. FORWARD FAMILIES, which this argument is for: COMPLIANCE_PERIOD_ENDING, LEASE_EXPIRING, LOAN_MATURITY_SCHEDULED, SUBSIDY_CONTRACT_EXPIRING. ENTIRELY HISTORICAL as of 2026-09-15, where ANY value returns nothing: BANKRUPTCY_EVENT, CERTIFICATE_OF_OCCUPANCY, DEMOLITION_FILED, DISTRESS_FLAG_RAISED, FORECLOSURE_EVENT, LOAN_MODIFIED, PERMIT_ISSUED, PORTFOLIO_CONTRACTED, PORTFOLIO_EXPANDED, PROPERTY_SOLD, USE_CONVERSION_PERMITTED."}, "limit": {"type": "integer", "default": 25, "description": "Max 50. Results are ordered by occurred_at ASCENDING. For the expiry families (maturities, compliance periods, subsidy contracts, leases) a call with no `within_days` now returns events dated TODAY OR LATER, soonest first; the envelope reports this as `applied_date_floor`. `include_past=true` returns the full history."}, "include_past": {"type": "boolean", "default": false, "description": "Return the whole tape including events already past, instead of the default forward window applied to expiry families. Has no effect when `within_days` is given, which sets its own window, and none on historical families, which are never floored."}, "cursor": {"type": "string", "description": "The `next_cursor` from a previous page. With EVERY other argument identical it returns the rows after that page. `next_cursor` is null only once the whole result set has been read: a short page is not the end, because a page can shrink when two sources publish the same event. Opaque, and not constructed or edited by hand. An unreadable cursor is REFUSED rather than ignored, so a traversal is never silently restarted at page one."}}}, "_meta": {"dfx.example": {"goal": "Commercial mortgages maturing in one state inside eighteen months.", "arguments": {"event_type": "LOAN_MATURITY_SCHEDULED", "state": "MA", "within_days": 548, "limit": 10}, "expect": "rows, ordered soonest first, each with a maturity date, a headline, its source and the loan's balance and rate under `debt`", "note": "Drop `within_days` for any historical family. Drop `state` for the national picture."}}}, {"name": "search_bank_cre_exposure", "title": "FDIC-insured banks by commercial real estate concentration", "description": "Search 4,313 FDIC-insured banks by their commercial real estate book at the June 2026 call report: total CRE, construction and multifamily in dollars and against equity and assets, noncurrent and net charge-off ratios, ROA, and two screens against the 2006 Interagency CRE guidance (construction over 100%, total CRE over 300%). For 4,242 of them, UBPR's peer-group and national percentile RANKS on the same concentrations. Filter by state, name, CRE-to-equity range, guidance screen, minimum assets or minimum noncurrent ratio; sort by cre_to_equity (default), construction_to_equity, noncurrent, cre_total, assets or multifamily. Free.\nTHE GUIDANCE IS QUOTED, NOT APPLIED: it tests TOTAL RISK BASED CAPITAL; the ratios here are on equity and the ranks on Tier 1 plus the allowance, so above_*_guidance_on_equity is a screen against a proxy. Every row states its quarter. No person appears in this data.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "FDIC-insured banks by commercial real estate concentration"}, "inputSchema": {"type": "object", "properties": {"state": {"type": "string", "description": "Two-letter US state, district or territory code of the bank's home office. Unknown codes are refused, not searched."}, "name": {"type": "string", "description": "Substring of the institution name, case-insensitive, e.g. 'riverhills'."}, "min_cre_to_equity_pct": {"type": "integer", "description": "Floor on total CRE as a percent of equity, e.g. 300."}, "max_cre_to_equity_pct": {"type": "integer", "description": "Ceiling on the same ratio."}, "above_guidance": {"type": "boolean", "description": "true: only banks whose total CRE exceeds 300% of equity (the guidance line, on a proxy denominator). false: only banks under it."}, "min_assets_usd": {"type": "integer", "description": "Floor on total assets in dollars, e.g. 1000000000 for $1B."}, "min_noncurrent_pct": {"type": "integer", "description": "Floor on the CRE noncurrent ratio in percent."}, "sort": {"type": "string", "enum": ["cre_to_equity", "construction_to_equity", "noncurrent", "cre_total", "assets", "multifamily"], "description": "Descending on the named measure. Default cre_to_equity."}, "limit": {"type": "integer", "description": "Rows to return, 1 to 50. `matched` states the true total regardless."}}, "required": []}, "_meta": {"dfx.example": {"goal": "Find the banks in a state whose CRE book is past the guidance line.", "arguments": {"state": "OH", "above_guidance": true, "limit": 3}, "expect": "three Ohio banks with total CRE above 300% of equity, most concentrated first, each with its UBPR national percentile rank, and `matched` stating how many Ohio banks are over the line", "note": "The guidance tests total risk based capital; these ratios are on equity, so this is a screen. Every row states its quarter."}}}, {"name": "search_subsidised_housing", "title": "HUD-subsidised projects by place, programme, occupancy and waiting list", "description": "Search HUD's project-level Picture of Subsidized Households: 29,455 subsidised projects nationally, one row per project and programme, with units AVAILABLE (HUD's subsidised units available, which excludes units offline for rehab or disposition; occupancy is measured against these, so 100% of 20 available can be 20 of 50 built), occupied units, occupancy percent, MONTHS ON THE WAITING LIST, average rent, average household income, average tenure and what HUD pays per unit per month. Filter by state, city, programme (Public Housing, Section 8 NC/SR, Section 236, 202/PRAC, 811/PRAC, Mod Rehab), minimum waiting list, occupancy range and minimum units. Ordered by waiting list, deepest queue first. Every row carries the canonical property dfx_id. Free.\nONE ANNUAL CAPTURE, effective 2025-12-31, stated on every row: this is a snapshot of demand, not a change over time. A NULL waiting list is an absent disclosure (housing authorities report it, private owners under a HAP contract mostly do not), never an empty queue; min_waiting_months EXCLUDES such rows and the answer states how many projects in the same place report one. Tenant composition is not published here.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "HUD-subsidised projects by place, programme, occupancy and waiting list"}, "inputSchema": {"type": "object", "properties": {"state": {"type": "string", "description": "Two-letter US state, district or territory code. Unknown codes are refused, not searched."}, "city": {"type": "string", "description": "City as HUD records it, case-insensitive exact match, e.g. Akron."}, "program": {"type": "string", "description": "Substring of the HUD programme name, e.g. 'Public Housing' or 'Section 8'."}, "min_waiting_months": {"type": "integer", "description": "Only projects reporting a waiting list of at least this many months. Excludes projects that report none."}, "min_occupancy": {"type": "integer", "description": "Occupancy percent floor, 0 to 100."}, "max_occupancy": {"type": "integer", "description": "Occupancy percent ceiling, 0 to 100."}, "min_units": {"type": "integer", "description": "Only projects with at least this many units."}, "limit": {"type": "integer", "description": "Rows to return, 1 to 50. `matched` states the true total regardless."}}, "required": []}, "_meta": {"dfx.example": {"goal": "Find the subsidised projects in a state where the queue is longest.", "arguments": {"state": "OH", "min_waiting_months": 24, "limit": 3}, "expect": "three Public Housing projects with a waiting list of two years or more, `matched` stating the true count, and waiting_list_coverage saying how many Ohio projects report a list at all", "note": "A NULL waiting list is an absent disclosure, never an empty queue. Every row is HUD's 2025 capture and says so in as_of."}}}, {"name": "search_parcels", "title": "Find parcels by place, use, tenure, vintage and assessed value", "description": "Search the assessor parcel layer with filters instead of one exact address. Filter by state, municipality, assessor land use code, owner-occupancy, tax-exempt status, year built and assessed value range; results carry assessed value, gross building area, assessed value per square foot, the annual tax and the year built. This is the way to ask a QUESTION of the parcel layer without an address in hand. Every answer states the true match count alongside the sample, and a search that matches nothing names the filter that emptied it rather than returning a bare empty list. At least one filter is required. Free.\nEVERY ROW CARRIES A `dfx_id` AND IT IS A HANDLE, NOT A LABEL: the canonical parcel id this server uses for that parcel's events, ownership, debt and recorded sales.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Find parcels by place, use, tenure, vintage and assessed value"}, "inputSchema": {"type": "object", "properties": {"state": {"type": "string", "description": "Two letter state code"}, "municipality": {"type": "string", "description": "City or town, for example 'Boston'"}, "land_use": {"type": "string", "description": "Assessor land use code, for example 'R3' for a three family dwelling"}, "owner_occupied": {"type": "boolean", "description": "true for owner-occupied, false for investor or institutionally held. Parcels whose roll does not state it are excluded either way."}, "tax_exempt": {"type": "boolean", "description": "true for the institutional universe (churches, universities, authorities), false for the taxable one"}, "built_before": {"type": "integer", "description": "Exclusive upper bound on year built"}, "built_after": {"type": "integer", "description": "Exclusive lower bound on year built"}, "min_assessed": {"type": "integer", "description": "Minimum assessed total, in dollars"}, "max_assessed": {"type": "integer", "description": "Maximum assessed total, in dollars"}, "limit": {"type": "integer", "default": 25, "description": "Max 50. This sizes the SAMPLE only: every answer states the true match count beside it, so a small limit never hides how big the result really is."}}}, "_meta": {"dfx.example": {"goal": "Ask a QUESTION of the parcel layer instead of naming an address you already have.", "arguments": {"state": "MA", "municipality": "Boston", "land_use": "R3", "limit": 3}, "expect": "three parcels, with `matched` stating the true size of the result, which is in the thousands", "note": "At least one filter is required. A search that matches nothing names the filter that emptied it in `emptied_by`, rather than returning a bare empty list that reads like an absent market."}}}, {"name": "what_can_dfx_answer", "title": "Ask in plain language whether DFX can help", "description": "Takes an objective in natural language and returns whether DFX can help, the tool name and arguments that answer it, and a free sample of the result. Says no clearly when the answer is no. Accepts objectives that do not yet map to a specific query.\nREAD ONLY, and the annotation means it: nothing is created, nothing you or anyone else can read back is changed. The question itself is kept in DFX's own interaction ledger, as every call on this server is, and unmet asks are what decide what DFX builds next.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Ask in plain language whether DFX can help"}, "inputSchema": {"type": "object", "properties": {"objective": {"type": "string", "description": "What you are trying to do, in one sentence and in your own words, for example 'commercial real estate loans in Ohio maturing in the next year'. A place named in the sentence is what the free sample is drawn from."}, "constraints": {"type": "object", "description": "Structured overrides for what was parsed out of `objective`, applied last so they outrank the prose. ONLY `state`, `event_type`, `within_days` and `limit` are honoured; any other key is ignored without warning.", "properties": {"state": {"type": "string", "description": "Two letter state code"}, "event_type": {"type": "string", "enum": ["BANKRUPTCY_EVENT", "CERTIFICATE_OF_OCCUPANCY", "COMPLIANCE_PERIOD_ENDING", "DEMOLITION_FILED", "DISTRESS_FLAG_RAISED", "FORECLOSURE_EVENT", "LEASE_EXPIRING", "LOAN_MATURITY_SCHEDULED", "LOAN_MODIFIED", "PERMIT_ISSUED", "PERMIT_STATUS_CHANGED", "PORTFOLIO_CONTRACTED", "PORTFOLIO_EXPANDED", "PROPERTY_SOLD", "SUBSIDY_CONTRACT_EXPIRING", "USE_CONVERSION_PERMITTED"], "description": "One served event family"}, "within_days": {"type": "integer", "description": "Forward window in days"}, "limit": {"type": "integer", "description": "Max 50"}}}, "domain": {"type": "string", "enum": ["real_estate", "family_office", "independent_sponsor", "venture_capital"], "description": "One domain's coverage and tools, answered instead of routing a real estate objective."}, "topic": {"type": "string", "description": "A topic in your own words ('family office direct investing', 'venture fundraising'); answers with the domains that cover it."}}, "required": []}, "_meta": {"dfx.example": {"goal": "You do not know which tool to call.", "arguments": {"objective": "commercial real estate loans in Ohio maturing in the next two years"}, "expect": "the tool name, the exact arguments to pass it, and a free sample", "note": "The tool name it returns is an MCP tool name you can call directly."}}}, {"name": "changes_since", "title": "What DFX has learned since your last call", "description": "A feed of what is NEW since a cursor, ordered by when DFX learned it rather than by when it happened. The first call, made without a cursor, returns ZERO events and a starting position by design; a later call with that cursor returns what DFX learned in between. It answers what is new, not what exists. Filter by event type, state, or a specific property or parcel id. Deterministic and indexed, so frequent polling is cheap. Free.\nHISTORICAL FAMILIES DO FLOW THROUGH HERE. This feed is ordered by when DFX LEARNED a fact, not when the fact happened, so a foreclosure that occurred months ago and was ingested today arrives in today's delta. A distress or sales feed built on this works.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "What DFX has learned since your last call"}, "inputSchema": {"type": "object", "properties": {"since": {"type": "string", "description": "Opaque cursor from a previous call. Unset on the first call, which establishes a position and returns no events by design."}, "event_type": {"type": "string", "enum": ["BANKRUPTCY_EVENT", "CERTIFICATE_OF_OCCUPANCY", "COMPLIANCE_PERIOD_ENDING", "DEMOLITION_FILED", "DISTRESS_FLAG_RAISED", "FORECLOSURE_EVENT", "LEASE_EXPIRING", "LOAN_MATURITY_SCHEDULED", "LOAN_MODIFIED", "PERMIT_ISSUED", "PERMIT_STATUS_CHANGED", "PORTFOLIO_CONTRACTED", "PORTFOLIO_EXPANDED", "PROPERTY_SOLD", "SUBSIDY_CONTRACT_EXPIRING", "USE_CONVERSION_PERMITTED"], "description": "One served event family."}, "state": {"type": "string", "description": "Two letter state code"}, "place_dfx_id": {"type": "string", "description": "Watch one property or parcel"}, "limit": {"type": "integer", "default": 50, "description": "Max 50. A full page sets `complete: false` in the envelope, which means the backlog was longer than one page and more rows are available immediately with the returned cursor. The cursor is the last row on the page, never the present moment, so nothing is skipped."}, "domain": {"type": "string", "enum": ["family_office", "independent_sponsor", "venture_capital"], "description": "An intelligence domain instead of real estate; with it, `since` is an ISO timestamp."}, "dfx_id": {"type": "string", "description": "With `domain`: watch one entity (dfx:fo:, dfx:isi: or dfx:vc: id)."}}}, "_meta": {"dfx.example": {"goal": "Start a feed. The FIRST call deliberately returns no events.", "arguments": {}, "expect": "count 0, first_call true, and a cursor. That is the call succeeding, not an empty market", "note": "Call again with that cursor as `since` to receive what DFX learned in between. It is ordered by when DFX LEARNED a fact, so a foreclosure recorded months ago and ingested today arrives in today's delta. If you want rows now rather than a subscription, call search_property_events instead."}}}, {"name": "debt_maturity_schedule", "title": "Confirmed commercial mortgage maturities for one state", "description": "Free, keyless and unauthenticated.\nReturns the LOAN rather than the event: for one US state and one forward window, up to 200 loans with maturity date, original and current principal, interest rate, lender name, instrument type, origination date and the secured property's address, deduplicated to one row per loan and ordered by maturity.\nEvery maturity_basis is 'confirmed': 19,821 of 19,821 loans carry a date filed with the SEC by a servicer or recorded by HUD, and none is estimated or inferred from a term length.\nEvery response states how many loans DFX holds for the filter and whether the delivery is complete, so an answer capped at 200 rows is never presented as the whole population. Each row says whether a maturity event was published for the loan. A missing event does not mean the loan is defeased: loans filed as defeased (ABS-EE code F, or IP for a portion) are withheld, and code X means defeasance is not allowable, so an X loan must refinance or pay off at maturity.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Confirmed commercial mortgage maturities for one state"}, "inputSchema": {"type": "object", "properties": {"state": {"type": "string", "description": "Two letter state code. Required."}, "within_days": {"type": "integer", "default": 548, "description": "Forward window from today. Default 548, eighteen months."}, "limit": {"type": "integer", "default": 200, "description": "Maximum loans, up to 200."}}, "required": ["state"]}, "_meta": {"dfx.example": {"goal": "Every confirmed commercial loan maturity in one state, lender named.", "arguments": {"state": "OH", "within_days": 548, "limit": 10}, "expect": "rows, one per loan, soonest maturity first, with lender, principal and rate, plus `population` stating how many loans DFX holds", "note": "Free. At most 200 loans per call."}}}, {"name": "dfx_coverage", "title": "What DFX actually covers, and what it does not", "description": "Measured coverage, served sources, object types and the known gaps stated plainly, including where geography is a single state and where nothing carries a calibrated probability. It separates an empty result from an absent market.\nWith NO arguments: the full grid, every event family, every state, measured. With `state` and/or `event_type`: a direct verdict on that one slice (COVERED, NOT_COVERED or UNKNOWN) with the basis it was decided on, which is one small answer instead of a grid to parse. Free, and it queries no data: the verdict comes from a coverage registry, so a NOT_COVERED is measured rather than inferred from an empty search.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "What DFX actually covers, and what it does not"}, "inputSchema": {"type": "object", "properties": {"state": {"type": "string", "description": "Two letter state code. Optional: narrows the answer to this state."}, "event_type": {"type": "string", "enum": ["BANKRUPTCY_EVENT", "CERTIFICATE_OF_OCCUPANCY", "COMPLIANCE_PERIOD_ENDING", "DEMOLITION_FILED", "DISTRESS_FLAG_RAISED", "FORECLOSURE_EVENT", "LEASE_EXPIRING", "LOAN_MATURITY_SCHEDULED", "LOAN_MODIFIED", "PERMIT_ISSUED", "PERMIT_STATUS_CHANGED", "PORTFOLIO_CONTRACTED", "PORTFOLIO_EXPANDED", "PROPERTY_SOLD", "SUBSIDY_CONTRACT_EXPIRING", "USE_CONVERSION_PERMITTED"], "description": "Optional: narrows the answer to this served event family."}}}, "_meta": {"dfx.example": {"goal": "Whether a family is covered in a state, before you spend a call.", "arguments": {"state": "TX", "event_type": "PROPERTY_SOLD"}, "expect": "a NOT_COVERED verdict naming the states that ARE covered", "note": "Call with no arguments for the whole grid instead."}}}, {"name": "search_family_offices", "title": "Search US family offices", "description": "Family offices as compact cards: class (single, multi, embedded...) with confidence, whether they invest directly, sectors and asset classes on record, check size where stated, direct investment count, latest deployment, and counts of people, sponsor and real estate relationships. Filter by state, sector, direct investing, recent activity or AUM. Returns dfx:fo: ids. People and individual investments are not on these cards.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "Name contains."}, "state": {"type": "string", "description": "Two-letter US state code."}, "city": {"type": "string"}, "sector": {"type": "string", "description": "A sector on the office's record, e.g. industrial services, healthcare, real estate."}, "asset_class": {"type": "string"}, "invests_directly": {"type": "boolean"}, "class": {"type": "string", "enum": ["CANDIDATE_FAMILY_OFFICE", "PROBABLE_SFO", "CONFIRMED_SFO", "CONFIRMED_MFO", "OUTSOURCED_FAMILY_OFFICE", "FAMILY_INVESTMENT_COMPANY", "FAMILY_INVESTMENT_VEHICLE", "NOT_FAMILY_OFFICE"], "description": "The classifier's verdict. A CANDIDATE is a name, never a class. NOT_FAMILY_OFFICE rows are excluded unless asked for."}, "min_aum_usd": {"type": "number"}, "recent_activity_days": {"type": "integer"}, "has_sponsor_relationships": {"type": "boolean", "description": "Offices with a CO_INVESTED_WITH or capital-provider edge to the sponsor graph. Answers NOT_COVERED with the count while no office carries one."}, "has_real_estate": {"type": "boolean", "description": "Offices with a real estate relationship on the rollup. Answers NOT_COVERED while none carries one; asset_class='real_estate' reads the stated asset classes instead."}, "sort": {"type": "string", "enum": ["confidence", "recent", "aum", "activity"]}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}, "cursor": {"type": "string"}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Search US family offices"}, "_meta": {"dfx.example": {"goal": "Texas family offices that invest directly in industrial businesses", "arguments": {"state": "TX", "sector": "industrial", "invests_directly": true, "limit": 10}}}}, {"name": "get_family_office", "title": "One family office in full", "description": "The full card for one family office: profile, AUM / RAUM / 13F value kept apart with their as-of dates, behaviour, the people who run it with roles, its observed investments, relationships, recent events, evidence rows and cross-graph links (same_as by shared CRD/CIK/EIN). Contact points are withheld over MCP. Accepts dfx:fo: ids.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "One family office in full"}}, {"name": "search_family_office_investments", "title": "Observed family office investments", "description": "Dated investments family offices have been observed making: target, sector, asset class, structure, control or minority, lead or participant, amounts where disclosed (with basis), board seats, exits, and the source quote. Filter by office, sector, asset class, state, kind or since-date. The evidence behind 'this office backs X'.", "inputSchema": {"type": "object", "properties": {"office_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "sector": {"type": "string"}, "asset_class": {"type": "string"}, "state": {"type": "string", "description": "Two-letter US state code."}, "investment_kind": {"type": "string", "enum": ["acquisition", "direct_equity", "direct_investment", "round_participation", "recapitalization", "credit", "venture", "growth", "portfolio_listing"], "description": "portfolio_listing is a company named on the office's own portfolio page without a dated transaction; round_participation, direct_investment, recapitalization and credit come from dated press releases and the office's own news."}, "since": {"type": "string", "description": "ISO date."}, "include_candidates": {"type": "boolean", "description": "Without an office id the tape covers family-capital offices only (confirmed and probable SFOs, confirmed MFOs, family investment companies and vehicles), the same rule as dfxintel.com. true widens to every classed office, candidates included; each row says its investor_class."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Observed family office investments"}}, {"name": "search_independent_sponsors", "title": "Search independent sponsors", "description": "Verified independent sponsor firms (deal-by-deal acquirers of lower middle market companies) as compact cards: verification status, classification, mandate summary, principals, vehicle count and latest vehicle, and how many companies resemble the sponsor's observed deals. Only firms whose identity evidence names them (eligibility VERIFIED_SPONSOR_FIRM) are returned unless include_unverified is true, which returns the unverified filing groups and candidates as a labelled research list. With `sector`, the answer is OBSERVED behaviour: verified sponsors with observed deals in that vertical first. Returns dfx:isi: ids. Capital providers and target companies are not in these results.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string"}, "state": {"type": "string", "description": "Two-letter US state code."}, "city": {"type": "string"}, "include_unverified": {"type": "boolean", "description": "true returns the research list instead: unverified Form D filing groups and candidates, never paired with companies. Default false."}, "sector": {"type": "string", "description": "Free text mapped onto the eight verticals (business_services, industrial_manufacturing, industrial_services, healthcare_services, consumer_services, specialty_distribution, transportation_logistics, tech_enabled_services); text that maps to none is matched against the mandate summary."}, "kind": {"type": "string", "enum": ["independent_sponsor", "sponsor_candidate", "spv_syndicate"]}, "min_confidence": {"type": "number"}, "sort": {"type": "string", "enum": ["confidence", "recent", "matches"]}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Search independent sponsors"}}, {"name": "get_independent_sponsor", "title": "One sponsor, provider or private company in full", "description": "The full card for any entity on the sponsor graph: a sponsor (with its verification status, the companies resembling its observed deals as counted facts and reasons with no score, its announced transactions and its observed capital relationships), a capital provider (with fund size, average investment, SBIC status, strategy, whether making new investments) or a private company (with its transition signals and sponsor matches). Plus relationships, events, evidence and cross-graph links. Accepts dfx:isi: ids.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "One sponsor, provider or private company in full"}}, {"name": "search_sponsor_capital_providers", "title": "Capital providers that fund independent sponsors", "description": "SBICs, mezzanine and private equity funds, and family offices observed providing capital to independent sponsors: provider type, strategy, fund style, fund size and average investment (kept apart), vintage, SBIC licence, whether making new investments, mandate summary. Filter by state, type, sector text, SBIC status or fund size.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string"}, "state": {"type": "string", "description": "Two-letter US state code."}, "provider_type": {"type": "string", "enum": ["sbic", "family_office"], "description": "sbic: SBA-licensed funds. family_office: providers that are the same entity as a family office on the family office graph (shared CRD, CIK or EIN), never a name match."}, "sector": {"type": "string", "description": "Free text against the mandate, strategy and description."}, "sbic_licensed": {"type": "boolean"}, "making_new_investments": {"type": "boolean"}, "min_fund_size_usd": {"type": "number"}, "sort": {"type": "string", "enum": ["confidence", "fund_size", "matches"]}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Capital providers that fund independent sponsors"}}, {"name": "search_private_companies", "title": "Private companies with an ownership transition coming", "description": "US private companies whose filings (Form 5500 plan history, final filings, ownership changes) show a transition: vertical, plan participants as a size proxy, EBITDA band where derivable, and scores 0 to 100 for opportunity, dealability, transition readiness and urgency, each backed by observations. Filter by vertical, state, NAICS prefix, size and minimum opportunity. Returns dfx:isi: ids.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string"}, "vertical": {"type": "string", "description": "One of business_services, industrial_manufacturing, industrial_services, healthcare_services, consumer_services, specialty_distribution, transportation_logistics, tech_enabled_services (free text is mapped onto these)."}, "subsector": {"type": "string", "description": "Free text on the subsector (slower)."}, "state": {"type": "string", "description": "Two-letter US state code."}, "city": {"type": "string"}, "naics_prefix": {"type": "string"}, "min_opportunity": {"type": "integer", "description": "0 to 100; the median company scores 21 and the top decile above 28."}, "min_participants": {"type": "integer"}, "max_participants": {"type": "integer"}, "record_status": {"type": "string"}, "sort": {"type": "string", "enum": ["opportunity", "recent", "size"]}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Private companies with an ownership transition coming"}, "_meta": {"dfx.example": {"goal": "healthcare services companies in Ohio with a transition coming", "arguments": {"vertical": "healthcare", "state": "OH", "min_opportunity": 25}}}}, {"name": "search_sponsor_deals", "title": "Announced sponsor transactions", "description": "Announced acquisitions, recapitalisations and exits by independent sponsors: sponsor, target, dates, enterprise value range where disclosed, structure, parties and source. Filter by sponsor, target, type, state, since-date or name text.", "inputSchema": {"type": "object", "properties": {"sponsor_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "target_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "txn_type": {"type": "string", "enum": ["platform_acquisition", "add_on", "recapitalization", "founder_buyback", "esop"]}, "state": {"type": "string", "description": "Two-letter US state code."}, "since": {"type": "string"}, "query": {"type": "string", "description": "Matches the sponsor's or the target's name."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Announced sponsor transactions"}}, {"name": "search_pending_ownership_changes", "title": "Official pending nursing home ownership changes", "description": "OFFICIAL state records that a skilled nursing facility's ownership, control or operator is changing, before the change takes effect (Kentucky, New York, Rhode Island, New Jersey, Maine): facility, CCN, beds, current and proposed operator, real estate owner where public, the state's own stage, record class (OFFICIAL_PENDING_FILING, DERIVED_STATUS, CONFIRMED_EFFECTIVE_CHANGE, WITHDRAWN_OR_DENIED), first public record date, days pending, planned close, evidence tags with their facts, source URL and last checked. With changed_since, returns what changed (new application, agenda, vote, withdrawal, effective) instead. Not predictions. Each state's audited fields are listed; proposed owners and percentages are not returned as fact.", "inputSchema": {"type": "object", "properties": {"state": {"type": "string", "enum": ["KY", "NY", "RI", "NJ", "ME"]}, "view": {"type": "string", "enum": ["open", "effective", "withdrawn", "all"], "default": "open"}, "tag": {"type": "string", "description": "An evidence tag, e.g. OPERATOR_CHANGE_PENDING, PORTFOLIO_BATCH, HUD_FHA_EXPOSURE, PLANNED_CLOSE_PASSED."}, "query": {"type": "string", "description": "Matches facility, current or proposed operator, or real estate owner."}, "changed_since": {"type": "string", "description": "YYYY-MM-DD: return change alerts observed on or after this date."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Official pending nursing home ownership changes"}}, {"name": "search_vc_firms", "title": "Search venture capital firms", "description": "Venture firms as compact cards: stated sectors, stages, geography and check size beside OBSERVED behaviour (investments in the last 6 and 12 months, lead count, behaviour summary and divergence from the stated thesis), funds with the latest vintage and Form D, people and partner counts. Filter by sector, stage, state, active or raising, emerging manager. Returns dfx:vc: ids. Funds, people and individual deals are not on these cards.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string"}, "state": {"type": "string", "description": "Two-letter US state code."}, "city": {"type": "string"}, "sector": {"type": "string", "description": "Against stated sectors, thesis, description and behaviour summary. Answers NOT_COVERED while no firm carries one (websites unread this cycle); firms remain reachable through the investors recorded on their portfolio companies."}, "stage": {"type": "string"}, "active_only": {"type": "boolean", "description": "investments observed in the last 12 months"}, "raising_only": {"type": "boolean", "description": "a fund with a Form D in the last 18 months"}, "emerging_manager": {"type": "boolean"}, "min_investments": {"type": "integer"}, "recent_activity_days": {"type": "integer"}, "sort": {"type": "string", "enum": ["importance", "recent", "velocity", "funds"]}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Search venture capital firms"}}, {"name": "get_vc_firm", "title": "One venture firm, person, fund or company in full", "description": "The full card for any entity on the venture graph: a firm (with recent investments, co-investors and funds), a person (with attributed investments and board seats), a fund (with all seven fund amounts kept apart and its lifecycle state) or a portfolio company (with its investors). Plus relationships, events, evidence and cross-graph links. Accepts dfx:vc: ids.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "One venture firm, person, fund or company in full"}}, {"name": "search_vc_investments", "title": "Venture round participations", "description": "Investor-by-investor participations in rounds: investor, company, fund, the partner attributed (with attribution level), role (lead or participant), new or follow-on, board seat, round type, stage and amount (the round's, never the check), and the source quote. Filter by investor, company, partner, stage, state, since-date or lead only.", "inputSchema": {"type": "object", "properties": {"investor_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "company_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "partner_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "stage": {"type": "string"}, "state": {"type": "string", "description": "Two-letter US state code."}, "since": {"type": "string"}, "lead_only": {"type": "boolean"}, "query": {"type": "string", "description": "Matches the company's or the investor's name."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Venture round participations"}}, {"name": "search_vc_funds", "title": "Venture funds and their amounts", "description": "Funds with every amount under its own name (target, first close, final close, announced size, Form D offering and sold, ADV gross asset value), vintage and basis, lifecycle state, investor counts, LP count. Filter by manager, lifecycle, vintage range, strategy or Form D sold.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string"}, "organization_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "lifecycle_state": {"type": "string", "enum": ["WOUND_DOWN"], "description": "Only WOUND_DOWN is assigned today; other funds carry null."}, "min_vintage": {"type": "integer"}, "max_vintage": {"type": "integer"}, "strategy": {"type": "string"}, "min_form_d_sold_usd": {"type": "number"}, "sort": {"type": "string", "enum": ["vintage", "size", "recent"]}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Venture funds and their amounts"}}, {"name": "search_pe_firms", "title": "Search private equity firms", "description": "Private equity firms (management companies and advisers) as compact cards: the classifier's class with its state, confidence and basis; size band with the evidence it was sized on; fund counts, latest vintage and Form ADV gross assets reported for private equity funds since 2024 (reported gross assets, NOT fund size or dry powder); portfolio and transaction counts (36 and 12 months); team counts; acquisition appetite and investment velocity values. Filter by name, class, class_state, size_band, state or minimum transactions in 36 months. Returns dfx:pe: ids. Funds, people, transactions, scores with their components and counterparties are on get_pe_firm, not on these cards. Not for family offices, independent sponsors or venture firms (search_family_offices, search_independent_sponsors, search_vc_firms).", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "Firm name contains, e.g. 'Audax'. Punctuation is ignored."}, "class": {"type": "string", "enum": ["BUYOUT", "GROWTH_EQUITY", "MINORITY_INVESTOR", "SEARCH_FUND_INVESTOR", "INDEPENDENT_SPONSOR", "FAMILY_OFFICE_DIRECT", "PERMANENT_CAPITAL", "HOLDING_COMPANY", "CORPORATE_INVESTMENT_ARM", "SPECIAL_SITUATIONS", "DISTRESSED", "SECONDARIES", "CONTINUATION_FUND_MANAGER", "REAL_ESTATE_PE", "INFRASTRUCTURE", "PRIVATE_CREDIT", "FUND_OF_FUNDS", "HYBRID_MANAGER", "VENTURE_WITH_PE_ACTIVITY", "CANDIDATE_PE"], "description": "The classifier's verdict. CANDIDATE_PE is a name on the universe that has not been ruled on; firms with no class yet are also candidates and are excluded by any class filter. NOT_PE rows are never published."}, "class_state": {"type": "string", "enum": ["candidate", "probable", "confirmed"], "description": "How settled the class is. confirmed means evidence the classifier treats as decisive; probable is a strong inference."}, "size_band": {"type": "string", "enum": ["LOWER_MIDDLE_MARKET", "MIDDLE_MARKET", "UPPER_MIDDLE_MARKET", "LARGE_CAP", "UNSIZED"], "description": "LOWER_MIDDLE_MARKET, MIDDLE_MARKET, UPPER_MIDDLE_MARKET, LARGE_CAP, or UNSIZED (no size evidence yet, not 'small'). Each card names the basis the band was assigned on."}, "state": {"type": "string", "description": "Two-letter US state code."}, "min_transactions_36m": {"type": "integer", "minimum": 1, "description": "At least this many transactions as sponsor, buyer, co-investor or minority investor announced in the last 36 months."}, "sort": {"type": "string", "enum": ["transactions", "gav", "recent", "funds", "name"], "description": "transactions (default): most deals in 36 months; gav: reported PE gross assets; recent: latest event; funds: private equity fund count."}, "limit": {"type": "integer", "minimum": 1, "maximum": 25, "default": 25}, "cursor": {"type": "string", "description": "next_cursor from a previous page of this tool, unchanged."}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Search private equity firms"}, "_meta": {"dfx.example": {"goal": "lower middle market buyout firms in Texas with recent deals", "arguments": {"class": "BUYOUT", "size_band": "LOWER_MIDDLE_MARKET", "state": "TX", "min_transactions_36m": 3, "limit": 10}}}}, {"name": "get_pe_firm", "title": "One private equity firm in full", "description": "The full card for a private equity firm: identity (website, HQ, ADV filing dates), classification with basis and the size band's definition and evidence, classification history, stated criteria (sectors, EBITDA, EV, equity check, control) kept apart from observed behaviour, funds summary and its ten latest funds, team summary and current people with titles, portfolio summary with recent investments and transactions, top counterparties (lenders, advisers, placement agents, co-investors with shared-deal counts), every score WITH its components and missing_inputs, recent events, evidence, and same_as links to the family office, sponsor and venture graphs by shared identifier. Also accepts a dfx:pe: person, fund or company id and returns that card.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A private equity graph id of the form dfx:pe:<uuid>, as returned by search_pe_firms, search_pe_funds, search_pe_platforms or search_entities."}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "One private equity firm in full"}}, {"name": "search_pe_funds", "title": "Private equity funds and their amounts", "description": "Funds on the private equity graph with every amount under its own name and beside its basis: target, first close, final close, announced size, Form D offering and sold, and the Form ADV gross asset value with its as-of date. adv_gross_asset_value is the gross assets the adviser REPORTED for the fund: it is not fund size, not commitments and not dry powder. Also vintage with basis, ADV fund type, lifecycle state, owner and LP counts. Filter by name, manager, ADV fund type, vintage range, lifecycle or minimum reported gross assets.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "Fund name contains, e.g. 'Fund IV'."}, "organization_dfx_id": {"type": "string", "description": "A private equity graph id of the form dfx:pe:<uuid>, as returned by search_pe_firms, search_pe_funds, search_pe_platforms or search_entities."}, "adv_fund_type": {"type": "string", "enum": ["Private Equity Fund", "Hedge Fund", "Venture Capital Fund", "Real Estate Fund", "Securitized Asset Fund", "Liquidity Fund", "Other Private Fund"], "description": "The fund type the adviser swore on Form ADV Schedule D."}, "min_vintage": {"type": "integer", "description": "Four-digit year."}, "max_vintage": {"type": "integer", "description": "Four-digit year."}, "lifecycle_state": {"type": "string"}, "min_adv_gav_usd": {"type": "number", "description": "Minimum reported Form ADV gross asset value in US dollars (reported gross assets, not fund size)."}, "sort": {"type": "string", "enum": ["vintage", "gav", "recent"]}, "limit": {"type": "integer", "minimum": 1, "maximum": 25, "default": 25}, "cursor": {"type": "string"}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Private equity funds and their amounts"}}, {"name": "get_pe_fund", "title": "One private equity fund in full", "description": "One fund: manager, vintage and basis, every amount kept apart with its basis (adv_gross_asset_value is reported gross assets, not fund size or dry powder), the year-by-year Form ADV reporting tape (gross assets, owners, minimum investment, ownership percentages), LP commitments where disclosed, relationships (placement agents, auditors, principals), events and evidence. Refuses an id that is not a fund; use get_pe_firm for the manager.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A private equity graph id of the form dfx:pe:<uuid>, as returned by search_pe_firms, search_pe_funds, search_pe_platforms or search_entities."}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "One private equity fund in full"}}, {"name": "search_pe_transactions", "title": "Private equity transactions", "description": "Acquisitions, add-ons, recapitalisations, carve-outs, secondary sales and exits on the private equity graph: type, status, announced and closed dates, target with industry and state, platform for an add-on (with the basis for calling it one), control, every party with role, side and attribution, and money (enterprise value, purchase price, equity value, target revenue and EBITDA) ONLY where disclosed, each beside its basis. An undisclosed amount is absent, never estimated. Filter by firm (any party), target, platform, type, target state, since-date, add-ons only, control or target name.", "inputSchema": {"type": "object", "properties": {"firm_dfx_id": {"type": "string", "description": "A dfx:pe: firm or person id; returns transactions where it is any party (sponsor, buyer, seller, co-investor, lender, adviser, deal partner)."}, "target_dfx_id": {"type": "string", "description": "A private equity graph id of the form dfx:pe:<uuid>, as returned by search_pe_firms, search_pe_funds, search_pe_platforms or search_entities."}, "platform_dfx_id": {"type": "string", "description": "A private equity graph id of the form dfx:pe:<uuid>, as returned by search_pe_firms, search_pe_funds, search_pe_platforms or search_entities."}, "transaction_type": {"type": "string", "enum": ["platform_acquisition", "add_on_acquisition", "majority_recapitalization", "minority_investment", "growth_investment", "majority_investment", "carve_out", "divestiture", "sponsor_to_sponsor", "take_private", "continuation_transaction", "secondary_sale", "exit_strategic_sale", "exit_ipo", "merger", "refinancing", "debt_financing", "fund_close", "unknown"]}, "state": {"type": "string", "description": "Two-letter US state code of the target."}, "since": {"type": "string", "description": "ISO date; transactions announced on or after."}, "add_on_only": {"type": "boolean"}, "control_status": {"type": "string", "enum": ["control", "minority", "unknown"]}, "query": {"type": "string", "description": "Target company name contains."}, "limit": {"type": "integer", "minimum": 1, "maximum": 25, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Private equity transactions"}}, {"name": "search_pe_platforms", "title": "Private equity platform companies", "description": "Companies that act as a platform (a sponsor's platform investment, or a company that has made add-ons): industry, add-on counts (total and last 24 months) and latest add-on date, current owners with role, status and dates, ownership since, and the platform acquisition activity and exit readiness scores. Filter by name, state, industry text, minimum add-ons in 24 months or owner firm. Returns dfx:pe: company ids for find_pe_addons_for_platform.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "Company name contains."}, "state": {"type": "string", "description": "Two-letter US state code."}, "sector": {"type": "string", "description": "Industry contains, e.g. 'healthcare', 'software', 'distribution'."}, "min_add_ons_24m": {"type": "integer", "minimum": 1}, "owner_dfx_id": {"type": "string", "description": "A dfx:pe: firm id; only platforms it owns or has owned."}, "sort": {"type": "string", "enum": ["add_ons", "recent", "activity"]}, "limit": {"type": "integer", "minimum": 1, "maximum": 25, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Private equity platform companies"}}, {"name": "find_pe_buyers_for_company", "title": "Private equity firms that could buy this company", "description": "Computed buyer_for_company matches from the private equity matcher for one company (a dfx:pe:, dfx:isi: or dfx:vc: company id): each firm with the matcher's reasons, blockers, why_now and comparable transactions verbatim, the deal partner where attributed, score, confidence, model version and computed date. When the matcher has scored nothing for the company the answer is NOT_COVERED with the population count: that means DFX has not computed buyers for it, never that no buyer exists. For sponsors, family offices and capital providers as well, use find_capital_for_opportunity.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A company id: dfx:pe:<uuid>, dfx:isi:<uuid> or dfx:vc:<uuid>."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 20}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Private equity firms that could buy this company"}, "_meta": {"dfx.example": {"goal": "private equity buyers for a company from search results", "arguments": {"dfx_id": "dfx:pe:<uuid>"}}}}, {"name": "find_pe_companies_for_buyer", "title": "Companies a private equity firm should look at", "description": "Computed company_for_buyer matches for one private equity firm (dfx:pe: id): each company (on the private equity, sponsor or venture graph, with its dfx id) with the matcher's reasons, blockers, why_now and comparables verbatim, score, confidence and computed date. NOT_COVERED when the matcher has scored nothing for the firm, which is not a statement that nothing fits.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A private equity graph id of the form dfx:pe:<uuid>, as returned by search_pe_firms, search_pe_funds, search_pe_platforms or search_entities."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 20}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Companies a private equity firm should look at"}}, {"name": "find_pe_addons_for_platform", "title": "Add-on candidates for a platform company", "description": "Computed addon_for_platform matches for one platform (a dfx:pe: company id from search_pe_platforms): each candidate company with the matcher's reasons, blockers, why_now and comparable add-ons verbatim, the platform's owner, score, confidence and computed date. NOT_COVERED when the matcher has scored nothing for the platform, which is not a statement that no add-on fits.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A private equity graph id of the form dfx:pe:<uuid>, as returned by search_pe_firms, search_pe_funds, search_pe_platforms or search_entities."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 20}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Add-on candidates for a platform company"}}, {"name": "search_entities", "title": "Search every DFX domain at once", "description": "One search across family offices, independent sponsors and their capital providers, private companies, venture firms, private equity firms and funds, and real estate organisations: by name, or by filters (entity_type, domain, state, sector, ...). Compact cards with stable dfx ids and a per-domain coverage note. Breadth across every domain in one query, with fewer per-domain filters than the domain searches.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "A name (contains)."}, "domain": {"type": "string", "description": "Comma-separated: real_estate, family_office, independent_sponsor, venture_capital, private_equity. Default: all."}, "entity_type": {"type": "string", "description": "family_office, sponsor, capital_provider, company, vc_firm, pe_firm, platform, fund, person, property, organization."}, "state": {"type": "string", "description": "Two-letter US state code."}, "city": {"type": "string"}, "sector": {"type": "string"}, "asset_class": {"type": "string"}, "stage": {"type": "string"}, "invests_directly": {"type": "boolean"}, "recent_activity_days": {"type": "integer"}, "min_aum_usd": {"type": "number"}, "vertical": {"type": "string"}, "min_opportunity": {"type": "integer"}, "has_sponsor_relationships": {"type": "boolean"}, "has_real_estate": {"type": "boolean"}, "active_only": {"type": "boolean"}, "sort": {"type": "string"}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}, "cursor": {"type": "string"}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Search every DFX domain at once"}, "_meta": {"dfx.example": {"goal": "find anything DFX knows under a name", "arguments": {"query": "Pritzker", "limit": 10}}}}, {"name": "resolve_name", "title": "A name to DFX ids, fast, across every private capital graph", "description": "Resolve a firm, fund, person or company name to canonical dfx ids from the Data Factory's index of every published name and alias (former names, dbas, legal names) on the family office, sponsor, venture and private equity graphs. Ranked exact, prefix, then word match; one row per entity; typically under 200 ms. The first call before get_entity. Real estate organisations are resolved by resolve_organization instead.", "inputSchema": {"type": "object", "properties": {"name": {"type": "string", "description": "The name, or a word of it (Blackstone, Horowitz, Thoma)."}, "domain": {"type": "string", "description": "Comma-separated: family_office, independent_sponsor, venture_capital, private_equity. Default: all four."}, "entity_type": {"type": "string", "description": "Comma-separated graph types: organization, office, sponsor, capital_provider, fund, person, company."}, "limit": {"type": "integer", "maximum": 50, "default": 10}}, "required": ["name"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "A name to DFX ids, fast, across every private capital graph"}, "_meta": {"dfx.example": {"goal": "turn a name into dfx ids across every private capital graph, fast", "arguments": {"name": "Thoma Bravo", "limit": 5}}}}, {"name": "get_entity", "title": "Everything DFX knows about one id", "description": "For any DFX id: the full card, published relationships with sources and dates, recent events, evidence rows (the observation each fact traces to), cross-graph same_as links by shared identifier, same-name candidates on other graphs (labelled as candidates), and pointers to deeper views. One answer to 'show me everything on X'.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "include": {"type": "array", "items": {"type": "string", "enum": ["relationships", "events", "evidence", "same_as", "name_candidates"]}, "description": "Default: relationships, events, evidence, same_as. Add name_candidates to also search the other graphs by name (slower; candidates only)."}, "relationship_limit": {"type": "integer"}, "event_limit": {"type": "integer"}, "evidence_limit": {"type": "integer"}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Everything DFX knows about one id"}}, {"name": "search_people", "title": "People across the family office, sponsor, venture and private equity graphs", "description": "Investment professionals, principals and family office staff as names with titles, roles, seniority, investment responsibility, organisation and tenure, from public filings and firm pages. By name, or by organization_dfx_id, or by role. cross_graph_only=true answers 'which venture people are connected to family offices' in one call. At least one of query, organization_dfx_id, role, investment_responsibility or cross_graph_only is required; a call with none of them is refused with INVALID_ARGUMENT. Contact points are withheld over MCP; the site publishes them per office.", "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "A person's name (contains)."}, "domain": {"type": "string", "enum": ["family_office", "independent_sponsor", "venture_capital", "private_equity"]}, "organization_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "role": {"type": "string", "description": "family_office: leadership, cio, direct_investments, operations, board, venture, real_estate, family_principal, other. venture_capital: managing_partner, general_partner, partner, principal, vice_president, venture_partner, operating_partner, platform, founder_executive, board, other. private_equity: managing_partner, partner, operating_partner, vice_president, business_development and the other categories on each card."}, "investment_responsibility": {"type": "boolean"}, "current_only": {"type": "boolean", "default": true}, "cross_graph_only": {"type": "boolean", "description": "Only people who are the same person on two graphs (a venture professional who is also on a family office's ADV Schedule A), linked by shared individual CRD; returns both cards."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "People across the family office, sponsor, venture and private equity graphs"}}, {"name": "search_relationships", "title": "Published edges on one entity", "description": "Every published relationship touching one entity (EMPLOYS, PRINCIPAL_OF, INVESTED_IN, CO_INVESTED_WITH, MANAGES, OWNS, BOARD_MEMBER_OF, VEHICLE_OF, ...), each with role, dates, currency, confidence, evidence class and source. Plus same_as links to the same entity on other graphs.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "rel_type": {"type": "string"}, "current_only": {"type": "boolean"}, "limit": {"type": "integer", "maximum": 200}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Published edges on one entity"}}, {"name": "relationship_path", "title": "How two entities are connected", "description": "An evidence-backed path between two DFX ids across every graph: each hop is a published relationship with its source, or a SAME_AS identity link by shared CRD/CIK/EIN. Bidirectional search up to max_hops (default 3). NO_MATCH means no observed path within budget, not that they are unconnected.", "inputSchema": {"type": "object", "properties": {"from_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "to_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "max_hops": {"type": "integer", "minimum": 1, "maximum": 4, "default": 3}}, "required": ["from_dfx_id", "to_dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "How two entities are connected"}, "_meta": {"dfx.example": {"goal": "connect two ids from search results", "arguments": {"from_dfx_id": "dfx:fo:<uuid>", "to_dfx_id": "dfx:isi:<uuid>"}}}}, {"name": "search_events", "title": "The change tape across domains", "description": "Dated events across family offices, sponsors, venture, private equity and real estate: investments announced, vehicles formed, Form D and ADV filings, people joining and leaving, funds raised, acquisitions, plan final filings, record departures, loan maturities. Filter by domain, subject dfx_id, event_type, state, significance and window. Routine 13F position and fund-reporting noise is excluded unless asked for. Ordered and windowed by when events occurred.", "inputSchema": {"type": "object", "properties": {"domain": {"type": "string"}, "dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "event_type": {"type": "string"}, "state": {"type": "string", "description": "Two-letter US state code."}, "since": {"type": "string", "description": "ISO date; events that occurred on or after."}, "within_days": {"type": "integer"}, "signal_family": {"type": "string"}, "min_significance": {"type": "integer"}, "exclude_routine": {"type": "boolean", "default": true}, "limit": {"type": "integer", "maximum": 100, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "The change tape across domains"}}, {"name": "verify", "title": "Check a claim against DFX's evidence", "description": "SUPPORTED, PARTIALLY_SUPPORTED, CONTRADICTED or UNKNOWN for a claim, with the observations. Give a sentence ('Family Office X invested in Company Y in 2025', 'Z is a family office') or a structured subject / predicate / object / year. DFX contradicts only what its own record contradicts; absence of evidence is UNKNOWN, never CONTRADICTED. Its predicates cover investment, acquisition, co-investment, employment and identity claims; property facts are outside them.", "inputSchema": {"type": "object", "properties": {"claim": {"type": "string"}, "subject_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "subject": {"type": "string"}, "predicate": {"type": "string", "enum": ["INVESTED_IN", "ACQUIRED", "CO_INVESTED_WITH", "WORKS_AT", "IS_A"]}, "object_dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "object": {"type": "string"}, "year": {"type": "integer"}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Check a claim against DFX's evidence"}, "_meta": {"dfx.example": {"goal": "check an investment claim", "arguments": {"claim": "Sequoia Capital invested in Stripe in 2024"}}}}, {"name": "find_capital_for_opportunity", "title": "Who could buy, fund or finance this", "description": "Investors for a company (dfx_id) or a described opportunity (sector, state, deal size, stage, control): verified independent sponsors with observed acquisitions in the sector (listed, not paired or ranked; company to sponsor pairs are withdrawn), family offices with observed investments or stated sectors in it, venture firms when the opportunity is venture-shaped, and private equity matcher rows where that graph computes them. DFX does not recommend first-time capital providers. Every row says its basis (observed_behaviour, computed_match, observed_investments, derived).", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "sector": {"type": "string"}, "vertical": {"type": "string"}, "state": {"type": "string", "description": "Two-letter US state code."}, "deal_size_usd": {"type": "number"}, "check_size_usd": {"type": "number"}, "asset_class": {"type": "string"}, "stage": {"type": "string"}, "control": {"type": "boolean"}, "sponsor_involved": {"type": "boolean"}, "investor_types": {"type": "array", "items": {"type": "string", "enum": ["independent_sponsor", "capital_provider", "family_office", "venture_capital", "private_equity"]}, "description": "Default: independent_sponsor, capital_provider, family_office, venture_capital. private_equity adds the private equity matcher's computed buyers for a company id (always included for a dfx:pe: company)."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Who could buy, fund or finance this"}, "_meta": {"dfx.example": {"goal": "who could acquire or fund a specialty distribution company in Georgia", "arguments": {"sector": "distribution", "state": "GA", "control": true}}}}, {"name": "find_opportunities_for_capital", "title": "What this investor should be looking at", "description": "For a family office, sponsor, capital provider or venture firm: the opportunities DFX knows that fit its DEMONSTRATED behaviour: computed matches where the graph has them (with reasons and blockers), then private companies with transition signals in the sectors it has actually invested in, sponsors seeking capital, companies raising in its stated sectors. Returns the behaviour it reasoned from.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "What this investor should be looking at"}}, {"name": "explain_match", "title": "Why these two fit, and why not", "description": "For an investor and an opportunity (either order): MATCH REASONS, BLOCKERS, SUPPORTING OBSERVATIONS, COMPARABLE HISTORY (the investor's dated investments in the same sector, with sources), RELATIONSHIPS (a path on the graph if one exists), RECENT EVENTS on both, the computed match if the graph has one, and a confidence label. Facts, not a score.", "inputSchema": {"type": "object", "properties": {"dfx_id_a": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "dfx_id_b": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}}, "required": ["dfx_id_a", "dfx_id_b"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Why these two fit, and why not"}}, {"name": "why_now", "title": "Why this entity is relevant now", "description": "Evidence-backed reasons an entity matters now: recent filings, vehicles formed, deployments, people moves, fundraising, transition signals, loan maturities, each dated with its source. Empty means DFX observed no change in the window, not that nothing is happening.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "within_days": {"type": "integer", "default": 180}}, "required": ["dfx_id"], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Why this entity is relevant now"}}, {"name": "who_should_care", "title": "The economic counterparties to an entity or event", "description": "Given an entity or an event id: who is likely to care and why. A company transition names sponsors, capital providers and family offices with the observed reason; a family office names its co-investors and fitting opportunities; a venture firm names its co-investors; a property names its owner, lender and the next query for exposed lenders and real estate offices. Needs an entity or event id; a description of a situation without an id is not accepted.", "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id: dfx:fo:<uuid> (family office graph), dfx:isi:<uuid> (sponsor graph), dfx:vc:<uuid> (venture graph), dfx:pe:<uuid> (private equity graph), or a bare real estate UUID."}, "event_id": {"type": "string"}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}}, "required": [], "additionalProperties": false}, "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "The economic counterparties to an entity or event"}}], "coverage": {"dfx": {"capability": "coverage", "version": "0.3.0", "answered_at": "2026-09-15T03:06:57.033235+00:00"}, "ok": true, "geography": "United States, unevenly. NATIONAL: federal programme debt and maturities, LIHTC, HUD subsidy, distress and commercial tenancy. MASSACHUSETTS ONLY: parcels and ownership. RECORDED SALES: Massachusetts statewide, plus New York City deeds at or above $10m. BOSTON ONLY: permits and certificates of occupancy. coverage_by_event_type below is the measured grid, per event family, per state.", "served_sources": ["boston_assessing", "ffiec_ubpr", "fhfa_pudb_mf", "hud_fha_multifamily", "hud_multifamily_arcgis", "hud_psh", "massgis_l3", "nyc_acris", "sec_abs_ee"], "event_types": ["BANKRUPTCY_EVENT", "CERTIFICATE_OF_OCCUPANCY", "COMPLIANCE_PERIOD_ENDING", "DEMOLITION_FILED", "DISTRESS_FLAG_RAISED", "FORECLOSURE_EVENT", "LEASE_EXPIRING", "LOAN_MATURITY_SCHEDULED", "LOAN_MODIFIED", "PERMIT_ISSUED", "PERMIT_STATUS_CHANGED", "PORTFOLIO_CONTRACTED", "PORTFOLIO_EXPANDED", "PROPERTY_SOLD", "SUBSIDY_CONTRACT_EXPIRING", "USE_CONVERSION_PERMITTED"], "coverage_by_event_type": {"available": true, "stale": false, "note": null, "refreshed_at": "2026-09-15T02:50:17.28579+00:00", "by_event_type": {"BANKRUPTCY_EVENT": {"states": ["AK", "NC", "NY", "WA"], "published_events": 4, "searchable_events": 4, "geography_unknown_events": 0, "state_count": 4}, "CERTIFICATE_OF_OCCUPANCY": {"states": ["MA"], "published_events": 2768, "searchable_events": 2728, "geography_unknown_events": 0, "state_count": 1}, "COMPLIANCE_PERIOD_ENDING": {"states": ["AK", "AL", "AR", "AS", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "GU", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MI", "MN", "MO", "MP", "MS", "MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VI", "VT", "WA", "WI", "WV", "WY"], "published_events": 11956, "searchable_events": 11956, "geography_unknown_events": 0, "state_count": 56}, "DEMOLITION_FILED": {"states": ["MA"], "published_events": 881, "searchable_events": 863, "geography_unknown_events": 0, "state_count": 1}, "DISTRESS_FLAG_RAISED": {"states": ["CA", "CO", "DC", "FL", "GA", "IL", "IN", "KY", "LA", "MA", "MD", "MI", "MN", "MO", "MS", "NC", "NH", "NJ", "NY", "OH", "OK", "OR", "PA", "TX", "VA", "WA"], "published_events": 163, "searchable_events": 163, "geography_unknown_events": 0, "state_count": 26}, "FORECLOSURE_EVENT": {"states": ["CA", "CT", "FL", "GA", "IL", "IN", "KY", "LA", "MD", "MI", "MN", "MO", "MS", "NH", "NJ", "NY", "OH", "OK", "PA", "TX", "VA"], "published_events": 123, "searchable_events": 123, "geography_unknown_events": 0, "state_count": 21}, "LEASE_EXPIRING": {"states": ["AK", "AL", "AR", "AS", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "GU", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MI", "MN", "MO", "MP", "MS", "MT", "NC", "ND", "NE", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VI", "VT", "WA", "WI", "WV", "WY"], "published_events": 3966, "searchable_events": 3966, "geography_unknown_events": 0, "state_count": 55}, "LOAN_MATURITY_SCHEDULED": {"states": ["AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NA", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY"], "published_events": 3395, "searchable_events": 3390, "geography_unknown_events": 0, "state_count": 52}, "LOAN_MODIFIED": {"states": ["CA", "DE", "IL", "NY", "WA"], "published_events": 12, "searchable_events": 11, "geography_unknown_events": 0, "state_count": 5}, "PERMIT_ISSUED": {"states": ["MA"], "published_events": 4203, "searchable_events": 4143, "geography_unknown_events": 0, "state_count": 1}, "PERMIT_STATUS_CHANGED": {"states": [], "published_events": 13, "searchable_events": 0, "geography_unknown_events": 0, "state_count": 0}, "PORTFOLIO_CONTRACTED": {"states": ["AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "GU", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VI", "VT", "WA", "WI", "WV", "WY"], "published_events": 3181, "searchable_events": 3181, "geography_unknown_events": 0, "state_count": 54}, "PORTFOLIO_EXPANDED": {"states": ["AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "FM", "GA", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VT", "WA", "WI", "WV", "WY"], "published_events": 3528, "searchable_events": 3528, "geography_unknown_events": 0, "state_count": 53}, "PROPERTY_SOLD": {"states": ["MA", "NY"], "published_events": 43680, "searchable_events": 43680, "geography_unknown_events": 0, "state_count": 2}, "SUBSIDY_CONTRACT_EXPIRING": {"states": ["AK", "AL", "AR", "AZ", "CA", "CO", "CT", "DC", "DE", "FL", "GA", "GU", "HI", "IA", "ID", "IL", "IN", "KS", "KY", "LA", "MA", "MD", "ME", "MI", "MN", "MO", "MS", "MT", "NC", "ND", "NE", "NH", "NJ", "NM", "NV", "NY", "OH", "OK", "OR", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "VA", "VI", "VT", "WA", "WI", "WV", "WY"], "published_events": 4721, "searchable_events": 4721, "geography_unknown_events": 1, "state_count": 54}, "USE_CONVERSION_PERMITTED": {"states": ["MA"], "published_events": 849, "searchable_events": 832, "geography_unknown_events": 0, "state_count": 1}}, "reading": "`states` is every state code under which DFX publishes a searchable event of this type; a state absent from it is a measured coverage boundary and search will refuse it as NOT_COVERED rather than scanning. `published_events` is what DFX holds and is the number the tool descriptions quote; `searchable_events` is the subset carrying a resolved place, which is what search and changes can hand back. `geography_unknown_events` carry a place but no state code and are evidence neither way about any geography."}, "object_types": {"property": "National. Federal programme multifamily: HUD, LIHTC and FHA.", "parcel": "Massachusetts. The municipal assessor and registry layer, carrying assessed value, land use and recorded sales.", "organization": "Owners, managers, lenders and servicers."}, "recorded_sales": {"states": ["MA", "NY"], "by_source": {"massgis_l3": {"geography": "Massachusetts, statewide", "grain": "assessor roster: one sale date and price per parcel", "has_buyer": true, "has_seller": false, "repeat_sales": false, "note": "An assessor roster carries the LAST sale, so repeat-sale pairs and hold periods are not derivable from it at any volume. A deed repeats its full consideration on every parcel it covers, so allocated_consideration is carried separately from consideration and allocation_basis says when a split is ours."}, "nyc_acris": {"geography": "New York City, five boroughs", "grain": "recorded instrument, grouped into economic transactions", "has_buyer": true, "has_seller": true, "repeat_sales": true, "scope": "deeds at or above $10,000,000 consideration. This is a deliberate cut by VALUE and not by date: a date cut would orphan the earlier leg of a repeat-sale pair. A smaller New York sale is outside the tranche, not absent from the city.", "note": "Fourteen same-day deeds between the same parties are ONE transaction with fourteen instrument ids preserved, and a 318-property deed is one transaction linked to 318 properties. Consideration is stated once per instrument and is never split across its properties. No natural person is named in an event headline, on either side."}}}, "known_gaps": ["Loan maturity coverage is federal programme lending only (FHA insured and agency backed). The Registries of Deeds are closed to automation, so conventionally financed property carries no debt record here. A property absent from a maturity search is NOT a property without debt.", "LIHTC compliance periods are statutory and every one falls on 31 December, so a count bucketed by day shows a December cliff that is an artefact of the statute rather than a market event.", "Permit and demolition coverage is the City of Boston only.", "No outcome has ever been observed for any prediction in this graph. Nothing served here carries a calibrated probability; every score is a ranked signal.", "One street address can carry several records. Measured across 6,114 such clusters: 2,764 agree on unit count and are plausibly one asset registered by more than one programme, while 3,350 report DIFFERENT unit counts and are probably genuinely different buildings at one address, such as a scattered-site development. DFX has merged none of them and resolve() says which case you are looking at rather than choosing.", "Property and parcel are separate populations that barely overlap: 661 clean one-to-one pairs out of roughly 100,000 each. An address may resolve to one, the other, or both, and they are returned as distinct typed objects rather than merged.", "PROPERTY RECORDS ARE NOT ONE ROW PER BUILDING. 101,991 published property records cover 94,859 distinct normalised addresses, so a total computed across them overstates by roughly 8%. 245 Park Avenue is one tower and thirteen records, because thirteen securitisation trusts each report it. Every row is individually true, which is why the distortion is invisible per row. Each record carries address_group_size so you can see it: 1 is unique, and above 1 you should deduplicate by address before summing anything. DFX has not merged them because thousands of these clusters carry different unit counts and are genuinely different buildings at one address rather than one building recorded twice.", "The sale tape is two sources with different grain, and the difference decides which questions it can answer. MASSACHUSETTS is an assessor roster: statewide, one sale per parcel, buyer named and SELLER NEVER NAMED, so repeat-sale pairs and hold periods are not derivable from it at any volume and no further ingestion of it will change that. NEW YORK is a recorder extract: five boroughs, both parties named, every instrument dated, so repeat sales and hold periods ARE derivable, but only for deeds at or above $10,000,000. Neither one is a national sale tape and DFX does not have one."], "state": "OK"}, "example": {"method": "tools/call", "tool": "resolve_address", "arguments": {"address": "100 Binney St", "city": "Cambridge", "state": "MA"}, "returns": "the parcel, its assessed value, and a dfx_id you can pass to get_property_record for its recorded sales, which for this address is a $1,020,000,000 sale"}}