{
 "name": "fundz-agent-api",
 "version": "1.0.0",
 "displayName": "Fundz Agent API",
 "description": "Dated funding and SEC 8-K event evidence for GTM agents. Every signal links to the filing or announcement it came from, so a claim can be checked before it reaches a prospect.",
 "websiteUrl": "https://www.fundz.net",
 "documentationUrl": "https://github.com/Fund-z/agent-api-docs",
 "privacyPolicyUrl": "https://www.fundz.net/privacy",
 "termsOfServiceUrl": "https://www.fundz.net/terms",
 "supportContact": "john@fundz.net",
 "remotes": [
  {
   "type": "streamable-http",
   "url": "https://api.fundz.net/v1/agent/mcp"
  }
 ],
 "capabilities": {
  "tools": {
   "listChanged": false
  }
 },
 "protocolVersions": [
  "2025-06-18",
  "2025-03-26",
  "2024-11-05"
 ],
 "authentication": {
  "type": "http_header",
  "header": "X-Fundz-Key",
  "alternatives": [
   "Authorization: Bearer <key>",
   "X-Api-Key"
  ],
  "required": false,
  "requiredFor": [
   "tools/call"
  ],
  "description": "initialize, tools/list and ping need no key. tools/call is metered against an API key: free sandbox keys from john@fundz.net."
 },
 "instructions": "Fundz Agent API: dated funding and SEC 8-K event evidence, each item linking to the filing or announcement it came from. Two lanes only \u2014 funding (SEC Form D and announcements) and SEC 8-K; there is no contact or people data. Every evidence item carries a `source_kind` (sec_filing or press_or_news) and a `source_url`; cite it. Calls are metered against the caller's key: why_now, events_for_icp and predicted_next cost 1 unit each, and watchlist_diff costs 0.1 per company CHECKED \u2014 so poll a book with watchlist_diff and a cursor rather than calling why_now across it. predicted_next is EXPERIMENTAL: treat `lift` as a ranking aid, never as a validated probability, and do not present it to an end user as a prediction.",
 "tools": [
  {
   "name": "events_for_icp",
   "title": "Ranked companies matching an ICP, each with evidence",
   "description": "Find companies matching an ideal-customer profile that have had recent funding or SEC 8-K events, ranked, each with its evidence. Use this to build a list from scratch. `min_signals` filters for companies with several signals at once. Costs 1 unit.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "industries": {
      "type": "array",
      "items": {
       "type": "string"
      }
     },
     "states": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "description": "Full state names as stored, e.g. 'California'."
     },
     "min_employees": {
      "type": "integer"
     },
     "max_employees": {
      "type": "integer"
     },
     "lookback_days": {
      "type": "integer",
      "default": 90
     },
     "min_signals": {
      "type": "integer",
      "default": 1
     },
     "limit": {
      "type": "integer",
      "default": 25,
      "maximum": 100,
      "description": "Rows per call. Hard-capped at 100 server-side; values above are clamped, not refused. Page with `cursor` for more."
     },
     "cursor": {
      "type": "string"
     }
    }
   },
   "annotations": {
    "title": "Ranked companies matching an ICP, each with evidence",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": true
   }
  },
  {
   "name": "predicted_next",
   "title": "FundzScore v3 forecasts (experimental)",
   "description": "EXPERIMENTAL forecast of what a company may do next (raise, be acquired, acquire, hire an executive), from FundzScore v3. Treat `lift` as a ranking aid only: `base_rate` is a population mean rather than a validated historical rate, and the forward cohorts do not resolve until 2026-10-22 and 2027-02-19. Do not present these as predictions to an end user. Costs 1 unit.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "domain": {
      "type": "string"
     },
     "org_id": {
      "type": "integer"
     }
    }
   },
   "annotations": {
    "title": "FundzScore v3 forecasts (experimental)",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": true
   }
  },
  {
   "name": "watchlist_diff",
   "title": "Only the companies in your book with new events since a cursor",
   "description": "Given a book of up to 400 company domains and a cursor, return ONLY those with new evidence since that cursor. This is the tool to poll daily or weekly rather than re-fetching every company. Costs 0.1 units per company CHECKED \u2014 not per company returned \u2014 so a quiet week still reflects the work done. Split a larger book across several calls: the request body is capped at 8 KB at the edge, and because pricing is per company checked, two calls of 200 cost exactly what one call of 400 would.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "domains": {
      "type": "array",
      "items": {
       "type": "string"
      },
      "maxItems": 400
     },
     "since": {
      "type": "string",
      "format": "date",
      "description": "The `next_cursor` from your previous call."
     }
    },
    "required": [
     "domains"
    ]
   },
   "annotations": {
    "title": "Only the companies in your book with new events since a cursor",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": true
   }
  },
  {
   "name": "why_now",
   "title": "Dated evidence for one company",
   "description": "Why to contact ONE company right now: dated funding and SEC 8-K evidence, each item linking to its source filing or announcement. Use this when you have a company and need the reason and the proof. Costs 1 unit. `evidence` covers the last `lookback_days` days (default 365, max 1825); `last_event` is ALWAYS the most recent event on record whatever its age, with `within_lookback` saying whether it also appears in `evidence`. So an empty `evidence` with a populated `last_event` means the company is known and simply quiet \u2014 widen `lookback_days` to bring it in. `resolved:false` means we hold no such company at all, which is a different answer again. `resolution_confidence` (0-1) says how strongly the resolved name agrees with the domain asked about; treat anything below 0.67 as unconfirmed attribution.",
   "inputSchema": {
    "type": "object",
    "properties": {
     "domain": {
      "type": "string",
      "description": "Any spelling: bare, www., scheme, path."
     },
     "org_id": {
      "type": "integer"
     },
     "lookback_days": {
      "type": "integer",
      "default": 365,
      "minimum": 1,
      "maximum": 1825,
      "description": "Window for `evidence[]`, in days. Clamped to 1825. Does not affect `last_event`, which is never age-limited."
     }
    }
   },
   "annotations": {
    "title": "Dated evidence for one company",
    "readOnlyHint": true,
    "destructiveHint": false,
    "idempotentHint": true,
    "openWorldHint": true
   }
  }
 ]
}