{"server": "dfx-real-estate", "title": "DFX Intelligence (core profile)", "version": "0.16.0", "build": {"build_sha": "d9d57c1ef5c71b1e57dcfa3e7b5a0c9f56fdad1b", "built_at": "2026-10-22T11:48:37Z", "build_source": "deploy_guard", "deployment_id": "9b82b449-48f5-4886-bdb3-04adb5cfd761"}, "transport": "streamable-http", "protocol": "Model Context Protocol", "protocol_versions": ["2026-07-28", "2025-11-25", "2025-06-18", "2025-03-26"], "authentication": "none", "member_authentication": "oauth2", "member_urls": ["https://exchange-production-9123.up.railway.app/mcp/core/member", "https://exchange-production-9123.up.railway.app/mcp/member"], "access": {"anonymous": ["https://exchange-production-9123.up.railway.app/mcp/core", "https://exchange-production-9123.up.railway.app/mcp", "https://exchange-production-9123.up.railway.app/a2a"], "member_oauth": ["https://exchange-production-9123.up.railway.app/mcp/core/member", "https://exchange-production-9123.up.railway.app/mcp/member"], "member_key": "X-API-Key or Authorization: Bearer dfx_live_..., on any anonymous URL", "summary": "Anonymous calls need no key, sign-up or OAuth; a list answer names the first 5 rows and counts the rest, and contact values are never returned. A DFX member reads as their plan allows with a dfx_live_ account key, or by signing in with OAuth 2.1 at https://exchange-production-9123.up.railway.app/mcp/core/member or https://exchange-production-9123.up.railway.app/mcp/member; one membership, the same plan and meters, whichever way the member connects."}, "endpoints": [{"id": "mcp_core", "url": "https://exchange-production-9123.up.railway.app/mcp/core?c=ex-get", "protocol": "mcp", "transport": "streamable-http", "access": "anonymous", "role": "recommended: research answers one question in one call, plus the reads it composes"}, {"id": "mcp_core_member", "url": "https://exchange-production-9123.up.railway.app/mcp/core/member", "protocol": "mcp", "transport": "streamable-http", "access": "oauth2", "role": "member sign-in for the core profile"}, {"id": "mcp_full", "url": "https://exchange-production-9123.up.railway.app/mcp?c=ex-get", "protocol": "mcp", "transport": "streamable-http", "access": "anonymous", "role": "every read tool; does not list research"}, {"id": "mcp_member", "url": "https://exchange-production-9123.up.railway.app/mcp/member", "protocol": "mcp", "transport": "streamable-http", "access": "oauth2", "role": "member sign-in for the full profile"}, {"id": "a2a", "url": "https://exchange-production-9123.up.railway.app/a2a", "protocol": "a2a", "transport": "jsonrpc", "access": "anonymous", "role": "one research question per A2A message, answered by the core profile's research tool"}], "note": "POST JSON-RPC to this URL. The core profile lists the one-call research tool and the reads it composes; the full server with every tool is https://exchange-production-9123.up.railway.app/mcp.", "tools": [{"name": "research", "title": "Research one question in one call", "description": "One private-markets question in one call: resolved entities, a direct answer built only from cited claims, facts, relationships, dated events, coverage limits and withheld counts. Plans its reads: a lender's position in a borrower at each date named, a borrower's BDC holders, a team's members, an advisor's registrations, plan commitments, Form ADV fields. Paged, never cut. No model inside.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Research one question in one call"}, "inputSchema": {"type": "object", "properties": {"question": {"type": "string", "description": "The question in plain language, as an analyst would ask it."}, "entity": {"type": "string", "description": "Optional. The subject: a name (firm, fund, company, plan, advisor) or a DFX id (dfx:<graph>:<id>). Without it, every entity is read from the question."}, "workflow": {"type": "string", "enum": ["credit_by_sponsor", "advisor_movement", "allocator_to_company"], "description": "Optional hint. credit_by_sponsor: BDC lenders, positions, facilities and sponsors. advisor_movement: IAPD registration moves, people and teams. allocator_to_company: plan commitments and capital paths. Without it, the workflow is read from the question's words."}, "depth": {"type": "string", "enum": ["identify", "screen", "investigate", "validate", "monitor"], "default": "investigate", "description": "identify: ids only (up to 6 reads, 3 KB). screen: the primary read at the latest date (8 reads, 8 KB). investigate (default): every date and section the question needs (14 reads, 12 KB a page). validate: investigate plus cross-checks, disagreements under contradictions (18 reads). monitor: changes since `since` or 90 days, with a checkpoint (8 reads)."}, "as_of": {"type": "string", "description": "Optional ISO date the answer is read as of (default: today)."}, "since": {"type": "string", "description": "Optional ISO date: the window start (depth=monitor: the checkpoint)."}, "continue": {"type": "string", "description": "page.continuation from a previous answer: returns its next page."}, "detail": {"type": "string", "enum": ["compact", "research"], "default": "research", "description": "compact: identity, the answer, its basis claims and counts, under 2 KB. research (default): the page in full."}}, "required": []}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string", "description": "OK, NO_MATCH, NOT_COVERED, UNKNOWN, or an error state"}, "schema": {"type": "string", "const": "dfx.research/2"}, "question": {"type": "string"}, "plan": {"type": "object", "description": "workflow, operation, depth, the operations run and the budget"}, "answer": {"type": "object", "description": "text, basis (claim ids on this page), state"}, "answer_state": {"type": "string", "enum": ["OK", "PARTIAL", "UNKNOWN", "NOT_COVERED"]}, "identities": {"type": "object", "description": "the subject, every other entity resolved, candidates"}, "facts": {"type": "array", "items": {"type": "object"}}, "relationships": {"type": "array", "items": {"type": "object"}}, "events": {"type": "array", "items": {"type": "object"}}, "claims": {"type": "array", "items": {"type": "object"}, "description": "every claim the rows on this page carry (lane I1's claims.research_claims): claim_id (content addressed: subject, predicate, object, value, date, source), row, predicate, claim_type, evidence_status, entitlement_class, derived_from; the subject, value, dates and citation are on the row it names"}, "claims_meta": {"type": "string"}, "dates": {"type": "array", "items": {"type": "object"}}, "uncertainty": {"type": "array", "items": {"type": "object"}}, "contradictions": {"type": "array", "items": {"type": "object"}}, "coverage_limits": {"type": "array", "items": {"type": "object"}}, "withheld": {"type": "object"}, "do_not_conclude": {"type": "array", "items": {"type": "string"}}, "next": {"type": "array", "items": {"type": "object"}}, "usage": {"type": "object", "description": "operations run, budget, bytes, latency; no model call"}, "page": {"type": "object", "description": "index, rows and claims on this page and in all, rows after it, continuation"}, "premise_check": {"type": ["object", "null"]}}, "required": ["state", "schema"]}}, {"name": "what_can_dfx_answer", "title": "Ask in plain language whether DFX can help", "description": "Plain-language objective in, coverage and routing out: the DFX domain that answers it, the arguments for that domain's search, and a free three-row sample. Covers private credit, private equity, venture, family offices, RIAs, allocators and US commercial real estate.", "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", "DEED_RECORDED", "DEMOLITION_FILED", "DISTRESS_FLAG_RAISED", "FORECLOSURE_EVENT", "FORECLOSURE_FILED", "LEASE_EXPIRING", "LOAN_ASSIGNED", "LOAN_MATURED", "LOAN_MATURITY_SCHEDULED", "LOAN_MODIFIED", "LOAN_STATUS_CHANGED", "OWNERSHIP_CHANGED", "PERMIT_ISSUED", "PERMIT_STATUS_CHANGED", "PORTFOLIO_CONTRACTED", "PORTFOLIO_EXPANDED", "PROPERTY_SOLD", "SUBSIDY_CONTRACT_EXPIRING", "TAX_LIEN_LISTED", "USE_CONVERSION_PERMITTED", "VACANT_FORECLOSURE_REGISTERED", "ZONING_EVENT"], "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": []}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "can_help": {"type": "boolean"}}, "required": ["ok"]}}, {"name": "resolve_name", "title": "A name to DFX ids, fast, across every private capital graph", "description": "A firm, fund, person or company name to canonical DFX ids across every private-capital graph, with the roles the same institution holds on other graphs (manager, adviser, lender, allocator). Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "A name to DFX ids, fast, across every private capital graph"}, "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, ria, allocators, private_credit, real_estate_funds. Default: all."}, "prefer_domain": {"type": "string", "description": "The domain the question is about (same keys as domain, plus real_estate). Reorders, never filters: a row holding every asked word stays first, then rows in the preferred domain, then a real estate brand's primary adviser, then score. 'Blackstone' with real_estate_funds is Blackstone Real Estate Advisors with the brand's other advisers under `family`; 'Blackstone Management Partners' is still BMP."}, "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}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "results": {"type": "array", "items": {"type": "object"}}, "count": {"type": "integer"}, "total": {"type": ["integer", "null"]}, "pagination": {"type": "object"}}, "required": ["state"]}}, {"name": "search_entities", "title": "Search every DFX domain at once", "description": "Search across every DFX domain by name or by filters (type, domain, state, sector, activity). Returns compact cards with stable DFX ids and a coverage note per domain. Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Search every DFX domain at once"}, "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, ria, allocators, private_credit, real_estate_funds. Default: all."}, "entity_type": {"type": "string", "description": "family_office, sponsor, capital_provider, company, vc_firm, pe_firm, platform, fund, person, property, organization, ria_firm, advisor, private_fund, allocator, consultant, manager, credit_provider, bdc, borrower, vehicle."}, "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", "description": "The next_cursor value from the previous page of this tool, unchanged."}}, "required": [], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "results": {"type": "array", "items": {"type": "object"}}, "count": {"type": "integer"}, "total": {"type": ["integer", "null"]}, "pagination": {"type": "object"}}, "required": ["state"]}}, {"name": "get_entity", "title": "Everything DFX knows about one id", "description": "Everything DFX holds on one id: the card, relationships with sources and dates, recent events, the observations each fact traces to, and identity links to other graphs by shared CRD, CIK or EIN. detail=compact returns key facts and counts under 2 KB. Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Everything DFX knows about one id"}, "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id of the form dfx:<graph>:<id> (fo, isi, vc, pe, ria, al, pc, ref), or a bare real estate id."}, "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"}, "detail": {"type": "string", "enum": ["compact", "research"], "default": "research", "description": "compact: the id, name, type, up to five key facts with their citation and counts of the related rows by type, under 2 KB. research (the default): the full answer."}}, "required": ["dfx_id"], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "entity": {"type": "object"}, "known": {"type": "boolean"}, "relationships": {"type": "array"}, "recent_events": {"type": "array"}}, "required": ["state"]}}, {"name": "search_relationships", "title": "Published edges on one entity", "description": "Every published relationship touching one entity (employs, manages, invested in, lends to, owns, board member of and more), each with role, dates, currency, evidence class and source. Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Published edges on one entity"}, "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id of the form dfx:<graph>:<id> (fo, isi, vc, pe, ria, al, pc, ref), or a bare real estate id."}, "rel_type": {"type": "string"}, "current_only": {"type": "boolean"}, "limit": {"type": "integer", "maximum": 200}, "detail": {"type": "string", "enum": ["compact", "research"], "default": "research", "description": "compact: the id, name, type, up to five key facts with their citation and counts of the related rows by type, under 2 KB. research (the default): the full answer."}}, "required": ["dfx_id"], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "relationships": {"type": "array"}}, "required": ["state"]}}, {"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 an identity link by shared CRD, CIK or EIN. NO_MATCH means no observed path within the hop budget, not that the two are unconnected. Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "How two entities are connected"}, "inputSchema": {"type": "object", "properties": {"from_dfx_id": {"type": "string", "description": "A DFX id of the form dfx:<graph>:<id>."}, "to_dfx_id": {"type": "string", "description": "A DFX id of the form dfx:<graph>:<id>."}, "max_hops": {"type": "integer", "minimum": 1, "maximum": 4, "default": 3}}, "required": ["from_dfx_id", "to_dfx_id"], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "path": {"type": ["array", "null"]}}, "required": ["state"]}}, {"name": "get_capital_paths", "title": "How capital reaches this institution, and where it goes next", "description": "Capital flow paths through one institution: plan to fund to manager to company, sponsor to borrower to facility to lender, and more. Each hop names its graph, id, role and basis, with the amount where disclosed and a rule-graded confidence. Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "How capital reaches this institution, and where it goes next"}, "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id of the form dfx:<graph>:<id> (fo, isi, vc, pe, ria, al, pc, ref), or a bare real estate id."}, "kind": {"type": "string", "description": "One path kind as the summary names it (for example ALLOCATOR_TO_PE_FUND_TO_MANAGER)."}, "limit": {"type": "integer", "minimum": 1, "maximum": 100, "default": 25}, "include_former": {"type": "boolean", "default": false, "description": "Also return paths through a lender edge no longer held, marked FORMER."}}, "required": ["dfx_id"], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "results": {"type": "array", "items": {"type": "object"}}, "count": {"type": "integer"}, "total": {"type": ["integer", "null"]}, "pagination": {"type": "object"}}, "required": ["state"]}}, {"name": "changes_since", "title": "What DFX has learned since your last call", "description": "What DFX learned since a time: with a domain, that graph's events by first sight (dfx_id narrows them to one entity), each labelled NEW_EVENT, NEWLY_OBSERVED_HISTORICAL or SCHEDULED_FUTURE; without one, real estate changes since a cursor.", "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": "With a domain: an ISO timestamp. Without one: the opaque cursor a previous answer returned; unset, the answer is a starting position and no events, by design."}, "event_type": {"type": "string", "enum": ["BANKRUPTCY_EVENT", "CERTIFICATE_OF_OCCUPANCY", "COMPLIANCE_PERIOD_ENDING", "DEED_RECORDED", "DEMOLITION_FILED", "DISTRESS_FLAG_RAISED", "FORECLOSURE_EVENT", "FORECLOSURE_FILED", "LEASE_EXPIRING", "LOAN_ASSIGNED", "LOAN_MATURED", "LOAN_MATURITY_SCHEDULED", "LOAN_MODIFIED", "LOAN_STATUS_CHANGED", "OWNERSHIP_CHANGED", "PERMIT_ISSUED", "PERMIT_STATUS_CHANGED", "PORTFOLIO_CONTRACTED", "PORTFOLIO_EXPANDED", "PROPERTY_SOLD", "SUBSIDY_CONTRACT_EXPIRING", "TAX_LIEN_LISTED", "USE_CONVERSION_PERMITTED", "VACANT_FORECLOSURE_REGISTERED", "ZONING_EVENT"], "description": "One served event family."}, "state": {"type": "string", "description": "Real estate only (no domain): a two letter state code."}, "place_dfx_id": {"type": "string", "description": "Real estate only (no domain): one property or parcel. With a domain, dfx_id scopes the feed to one entity."}, "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": ["allocators", "family_office", "independent_sponsor", "private_credit", "private_equity", "real_estate_funds", "ria", "venture_capital"], "description": "An intelligence domain instead of real estate; with it, `since` is an ISO timestamp."}, "dfx_id": {"type": "string", "description": "With a domain: only the events about this entity (a borrower, lender, sponsor or fund on that domain's graph), as dfx:<graph>:<id>."}, "include_historical": {"type": "boolean", "default": false, "description": "With `domain`: also return rows DFX first saw in the window that occurred before it (novelty NEWLY_OBSERVED_HISTORICAL) and rows seeded when the domain's tape was created. Default false. Real estate rows are labelled with novelty but not filtered."}, "include_scheduled": {"type": "boolean", "default": false, "description": "With `domain`: also return rows whose occurrence date is after today (novelty SCHEDULED_FUTURE), such as an announced closing date. Default false."}}}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "results": {"type": "array", "items": {"type": "object"}}, "count": {"type": "integer"}, "total": {"type": ["integer", "null"]}, "pagination": {"type": "object"}}, "required": ["ok"]}}, {"name": "verify", "title": "Check a claim against DFX's evidence", "description": "A claim in, SUPPORTED, PARTIALLY_SUPPORTED, CONTRADICTED or UNKNOWN out, with the cited evidence rows. Names resolve only to records carrying that name; absence of evidence is UNKNOWN, never a contradiction.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Check a claim against DFX's evidence"}, "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), dfx:ria:<uuid> (registered investment adviser graph), dfx:al:<uuid> (allocator graph), dfx:pc:<uuid> (private credit graph), dfx:ref:<uuid> (real estate fund graph), or a bare real estate UUID."}, "subject": {"type": "string"}, "predicate": {"type": "string", "enum": ["INVESTED_IN", "ACQUIRED", "CO_INVESTED_WITH", "WORKS_AT", "IS_A", "ADVISER_OF", "COMMITTED_TO", "LENDER_TO", "HOLDS_POSITION", "MOVED_FIRM"]}, "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), dfx:ria:<uuid> (registered investment adviser graph), dfx:al:<uuid> (allocator graph), dfx:pc:<uuid> (private credit graph), dfx:ref:<uuid> (real estate fund graph), or a bare real estate UUID."}, "object": {"type": "string"}, "year": {"type": "integer"}, "as_of": {"type": "string", "description": "ISO date the claim is about, for lending and position claims that do not state one."}}, "required": [], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "verdict": {"type": "string"}, "evidence": {"type": "array"}}, "required": ["state"]}}, {"name": "get_credit_provider", "title": "One credit provider or BDC in full", "description": "A credit manager or a BDC: classes, advised BDCs from each 10-K, quarterly portfolio (fair value, principal, borrowers, marks, PIK), largest facilities and sponsors financed. Accepts a private credit id or a BDC's CIK. detail=compact returns key facts under 2 KB. Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "One credit provider or BDC in full"}, "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id of the form dfx:<graph>:<id> (fo, isi, vc, pe, ria, al, pc, ref), or a bare real estate id."}, "detail": {"type": "string", "enum": ["compact", "research"], "default": "research", "description": "compact: the id, name, type, up to five key facts with their citation and counts of the related rows by type, under 2 KB. research (the default): the full answer."}}, "required": ["dfx_id"], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "entity": {"type": "object"}, "known": {"type": "boolean"}, "quarters": {"type": "array"}}, "required": ["state"]}}, {"name": "get_borrower_facilities", "title": "One borrower's facilities and the lender group on each", "description": "Every facility a borrower has on the BDC tape (kind, lien, principal as a lower bound, pricing, maturity) with each BDC holding a piece. group_by=lender: one row per BDC, its tranches summed, cited to its own filing. Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "One borrower's facilities and the lender group on each"}, "inputSchema": {"type": "object", "properties": {"dfx_id": {"type": "string", "description": "A DFX id of the form dfx:<graph>:<id> (fo, isi, vc, pe, ria, al, pc, ref), or a bare real estate id."}, "held_only": {"type": "boolean", "default": true, "description": "Facilities still on a schedule at the latest quarter end."}, "group_by": {"type": "string", "enum": ["facility", "lender"], "default": "facility", "description": "lender: one row per BDC with its tranches summed at one schedule date, from its own filing."}, "as_of": {"type": "string", "description": "group_by=lender: the schedule date on or before which to read (default latest)."}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 10}, "detail": {"type": "string", "enum": ["compact", "research"], "default": "research", "description": "compact: the id, name, type, up to five key facts with their citation and counts of the related rows by type, under 2 KB. research (the default): the full answer."}}, "required": ["dfx_id"], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "results": {"type": "array", "items": {"type": "object"}}, "count": {"type": "integer"}, "total": {"type": ["integer", "null"]}, "pagination": {"type": "object"}}, "required": ["state"]}}, {"name": "search_ria_advisor_moves", "title": "Advisor firm changes as registration dates", "description": "Advisors who left one firm and registered at another, from IAPD registration dates: the person, from and to firms with class, the end and begin dates, the gap and the move type. Bulk re-registrations are excluded unless asked for. Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Advisor firm changes as registration dates"}, "inputSchema": {"type": "object", "properties": {"from_dfx_id": {"type": "string", "description": "A DFX id of the form dfx:<graph>:<id>."}, "to_dfx_id": {"type": "string", "description": "A DFX id of the form dfx:<graph>:<id>."}, "advisor_dfx_id": {"type": "string", "description": "An RIA graph advisor id of the form dfx:ria:<uuid>, or the individual CRD number."}, "move_type": {"type": "string", "enum": ["WIREHOUSE_TO_WIREHOUSE", "WIREHOUSE_TO_RIA", "WIREHOUSE_TO_IBD", "IBD_TO_RIA", "RIA_TO_RIA", "RIA_TO_WIREHOUSE", "RIA_TO_IBD", "IBD_TO_IBD", "IBD_TO_WIREHOUSE", "WIREHOUSE_TO_NEW_FIRM", "IBD_TO_NEW_FIRM", "RIA_TO_NEW_FIRM", "WIREHOUSE_TO_STATE_RIA", "IBD_TO_STATE_RIA", "RIA_TO_STATE_RIA", "DEPARTURE", "OTHER"]}, "since": {"type": "string", "description": "ISO date; registration ended on or after."}, "until": {"type": "string", "description": "ISO date."}, "include_bulk": {"type": "boolean", "default": false}, "include_departures": {"type": "boolean", "default": false}, "limit": {"type": "integer", "minimum": 1, "maximum": 25, "default": 25}, "cursor": {"type": "string", "description": "The next_cursor value from the previous page of this tool, unchanged."}}, "required": [], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "results": {"type": "array", "items": {"type": "object"}}, "count": {"type": "integer"}, "total": {"type": ["integer", "null"]}, "pagination": {"type": "object"}}, "required": ["state"]}}, {"name": "search_allocator_commitments", "title": "The commitment tape: who committed to which fund, when, in the plan's own words", "description": "Public plans' own commitment disclosures, one row per line: plan, fund as printed, manager, amount, status, dates, vintage, re-up, the plan's own performance figures and the source document with a quote. Without a paid plan on a vertical, lists name their first 5 rows and count the rest; each answer states what it withheld.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "The commitment tape: who committed to which fund, when, in the plan's own words"}, "inputSchema": {"type": "object", "properties": {"query": {"type": "string", "description": "Allocator, fund or manager name contains."}, "allocator_dfx_id": {"type": "string", "description": "A consultant id on the allocator graph, dfx:al:<uuid>."}, "manager_dfx_id": {"type": "string", "description": "A consultant id on the allocator graph, dfx:al:<uuid>."}, "fund_dfx_id": {"type": "string", "description": "A consultant id on the allocator graph, dfx:al:<uuid>."}, "consultant_dfx_id": {"type": "string", "description": "A consultant id on the allocator graph, dfx:al:<uuid>."}, "status": {"type": "string", "enum": ["RECOMMENDED", "PROPOSED", "APPROVED", "COMMITTED", "DISCLOSED_HOLDING", "UNKNOWN"]}, "bucket": {"type": "string", "enum": ["public_equity", "fixed_income", "private_equity", "venture", "private_credit", "real_estate", "infrastructure", "natural_resources", "hedge_diversifiers", "cash", "other_alternatives", "real_assets", "multi_asset", "pooled_vehicle", "other"]}, "re_ups_only": {"type": "boolean"}, "first_time_only": {"type": "boolean"}, "since": {"type": "string", "description": "ISO date; commitment or approval date on or after (a holding with neither: its vintage year, never the report date)."}, "sort": {"type": "string", "enum": ["date", "amount", "vintage"]}, "limit": {"type": "integer", "minimum": 1, "maximum": 50, "default": 25}, "cursor": {"type": "string", "description": "The next_cursor value from the previous page of this tool, unchanged."}}, "required": [], "additionalProperties": false}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "warnings": {"type": "array"}, "entitlement": {"type": "object"}, "locked": {"type": "object"}, "citation_check": {"type": "object"}, "truncated": {"type": "boolean"}, "results": {"type": "array", "items": {"type": "object"}}, "count": {"type": "integer"}, "total": {"type": ["integer", "null"]}, "pagination": {"type": "object"}}, "required": ["state"]}}, {"name": "watch_create", "title": "Create a research watch", "description": "Save a private credit investigation for this account: a research question and/or borrowers, a sponsor's borrowers or a lender's book, and the changes to watch (lenders, maturity, spread, PIK, marks). `since` starts it at a past date. Returns a watch id and checkpoint. Needs a DFX account key.", "annotations": {"readOnlyHint": false, "destructiveHint": false, "idempotentHint": false, "openWorldHint": false, "title": "Create a research watch"}, "inputSchema": {"type": "object", "properties": {"name": {"type": "string", "description": "A label for the objective."}, "scope": {"type": "object", "description": "What to watch: kind borrowers (their ids), sponsor (its current borrowers) or lender (a BDC's book at its latest quarter), and ids of the form dfx:pc:<uuid>.", "properties": {"kind": {"type": "string", "enum": ["borrowers", "sponsor", "lender"]}, "ids": {"type": "array", "items": {"type": "string"}, "maxItems": 5000}}, "required": ["kind", "ids"]}, "conditions": {"type": "array", "items": {"type": "string", "enum": ["non_accrual", "lender_exit", "lender_entry", "amendment", "spread_change", "pik", "mark_change"]}, "description": "Which changes to watch; default all measured ones."}, "maturity_within_months": {"type": "integer", "minimum": 1, "maximum": 60, "description": "Keep only borrowers with debt maturing inside this window."}, "min_materiality": {"type": "number", "minimum": 0, "maximum": 1, "description": "Drop changes scored below this."}, "include_unmeasured": {"type": "boolean", "description": "Also watch footnote and N-PORT types (non-accrual, default) that the quality sample could not check."}, "include_failing": {"type": "boolean", "description": "Also watch types measured above 10% false (exits, first appearances, PIK added, recoveries), verified ones only."}, "include_historical": {"type": "boolean", "description": "Also show filings older than the checkpoint that were ingested since."}, "baseline": {"type": "boolean", "description": "Record conclusions about each borrower at the first checkpoint (default true)."}, "since": {"type": "string", "description": "ISO date up to 400 days back: start the watch as if saved then, so the first read returns what was filed since."}, "research": {"type": "object", "description": "Save an investigation: the research question this watch keeps answering. Its claims are saved with the checkpoint; scope may then be omitted (the question's subject).", "properties": {"question": {"type": "string"}, "entity": {"type": "string"}, "workflow": {"type": "string"}}, "required": ["question"]}}, "required": []}, "_meta": {"dfx.requires_key": true}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "store_kind": {"type": "string"}, "watch_id": {"type": "string"}, "checkpoint": {"type": "string"}, "scope": {"type": "object"}, "materiality_rubric": {"type": "object"}}, "required": ["ok", "state"]}}, {"name": "watch_list", "title": "List research watches", "description": "This account's watches with status, latest checkpoint, reads used and cost. Needs a DFX account key.", "annotations": {"readOnlyHint": true, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "List research watches"}, "inputSchema": {"type": "object", "properties": {}}, "_meta": {"dfx.requires_key": true}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "store_kind": {"type": "string"}, "results": {"type": "array"}, "quota": {"type": ["object", "null"]}}, "required": ["ok", "state"]}}, {"name": "watch_changes", "title": "Changes since a checkpoint", "description": "Material changes since a checkpoint: each with its filing, filing date, a check against the lender's own rows, NEW_EVENT or NEWLY_OBSERVED_HISTORICAL, a materiality score with its rubric, and duplicates folded. Returns the next checkpoint; a repeated call returns the same delivery.", "annotations": {"readOnlyHint": false, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Changes since a checkpoint"}, "inputSchema": {"type": "object", "properties": {"watch_id": {"type": "string", "description": "A watch id from watch creation."}, "checkpoint": {"type": "string", "description": "The checkpoint id the previous answer returned; omit for the latest."}, "include_historical": {"type": "boolean", "description": "Also show filings older than the checkpoint that were ingested since."}}, "required": ["watch_id"]}, "_meta": {"dfx.requires_key": true}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "store_kind": {"type": "string"}, "checkpoint": {"type": "string"}, "results": {"type": "array"}, "excluded": {"type": "object"}, "has_more": {"type": "boolean"}}, "required": ["ok", "state"]}}, {"name": "watch_reevaluate", "title": "Re-test earlier conclusions", "description": "Re-tests the conclusions recorded at a checkpoint (maturity, mark, lenders, performing) against what changed since, and diffs a saved investigation's claims against the question asked now.", "annotations": {"readOnlyHint": false, "destructiveHint": false, "idempotentHint": true, "openWorldHint": false, "title": "Re-test earlier conclusions"}, "inputSchema": {"type": "object", "properties": {"watch_id": {"type": "string", "description": "A watch id from watch creation."}, "checkpoint": {"type": "string", "description": "Whose conclusions to re-test; omit for the first checkpoint."}}, "required": ["watch_id"]}, "_meta": {"dfx.requires_key": true}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "store_kind": {"type": "string"}, "results": {"type": "array"}, "tally": {"type": "object"}}, "required": ["ok", "state"]}}, {"name": "watch_cancel", "title": "Cancel a research watch", "description": "Cancels a watch: no further deliveries, the quota slot is freed, earlier deliveries stay readable.", "annotations": {"readOnlyHint": false, "destructiveHint": true, "idempotentHint": true, "openWorldHint": false, "title": "Cancel a research watch"}, "inputSchema": {"type": "object", "properties": {"watch_id": {"type": "string", "description": "A watch id from watch creation."}}, "required": ["watch_id"]}, "_meta": {"dfx.requires_key": true}, "outputSchema": {"type": "object", "properties": {"ok": {"type": "boolean"}, "state": {"type": "string"}, "generated_at": {"type": "string"}, "store_kind": {"type": "string"}, "status": {"type": "string"}}, "required": ["ok", "state"]}}]}