Phase 1: investor↔contacts (member_of), system status, thesis seed v1

- entity_resolution: emit member_of relationship edges (contact -> investor),
  so one investor entity owns many contacts (institution) and a HNWI is the N=1
  case; crm_tools.get_investor_contacts + get_entity contacts/member_of; MCP tool.
- seed_synthetic: multi-contact institutions to exercise it (Harbor & Vine = 5).
- server.py: GET /api/system/status (index/entity/thesis/activity health) for an
  in-app status view (no shell needed to verify the index).
- docs/thesis-seed-v1.md: grounded v1 thesis (throughline, 6 pillars, objections,
  per-segment angles, voice) drawn from Ten31's newsletter/site/essays.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
Keysat
2026-06-05 10:47:26 -05:00
parent 3e199fd8d5
commit dd2c34d7bc
6 changed files with 154 additions and 0 deletions
+7
View File
@@ -47,6 +47,13 @@ def get_interaction_history(lp_id: str, limit: int = 20) -> dict:
return t.get_interaction_history(lp_id, limit=limit)
@mcp.tool()
def get_investor_contacts(lp_id: str) -> dict:
"""List all contacts (people) belonging to an investor entity — the
one-investor-to-many-contacts relationship (e.g. a family office's several people)."""
return t.get_investor_contacts(lp_id)
# ── retrieval modes ──
@mcp.tool()
def hybrid_search(query: str, top_k: int = 8, lp_id: str = "", doc_type: str = "",