# StartupGraph > Startup data for agents. No dashboard. A public API and an MCP server. Companies, funding rounds, investors, people, open roles, and facts agents contribute, each contributed fact with its source URL, fetch date and verification status. - API base: https://startupgraph.dev/api - MCP (Streamable HTTP): https://startupgraph.dev/mcp - Get a free key: POST https://startupgraph.dev/api/keys {"email":"you@example.com"}. This joins the waitlist. When access is turned on, a one-time link goes to that email and a person opens it to see the key. The key is never returned by this call or sent in the email. A lost key or an expired link: the person signs in at https://startupgraph.dev/account and makes a new key. - Auth: Authorization: Bearer sg_live_... - Quickstart for a person setting this up: https://startupgraph.dev/quickstart - Claude Code: claude mcp add --transport http --scope user startupgraph https://startupgraph.dev/mcp --header "Authorization: Bearer $STARTUPGRAPH_KEY" ## Metering - A call costs tokens: about one per four bytes of the response, ten at least. Each response carries X-Tokens-Charged. - Limits per plan: tokens a month, tokens a day, calls a minute. Headers: X-RateLimit-*, X-Tokens-Day-*, X-Tokens-Month-*. - Free: 10,000 tokens, fixed (contributing verified facts earns more), quarterly snapshot, 60 calls/min. - Live, $49/month: 1,000,000 tokens/month, 100,000/day, 300 calls/min, live data. - Scale, $199/month: 5,000,000 tokens/month, 500,000/day, 1,000 calls/min. - More than the allowance, bulk export, nightly dump: hello@startupgraph.dev. - Upgrade: POST /api/billing/checkout {"plan":"live"|"scale"} returns a Stripe Checkout URL. GET /api/billing/status, POST /api/billing/portal. ## Read - GET /api/companies?q=&category=&country=&status=&stage=&raised_since=90d&investors=&min_headcount=&max_headcount=&founded_after=&founded_before=&min_total_raised=&sort=&direction= - GET /api/companies/{slug} (/funding, /people, /headcount, /jobs, /facts) - GET /api/funding-rounds?since=&investors=&round_type= - GET /api/investors?q= GET /api/investors/{slug} - GET /api/people/{slug} - GET /api/search?q= - GET /api/oss-projects (top 100 by stars; `repo` is owner/name) - GET /api/oss-projects/{owner}/{repo}/stars?weeks=52 (weekly readings, newest first: stars, forks, last_commit_at, source_url, observed_at) - GET /api/changes?since=30d (live keys: up to now; free keys: up to the last quarter end) - GET /api/coverage (what we have and do not, per field and per country) - GET /api/stats - GET /api/pulse (no key: what landed in the past hour, day, week, month) - GET /api/keys/me (usage, limits, credits). Free, and it still answers when the allowance is spent. - POST /api/keys/rotate (replace the calling key; the old one stops working at once, the new one is in the response only). Free. ## Save and track - POST /api/screens {name, criteria}; GET/PATCH/DELETE /api/screens/{ref}; GET /api/screens - POST /api/portfolios {name, companies}; GET/DELETE /api/portfolios/{ref}; POST/DELETE /api/portfolios/{ref}/companies - POST /api/rollups {name, investors} (a portfolio that follows the named funds' deals) ## Contribute - POST /api/facts {company, field, value, source_url} (served unverified, checked against the source, credited in tokens when verified) - POST /api/companies {name, website, source_url, ...} - GET /api/facts/{id} ## MCP tools search_companies, get_company, funding_rounds, headcount_history, open_jobs, oss_stars_history, changes_since, coverage, search_investors, create_screen, list_screens, run_screen, delete_screen, create_portfolio, list_portfolios, add_to_portfolio, remove_from_portfolio, portfolio, delete_portfolio, fund_rollup, submit_fact, submit_company, fact_status ## Pages - https://startupgraph.dev/build (prompts for building local tools on this data) - https://startupgraph.dev/roadmap (for people on the waitlist) - https://startupgraph.dev/blog