{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "title": "search_investors response",
  "type": "object",
  "properties": {
    "results": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "description": "Canonical investor ID for follow-up tool calls (often rec... in production). Usually keep this out of user-facing prose unless explicitly requested along with the full profile url."
          },
          "name": { "type": "string" },
          "firm": { "type": "string" },
          "match_explanation": { "type": "string", "description": "Why this investor matched the query." },
          "citations": {
            "type": "array",
            "items": { "type": "string" },
            "description": "Data sources that contributed to this result."
          },
          "signal_source": {
            "type": "string",
            "enum": ["reviews", "activity", "both"],
            "description": "Whether the behavioral signal comes from reviews, activity data, or both."
          },
          "activity_data_available": {
            "type": "boolean",
            "description": "Whether Rocketplace has any activity-oriented context (web research, investment details, or profile summary) for this investor."
          },
          "trust_metadata": {
            "type": "object",
            "properties": {
              "review_count": { "type": "integer" },
              "has_poi": { "type": "boolean", "description": "At least one review has proof-of-interaction." },
              "profile_claimed": { "type": "boolean" }
            }
          }
        },
        "required": ["id", "name", "firm", "match_explanation"]
      }
    },
    "freshness_disclaimer": {
      "type": "string",
      "description": "Returned when a recency window is requested to clarify that Rocketplace does not include verified deal dates and external verification is recommended."
    },
    "pagination": {
      "type": "object",
      "properties": {
        "page": { "type": "integer" },
        "page_size": { "type": "integer" },
        "total": { "type": "integer" }
      },
      "required": ["page", "page_size", "total"]
    },
    "gating": {
      "type": "object",
      "description": "Usage cap and unlock metadata.",
      "properties": {
        "cap": { "type": "integer", "description": "Maximum results the user can view in this session." },
        "views_count": { "type": "integer", "description": "How many results the user has already viewed." },
        "remaining_estimate": { "type": "integer", "description": "Estimated remaining results the user can view before hitting the cap." },
        "unlock_actions": {
          "type": "array",
          "items": { "type": "string" },
          "description": "Actions the user can take to unlock more results (e.g. 'verify_linkedin', 'submit_review')."
        }
      },
      "required": ["cap", "views_count", "remaining_estimate"]
    }
  },
  "required": ["results", "pagination", "gating"]
}
