AI-powered B2B company research engine. REST API + MCP server.
Base URL: https://research-agent.net
All requests require an API key passed via header:
X-Auth-Token: your_api_key_here
Get your API key from the dashboard. For MCP connections, use X-API-Key header instead.
POST /research and POST /agents/{id}/run cost credits by model: 1 (Gemini 3.1 Flash Lite — default — & Gemini 2.5 Flash Lite), 2 (Gemini 2.5 Flash), 6 (Gemini 3.5 Flash). BYOK/other models = 1.X-OpenRouter-API-Key headerControl how deep the agent researches. Available on /research, /agents/{id}/run, and /agents/{id}/bulk-run.
| quick | Fast lookup. 1-3 tool calls, ~45s timeout, 8 iterations max. Best for simple questions, basic company info, quick fact checks. |
| standard | Balanced (default). 3-8 tool calls, ~2min timeout, 25 iterations max. Good for most research tasks. |
| deep | Thorough research. 8-15 tool calls, ~5min timeout, 40 iterations max. Cross-references multiple sources, checks secondary pages. Best for detailed company profiles, competitive analysis. |
You can also set max_iterations (1-50) directly to override the depth preset.
Run a deep research query with web search, news, and scraping. Returns structured or free-text output. Costs 1-6 credits depending on the model.
Parameters (query string or JSON body)
Accepts both query string params and JSON body. Use JSON body for long prompts and schemas (query strings have URL length limits).
| prompt | Required. The research instruction. |
| model | OpenRouter model ID. Included: google/gemini-3.1-flash-lite (default), google/gemini-3.5-flash, google/gemini-2.5-flash-lite, google/gemini-2.5-flash. With BYOK: any OpenRouter model. |
| schema | JSON schema for structured output. Accepts a JSON object or a JSON string. |
| depth | Research depth: quick (fast, 1-3 tools, ~45s), standard (default, balanced), or deep (thorough, 8-15 tools, up to 5min). |
| max_iterations | Override max agent iterations (1-50). Overrides depth preset if both are set. |
| temperature | 0.0-2.0. Default: 0.1 |
Headers
| X-Auth-Token | Required. Your API key. |
| X-OpenRouter-API-Key | Optional. BYOK — use any model. Scale plan: no credits deducted. |
# Quick lookup — minimal params curl -X POST "https://research-agent.net/research" \ -H "X-Auth-Token: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "What does Stripe do and how many employees do they have?", "depth": "quick" }' # Full example — all params curl -X POST "https://research-agent.net/research" \ -H "X-Auth-Token: YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "prompt": "Research Stripe Inc. Find their ICP, tech stack, total funding, and recent news.", "model": "google/gemini-2.5-flash", "depth": "deep", "max_iterations": 35, "temperature": 0.1, "schema": { "type": "object", "properties": { "company": { "type": "string", "description": "Company name" }, "icp": { "type": "string", "description": "Ideal customer profile" }, "tech_stack": { "type": "array", "items": { "type": "string" } }, "funding_total": { "type": "string", "description": "Total funding raised" }, "recent_news": { "type": "array", "items": { "type": "string" } } } } }'
Response
{
"output": {
"company": "Stripe",
"icp": "Internet businesses needing payment infrastructure...",
"tech_stack": ["Ruby", "Go", "React", "AWS"],
"funding_total": "$8.7B",
"recent_news": ["Stripe launches new billing product..."]
},
"model_used": "google/gemini-2.5-flash",
"execution_time_seconds": 42.1
}
List all your agents.
Response
{ "agents": [{ "id": "uuid", "name": "...", "model": "...", "input_variables": [...], "is_active": true, ... }] }
Create a new agent.
Request body (JSON)
{
"name": "Company Enrichment",
"description": "Enrich company data",
"prompt_template": "Research {{company_name}} at {{website}} and find their ICP, tech stack, and funding.",
"input_variables": ["company_name", "website"],
"model": "google/gemini-2.5-flash",
"temperature": 0.1,
"output_schema": null
}
Get agent details by ID.
Update agent configuration. Only provided fields are changed.
Permanently delete an agent.
Execute an agent with input variables. Costs the agent's per-model credits (1-6).
Request body (JSON) — input variables + optional depth/max_iterations
# Standard depth (default) { "company_name": "Stripe", "website": "https://stripe.com" } # Quick lookup { "company_name": "Stripe", "website": "https://stripe.com", "depth": "quick" } # Deep research { "company_name": "Stripe", "website": "https://stripe.com", "depth": "deep" }
Response
{
"agent_id": "uuid",
"agent_name": "Company Enrichment",
"output": { "icp": "...", "tech_stack": [...] },
"execution_time_seconds": 12.5,
"request_id": "A1B2C3D4"
}
List past runs for an agent.
Query parameters
| limit | Max results (default 50, max 200) |
List available pre-built agent templates. Each template comes in lean (quick) and standard variants.
Pre-built agents for common GTM use cases. Each comes in two variants: Lean (quick depth, minimal output, fast) and Standard (deeper research, richer output). Create from template via POST /agents with template_key.
| Template | Depth | Use Case |
| company_enrichment_lean | quick | Fast firmographics — industry, HQ, size. Bulk pipelines. |
| company_enrichment | standard | Full profile — funding, tech stack, executives. CRM enrichment. |
| icp_check_lean | quick | Quick ICP score + one-line reasoning. Filtering large lists. |
| icp_check | standard | Detailed ICP scoring with signals. Account prioritization. |
| buying_signals_lean | quick | Signal strength + top 3 signals. Daily bulk monitoring. |
| buying_signals | standard | Full signal detection with sources and relevance scoring. |
| lead_qualifier_lean | quick | Quick score + next step. High-volume inbound filtering. |
| lead_qualifier | standard | Full qualification — seniority, title, reasoning. |
| competitor_analysis_lean | quick | Top 3 competitors + positioning. Sales battlecards. |
| competitor_analysis | deep | Full competitive landscape — strengths, weaknesses, trends. |
| news_monitor_lean | quick | Top headlines + sentiment. Daily account monitoring. |
| news_monitor | standard | Categorized news digest with sources and key takeaway. |
| outbound_personalization_lean | quick | One hook + one pain point. Bulk cold outreach prep. |
| outbound_personalization | standard | Pain points, hooks, competitor context, talking points. |
| pre_call_briefing | deep | Full account briefing — news, decision makers, talking points. |
Run an agent on hundreds of inputs asynchronously. Items execute concurrently (up to 5 at a time). Poll for progress and retrieve results when done.
Submit a bulk run job. Costs the agent's per-model credits per item. Max 1000 items.
Request body (JSON)
{
"items": [
{ "company_name": "Stripe", "website": "https://stripe.com" },
{ "company_name": "Notion", "website": "https://notion.so" },
{ "company_name": "Linear", "website": "https://linear.app" }
],
"depth": "deep"
}
Response
{
"job_id": "uuid",
"total_items": 3,
"status": "running"
}
List all bulk run jobs for an agent. Returns job_id, status, progress counts, timestamps.
Get bulk job status and progress.
Response
{
"id": "uuid",
"agent_id": "uuid",
"status": "running",
"total_items": 100,
"completed_items": 45,
"failed_items": 2,
"created_at": "2026-03-04T12:00:00Z",
"completed_at": null
}
Get individual item results (paginated).
Query parameters
| offset | Skip N items (default 0) |
| limit | Max items to return (default 50, max 100) |
Response
{
"job_id": "uuid",
"offset": 0,
"items": [
{
"id": "uuid",
"input_variables": { "company_name": "Stripe", "website": "https://stripe.com" },
"status": "completed",
"output": { "icp": "...", "tech_stack": [...] },
"execution_time_seconds": 11.2
}
]
}
Cancel a running bulk job. Completed items are kept.
Get current credit balance and recent transactions.
List available credit packs with prices.
Create a Stripe checkout session to purchase credits.
Get current user identity.
{ "id": "uuid", "email": "user@example.com", "display_name": "John", "created_at": "..." }
Get usage statistics.
| days | Lookback period in days (default 30) |
Regenerate your API key. Old key is deactivated.
Connect via MCP (Model Context Protocol) at https://research-agent.net/mcp
Auth: pass API key as X-API-Key header.
Research & Enrichment
| research | Deep multi-source research query (1-6 credits by model) |
| search_web | Quick web search without full agent loop (1 credit) |
| scrape_page | Scrape and summarize a URL (1 credit) |
| enrich_company | Structured company enrichment — industry, size, funding, tech stack (2 credits) |
| find_buying_signals | Detect funding rounds, hires, launches, expansions (2 credits) |
| score_icp_fit | Score company against ICP criteria, 1-10 with reasoning (2 credits) |
| enrich_leads_bulk | Batch enrichment — creates agent, submits bulk run (by model, per lead) |
Agent Management
| list_agents | List all configured agents |
| get_agent | Get agent details by ID |
| create_agent | Create agent with prompt template and optional schema |
| create_agent_from_template | Create from pre-built template (ICP check, enrichment, etc.) |
| update_agent | Update agent configuration |
| delete_agent | Delete an agent |
| run_agent | Execute agent with input variables (by model, 1-6) |
| list_agent_runs | List past runs for an agent |
| list_templates | List available agent templates |
Bulk Runs
| bulk_run_agent | Submit bulk job (per item, by model) |
| get_bulk_run_status | Check bulk job progress |
| get_bulk_run_results | Get results (paginated) |
| cancel_bulk_run | Cancel a running bulk job |
| list_bulk_runs | List all bulk jobs for an agent |
Account & Billing
| check_credits | Check credit balance and transactions |
| get_usage | Usage statistics (requests, costs, daily breakdown) |
| get_me | Current user identity |
| list_models | Available AI models and default |
| get_plans | Pricing plans with BYOK info |