MCP Server

Family Office Knowledge Graph

ai.familyofficeknowledgegraph/fo-kg
Data & Analytics Finance & Investing Public & reachable MCP 2026-07-28

What this MCP does

Provides read-only structured records, aliases, events, and identifier resolution for family offices from public sources.

get_record
The Family Office Record for one identifier: every field with value, source_url, read_by and state; optionally a named version.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['identifier'], 'properties': {'version': {'type': 'string', 'description': 'record version as listed by list_nodes (e.g. 2026-09-13.1); omit for current'}, 'identifier': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Record id, LEI, legal name, alias, or a register identifier as it appears on the record (case-insensitive)'}}}
Output schema
{'type': 'object', 'required': ['record'], 'properties': {'record': {'type': 'object'}, 'served_by': {'type': 'object'}}}
list_aliases
Every name the record carries for one identifier — legal name, register names, other names — each with its source.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Record id, LEI, legal name, alias, or a register identifier as it appears on the record (case-insensitive)'}}}
Output schema
{'type': 'object', 'required': ['lei', 'aliases'], 'properties': {'lei': {'type': 'string'}, 'aliases': {'type': 'array'}, 'served_by': {'type': 'object'}, 'legal_name': {'type': 'object'}}}
list_events_since
Dated, URL'd events on one record (registrations, renewals, orders, acquisitions), oldest first, optionally since a date, paged by cursor.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['identifier'], 'properties': {'limit': {'type': 'integer', 'default': 50, 'maximum': 200, 'minimum': 1}, 'since': {'type': 'string', 'description': 'ISO date YYYY-MM-DD; events on or after it'}, 'cursor': {'type': 'string', 'description': 'next_cursor from a previous page'}, 'identifier': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Record id, LEI, legal name, alias, or a register identifier as it appears on the record (case-insensitive)'}}}
Output schema
{'type': 'object', 'required': ['lei', 'events'], 'properties': {'lei': {'type': 'string'}, 'events': {'type': 'array'}, 'served_by': {'type': 'object'}, 'next_cursor': {'type': ['string', 'null']}}}
list_nodes
The graph's nodes — one per jurisdiction — with record counts read from each node's index, the node door and its as-of.
Read only Idempotent
Input schema
{'type': 'object', 'properties': {}}
Output schema
{'type': 'object', 'required': ['nodes'], 'properties': {'apex': {'type': 'object'}, 'nodes': {'type': 'array'}}}
resolve_family_office
Resolve an identifier (LEI, legal name, alias or register id) to the family-office records that carry it, with the node that serves each.
Read only Idempotent
Input schema
{'type': 'object', 'required': ['identifier'], 'properties': {'identifier': {'type': 'string', 'maxLength': 200, 'minLength': 2, 'description': 'Record id, LEI, legal name, alias, or a register identifier as it appears on the record (case-insensitive)'}}}
Output schema
{'type': 'object', 'required': ['identifier', 'matches'], 'properties': {'matches': {'type': 'array', 'items': {'type': 'object', 'properties': {'lei': {'type': 'string'}, 'node': {'type': 'string'}, 'record': {'type': 'string'}, 'legal_name': {'type': 'string'}, 'matched_on': {'type': 'string'}}}}, 'served_by': {'type': 'object'}, 'identifier': {'type': 'string'}}}
Added
list_nodes
Sept. 18, 2026, 2:40 a.m.
Added
list_aliases
Sept. 18, 2026, 2:40 a.m.
Added
list_events_since
Sept. 18, 2026, 2:40 a.m.
Added
get_record
Sept. 18, 2026, 2:40 a.m.
Added
resolve_family_office
Sept. 18, 2026, 2:40 a.m.