{
  "protocolVersion": "0.3.0",
  "kind": "agent-card",
  "name": "Family Office Knowledge Graph",
  "description": "One record per family office, drawn from the public record: the GLEIF spine first, then the national registers that fill and confirm it. Every field carries where it came from, who read it, when, and its state. Read-only, session-free, typed errors. Nodes: Canada (ca-fo-kg), United States (us-fo-kg).",
  "url": "https://mcp.familyofficeknowledgegraph.ai/mcp",
  "version": "0.3.0",
  "documentationUrl": "https://familyofficeknowledgegraph.ai/llms.txt",
  "iconUrl": "https://familyofficeknowledgegraph.ai/icon-512.png",
  "provider": {
    "organization": "Agentic KG Holdings",
    "url": "https://agent-kg.ai"
  },
  "operator": {
    "name": "Agentic KG Holdings",
    "principal": "Matthew Keddy",
    "url": "https://agent-kg.ai",
    "surface": "https://familyofficeknowledgegraph.ai",
    "contact": "mailto:mk@agent-kg.ai",
    "keyring": "https://familyofficeknowledgegraph.ai/.well-known/jwks.json",
    "kid": "mk-office-2026-09"
  },
  "contact": "mailto:mk@agent-kg.ai",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "securitySchemes": {
    "none": {
      "type": "noAuth",
      "description": "every read, the MCP doors and the records need no authentication"
    },
    "office": {
      "type": "oauth2",
      "flows": {
        "clientCredentials": {
          "tokenUrl": "https://agent-kg.ai/oauth/token",
          "scopes": {
            "office:read": "read the licensed index"
          }
        }
      },
      "description": "office-issued EdDSA tokens (kid mk-office-2026-09) for /licensed/index"
    },
    "x402": {
      "type": "http",
      "scheme": "x402",
      "description": "GET /api: $0.01 USDC on Base mainnet (x402 v2) buys the signed index with a receipt"
    }
  },
  "security": [
    {
      "none": []
    }
  ],
  "defaultInputModes": [
    "application/json",
    "text/plain"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/markdown"
  ],
  "supportedInterfaces": [
    {
      "url": "https://mcp.familyofficeknowledgegraph.ai/mcp",
      "protocolBinding": "HTTP+JSON",
      "transport": "streamable-http",
      "protocolVersion": "2025-06-18",
      "description": "apex door — index, forwards to the node door"
    },
    {
      "url": "https://ca-fo-kg.familyofficeknowledgegraph.ai/mcp",
      "protocolBinding": "HTTP+JSON",
      "transport": "streamable-http",
      "protocolVersion": "2025-06-18",
      "description": "node door ca-fo-kg — serves the records"
    },
    {
      "url": "https://us-fo-kg.familyofficeknowledgegraph.ai/mcp",
      "protocolBinding": "HTTP+JSON",
      "transport": "streamable-http",
      "protocolVersion": "2025-06-18",
      "description": "node door us-fo-kg — serves the records"
    },
    {
      "url": "https://familyofficeknowledgegraph.ai/",
      "protocolBinding": "HTTP+JSON",
      "transport": "HTTP+JSON",
      "protocolVersion": "1.0",
      "description": "the surface, its Markdown twin, /resolve/{identifier} and the records"
    }
  ],
  "skills": [
    {
      "id": "resolve_family_office",
      "name": "Resolve family office",
      "description": "Resolve an identifier (LEI, legal name, alias or register id) to the family-office records that carry it, with the node that serves each.",
      "tags": [
        "family-office",
        "public-record",
        "mcp",
        "read-only"
      ],
      "examples": [
        "POST https://mcp.familyofficeknowledgegraph.ai/mcp tools/call resolve_family_office"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "input": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "description": "LEI, legal name, alias or register id"
          }
        },
        "required": [
          "identifier"
        ]
      },
      "output": {
        "type": "object",
        "properties": {
          "matches": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "lei": {
                  "type": "string"
                },
                "legal_name": {
                  "type": "string"
                },
                "node": {
                  "type": "string"
                },
                "record": {
                  "type": "string"
                }
              }
            }
          }
        },
        "required": [
          "matches"
        ]
      }
    },
    {
      "id": "get_record",
      "name": "Get record",
      "description": "The Family Office Record for one identifier: identity, registrations, lei, principals, sectors, website, aliases, events, gaps — every field with value, source_url, read_by, read and state; optionally a named version.",
      "tags": [
        "family-office",
        "public-record",
        "mcp",
        "read-only"
      ],
      "examples": [
        "POST https://mcp.familyofficeknowledgegraph.ai/mcp tools/call get_record"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "input": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "description": "LEI, legal name, alias or register id"
          },
          "version": {
            "type": "string"
          }
        },
        "required": [
          "identifier"
        ]
      },
      "output": {
        "type": "object",
        "properties": {
          "record": {
            "type": "object",
            "properties": {
              "lei": {
                "type": "object",
                "properties": {
                  "value": {},
                  "source_url": {
                    "type": "string"
                  },
                  "read_by": {
                    "type": "string"
                  },
                  "read": {
                    "type": "string"
                  },
                  "state": {
                    "type": "string",
                    "enum": [
                      "sourced",
                      "filled",
                      "confirmed",
                      "conflict",
                      "unverified"
                    ]
                  }
                },
                "required": [
                  "value",
                  "source_url",
                  "read_by",
                  "state"
                ]
              },
              "identity": {
                "type": "object"
              },
              "registrations": {
                "type": "array"
              },
              "principals": {
                "type": "array"
              },
              "aliases": {
                "type": "array"
              },
              "events": {
                "type": "array"
              },
              "gaps": {
                "type": "array"
              }
            }
          }
        },
        "required": [
          "record"
        ]
      }
    },
    {
      "id": "list_events_since",
      "name": "List events since",
      "description": "Dated, URL'd events on one record, oldest first, optionally since a date, paged by cursor.",
      "tags": [
        "family-office",
        "public-record",
        "mcp",
        "read-only"
      ],
      "examples": [
        "POST https://mcp.familyofficeknowledgegraph.ai/mcp tools/call list_events_since"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "input": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "description": "LEI, legal name, alias or register id"
          },
          "since": {
            "type": "string",
            "format": "date"
          },
          "cursor": {
            "type": "string"
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 200
          }
        },
        "required": [
          "identifier"
        ]
      },
      "output": {
        "type": "object",
        "properties": {
          "lei": {
            "type": "string"
          },
          "events": {
            "type": "array"
          },
          "next_cursor": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "lei",
          "events"
        ]
      }
    },
    {
      "id": "list_aliases",
      "name": "List aliases",
      "description": "Every name the record carries for one identifier, each with its source.",
      "tags": [
        "family-office",
        "public-record",
        "mcp",
        "read-only"
      ],
      "examples": [
        "POST https://mcp.familyofficeknowledgegraph.ai/mcp tools/call list_aliases"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "input": {
        "type": "object",
        "properties": {
          "identifier": {
            "type": "string",
            "description": "LEI, legal name, alias or register id"
          }
        },
        "required": [
          "identifier"
        ]
      },
      "output": {
        "type": "object",
        "properties": {
          "lei": {
            "type": "string"
          },
          "legal_name": {
            "type": "object",
            "properties": {
              "value": {},
              "source_url": {
                "type": "string"
              },
              "read_by": {
                "type": "string"
              },
              "read": {
                "type": "string"
              },
              "state": {
                "type": "string",
                "enum": [
                  "sourced",
                  "filled",
                  "confirmed",
                  "conflict",
                  "unverified"
                ]
              }
            },
            "required": [
              "value",
              "source_url",
              "read_by",
              "state"
            ]
          },
          "aliases": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "value": {},
                "source_url": {
                  "type": "string"
                },
                "read_by": {
                  "type": "string"
                },
                "read": {
                  "type": "string"
                },
                "state": {
                  "type": "string",
                  "enum": [
                    "sourced",
                    "filled",
                    "confirmed",
                    "conflict",
                    "unverified"
                  ]
                }
              },
              "required": [
                "value",
                "source_url",
                "read_by",
                "state"
              ]
            }
          }
        },
        "required": [
          "lei",
          "aliases"
        ]
      }
    },
    {
      "id": "list_nodes",
      "name": "List nodes",
      "description": "The graph's nodes with record counts read from each node's index, the node door and its as-of.",
      "tags": [
        "family-office",
        "public-record",
        "mcp",
        "read-only"
      ],
      "examples": [
        "POST https://mcp.familyofficeknowledgegraph.ai/mcp tools/call list_nodes"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "application/json"
      ],
      "input": {
        "type": "object",
        "properties": {}
      },
      "output": {
        "type": "object",
        "properties": {
          "nodes": {
            "type": "array"
          }
        },
        "required": [
          "nodes"
        ]
      }
    }
  ],
  "nodes": [
    {
      "id": "ca-fo-kg",
      "jurisdiction": "Canada",
      "door": "https://ca-fo-kg.familyofficeknowledgegraph.ai/mcp",
      "index": "https://ca-fo-kg.familyofficeknowledgegraph.ai/records/ca-fo-kg/index.json",
      "as_of": "2026-09-14"
    },
    {
      "id": "us-fo-kg",
      "jurisdiction": "United States",
      "door": "https://us-fo-kg.familyofficeknowledgegraph.ai/mcp",
      "index": "https://us-fo-kg.familyofficeknowledgegraph.ai/records/us-fo-kg/index.json",
      "as_of": "2026-09-14"
    }
  ],
  "x402": {
    "route": "https://familyofficeknowledgegraph.ai/api",
    "page": "https://familyofficeknowledgegraph.ai/x402",
    "jwks": "https://familyofficeknowledgegraph.ai/x402/jwks.json",
    "kid": "fo-kg-x402-2026-09",
    "network": "eip155:8453",
    "price_usdc": "0.01"
  },
  "source": "public-record",
  "supportsAuthenticatedExtendedCard": false
}
