Research Agent API

AI-powered B2B company research engine. REST API + MCP server.

Base URL: https://research-agent.net

Authentication

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.

Credits

Research Depth

Control how deep the agent researches. Available on /research, /agents/{id}/run, and /agents/{id}/bulk-run.

quickFast lookup. 1-3 tool calls, ~45s timeout, 8 iterations max. Best for simple questions, basic company info, quick fact checks.
standardBalanced (default). 3-8 tool calls, ~2min timeout, 25 iterations max. Good for most research tasks.
deepThorough 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.

Research

POST /research

Run a deep research query with web search, news, and scraping. Returns structured or free-text output. Costs 1 credit.

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).

promptRequired. The research instruction.
modelOpenRouter model ID. Included: deepseek/deepseek-v4-flash (default), deepseek/deepseek-v4-pro, google/gemini-3.1-flash-lite, google/gemini-2.5-flash-lite, google/gemini-3.5-flash, google/gemini-2.5-flash, google/gemini-2.5-pro. With BYOK: any OpenRouter model.
schemaJSON schema for structured output. Accepts a JSON object or a JSON string.
depthResearch depth: quick (fast, 1-3 tools, ~45s), standard (default, balanced), or deep (thorough, 8-15 tools, up to 5min).
max_iterationsOverride max agent iterations (1-50). Overrides depth preset if both are set.
temperature0.0-2.0. Default: 0.1

Headers

X-Auth-TokenRequired. Your API key.
X-OpenRouter-API-KeyOptional. 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
}

Agents

GET /agents

List all your agents.

Response

{ "agents": [{ "id": "uuid", "name": "...", "model": "...", "input_variables": [...], "is_active": true, ... }] }

POST /agents

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 /agents/{agent_id}

Get agent details by ID.

PUT /agents/{agent_id}

Update agent configuration. Only provided fields are changed.

DELETE /agents/{agent_id}

Permanently delete an agent.

POST /agents/{agent_id}/run

Execute an agent with input variables. Costs 1 credit.

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"
}

GET /agents/{agent_id}/runs

List past runs for an agent.

Query parameters

limitMax results (default 50, max 200)

GET /agents/templates

List available pre-built agent templates. Each template comes in lean (quick) and standard variants.

Agent Templates

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.

TemplateDepthUse Case
company_enrichment_leanquickFast firmographics — industry, HQ, size. Bulk pipelines.
company_enrichmentstandardFull profile — funding, tech stack, executives. CRM enrichment.
icp_check_leanquickQuick ICP score + one-line reasoning. Filtering large lists.
icp_checkstandardDetailed ICP scoring with signals. Account prioritization.
buying_signals_leanquickSignal strength + top 3 signals. Daily bulk monitoring.
buying_signalsstandardFull signal detection with sources and relevance scoring.
lead_qualifier_leanquickQuick score + next step. High-volume inbound filtering.
lead_qualifierstandardFull qualification — seniority, title, reasoning.
competitor_analysis_leanquickTop 3 competitors + positioning. Sales battlecards.
competitor_analysisdeepFull competitive landscape — strengths, weaknesses, trends.
news_monitor_leanquickTop headlines + sentiment. Daily account monitoring.
news_monitorstandardCategorized news digest with sources and key takeaway.
outbound_personalization_leanquickOne hook + one pain point. Bulk cold outreach prep.
outbound_personalizationstandardPain points, hooks, competitor context, talking points.
pre_call_briefingdeepFull account briefing — news, decision makers, talking points.

Bulk Runs

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.

POST /agents/{agent_id}/bulk-run

Submit a bulk run job. Costs 1 credit per item (deducted upfront). 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"
}

GET /agents/{agent_id}/bulk-runs

List all bulk run jobs for an agent. Returns job_id, status, progress counts, timestamps.

GET /agents/{agent_id}/bulk-runs/{job_id}

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 /agents/{agent_id}/bulk-runs/{job_id}/results

Get individual item results (paginated).

Query parameters

offsetSkip N items (default 0)
limitMax 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
    }
  ]
}

DELETE /agents/{agent_id}/bulk-runs/{job_id}

Cancel a running bulk job. Completed items are kept.

Billing

GET /billing/credits

Get current credit balance and recent transactions.

GET /billing/plans

List available credit packs with prices.

POST /billing/checkout

Create a Stripe checkout session to purchase credits.

User

GET /auth/me

Get current user identity.

{ "id": "uuid", "email": "user@example.com", "display_name": "John", "created_at": "..." }

GET /auth/usage

Get usage statistics.

daysLookback period in days (default 30)

POST /auth/rotate-key

Regenerate your API key. Old key is deactivated.

MCP Server

Connect via MCP (Model Context Protocol) at https://research-agent.net/mcp

Auth: pass API key as X-API-Key header.

Available Tools (26)

Research & Enrichment

researchDeep multi-source research query (1 credit)
search_webQuick web search without full agent loop (1 credit)
scrape_pageScrape and summarize a URL (1 credit)
enrich_companyStructured company enrichment — industry, size, funding, tech stack (1 credit)
find_buying_signalsDetect funding rounds, hires, launches, expansions (1 credit)
score_icp_fitScore company against ICP criteria, 1-10 with reasoning (1 credit)
enrich_leads_bulkBatch enrichment — creates agent, submits bulk run (1 credit/lead)

Agent Management

list_agentsList all configured agents
get_agentGet agent details by ID
create_agentCreate agent with prompt template and optional schema
create_agent_from_templateCreate from pre-built template (ICP check, enrichment, etc.)
update_agentUpdate agent configuration
delete_agentDelete an agent
run_agentExecute agent with input variables (1 credit)
list_agent_runsList past runs for an agent
list_templatesList available agent templates

Bulk Runs

bulk_run_agentSubmit bulk job (1 credit/item)
get_bulk_run_statusCheck bulk job progress
get_bulk_run_resultsGet results (paginated)
cancel_bulk_runCancel a running bulk job
list_bulk_runsList all bulk jobs for an agent

Account & Billing

check_creditsCheck credit balance and transactions
get_usageUsage statistics (requests, costs, daily breakdown)
get_meCurrent user identity
list_modelsAvailable AI models and default
get_plansPricing plans with BYOK info