Skip to main content

Browser Agent MCP

Package: @ainative/browser-mcp
Install: npx @ainative/browser-mcp
npm: npmjs.com/package/@ainative/browser-mcp
Version: 1.1.1
Backend: https://api.ainative.studio/api/v1/public/browser

The Browser Agent MCP server gives your AI agents the ability to see and interact with the web. Extract structured data from any page, automate multi-step browser workflows, enrich CRM contacts, monitor competitors, and store insights directly into ZeroMemory — all from a single npx command.

It auto-detects ZeroLocal running on localhost:8000 and uses it automatically. Otherwise it connects to AINative Cloud.

Quick Start
npx @ainative/browser-mcp

Set AINATIVE_API_KEY=ak_your_key in your shell or .env file. Get a key at ainative.studio/dashboard.


Install & Configure

npx @ainative/browser-mcp

No global install needed. Always runs the latest version.

Option 2 — Global install

npm install -g @ainative/browser-mcp
ainative-browser-mcp

Configure in Claude Code

Add to your .claude/mcp.json (or claude_desktop_config.json):

{
"mcpServers": {
"browser": {
"command": "npx",
"args": ["@ainative/browser-mcp"],
"env": {
"AINATIVE_API_KEY": "ak_your_key_here"
}
}
}
}

Configure in Cursor / Windsurf

{
"mcpServers": {
"ainative-browser": {
"command": "npx",
"args": ["@ainative/browser-mcp"],
"env": {
"AINATIVE_API_KEY": "ak_your_key_here"
}
}
}
}

Authentication

Set one of the following environment variables:

VariableDescription
AINATIVE_API_KEYAPI key (recommended) — ak_... prefix
AINATIVE_USERNAME + AINATIVE_PASSWORDEmail + password login

Get your API key from ainative.studio/dashboard.


Tools

Six tools are available. Each call costs credits from your AINative balance.

ToolDescriptionCredits
browser_actPerform an action on a page (click, type, navigate, scroll)50
browser_extractExtract structured data from a page75
browser_validateValidate content or state on a page25
browser_taskRun a multi-step automation task200
browser_extract_to_tableExtract data and write directly to a ZeroDB table100
browser_enrich_memoryExtract content and store in ZeroMemory agent memory100

Tool Reference

browser_act

Perform an action on a web page — navigate, click, type, scroll, submit a form.

Input schema:

ParameterTypeRequiredDescription
urlstringyesPage URL to act on
instructionstringyesNatural language action to perform
max_stepsintegernoMax steps to take (default: 5)

Example:

{
"tool": "browser_act",
"arguments": {
"url": "https://example.com/login",
"instruction": "Click the 'Sign in with Google' button",
"max_steps": 3
}
}

browser_extract

Extract structured data from any page. Returns JSON matching your requested schema or goal.

Input schema:

ParameterTypeRequiredDescription
urlstringyesPage URL to extract from
extract_goalstringyesWhat to extract (natural language)
schemaobjectnoOptional JSON schema to shape the output

Example — extract pricing:

{
"tool": "browser_extract",
"arguments": {
"url": "https://competitor.com/pricing",
"extract_goal": "Extract all plan names, prices, and features"
}
}

Example — with schema:

{
"tool": "browser_extract",
"arguments": {
"url": "https://linkedin.com/company/acme-corp",
"extract_goal": "Extract company details for CRM",
"schema": {
"type": "object",
"properties": {
"company_name": {"type": "string"},
"industry": {"type": "string"},
"employee_count": {"type": "string"},
"website": {"type": "string"},
"description": {"type": "string"}
}
}
}
}

browser_validate

Check that expected content exists on a page. Useful for monitoring, testing, and QA automation.

Input schema:

ParameterTypeRequiredDescription
urlstringyesPage URL to validate
assertionstringyesWhat to check (natural language)

Example:

{
"tool": "browser_validate",
"arguments": {
"url": "https://your-app.com/dashboard",
"assertion": "The page shows a welcome message and user account balance"
}
}

Returns {"valid": true, "details": "..."} or {"valid": false, "reason": "..."}.


browser_task

Run a full multi-step browser automation task. The agent navigates across pages, fills forms, clicks, and returns a structured result.

Input schema:

ParameterTypeRequiredDescription
taskstringyesFull task description (natural language)
start_urlstringyesURL to start the task on
max_stepsintegernoMax steps (default: 20)

Example:

{
"tool": "browser_task",
"arguments": {
"task": "Go to the product catalog, find all products in the 'Electronics' category, and return a list of names and prices",
"start_url": "https://shop.example.com",
"max_steps": 15
}
}

browser_extract_to_table

Extract data from a page and write it directly into a ZeroDB table. No intermediate steps — the agent scrapes and stores in one call.

Input schema:

ParameterTypeRequiredDescription
urlstringyesPage URL to extract from
extract_goalstringyesWhat to extract
table_namestringyesZeroDB table to write to
project_idstringyesYour ZeroDB project ID

Example — competitor price monitoring:

{
"tool": "browser_extract_to_table",
"arguments": {
"url": "https://competitor.com/products",
"extract_goal": "Extract product name, SKU, and price for all products",
"table_name": "competitor_prices",
"project_id": "proj_abc123"
}
}

browser_enrich_memory

Extract content from a page and store it in ZeroMemory as agent memory. Useful for research, lead enrichment, and building agent context over time.

Input schema:

ParameterTypeRequiredDescription
urlstringyesPage URL to extract from
extract_goalstringyesWhat to extract and remember
memory_typestringnosemantic (default) or episodic
project_idstringyesYour ZeroDB project ID

Example — CRM lead enrichment:

{
"tool": "browser_enrich_memory",
"arguments": {
"url": "https://acme-corp.com/about",
"extract_goal": "Extract company overview, products, team size, and recent news",
"memory_type": "semantic",
"project_id": "proj_abc123"
}
}

ZeroTime Use Cases

The Browser Agent is the 5th app in the ZeroTime business operations suite. Each use case connects a ZeroTime app to live web data.

ZeroPipeline — CRM Lead Enrichment

Before a sales call, enrich a CRM contact from their company website:

// In your agent or Claude Code session
await browser_enrich_memory({
url: "https://prospect-company.com",
extract_goal: "Company size, product offering, recent funding, key executives",
memory_type: "semantic",
project_id: "proj_abc123"
});

// Memory is now available in subsequent ZeroPipeline CRM calls
await zeropipeline_update_contact({
contact_id: "con_456",
enriched: true
});

ZeroCommerce — Competitor Price Monitoring

Schedule daily competitor price checks and store results in ZeroDB:

// Extract competitor pricing
const prices = await browser_extract({
url: "https://competitor.com/pricing",
extract_goal: "All plan names, monthly prices, and included features"
});

// Write to ZeroDB table for tracking
await browser_extract_to_table({
url: "https://competitor.com/pricing",
extract_goal: "Plan name, monthly price, annual price, features",
table_name: "competitor_pricing_snapshots",
project_id: "proj_abc123"
});

ZeroInvoice — Invoice Portal Extraction

Extract invoice data from a client vendor portal when they don't have an API:

const invoiceData = await browser_extract({
url: "https://vendor-portal.com/invoices",
extract_goal: "All unpaid invoices — invoice number, amount, due date, status",
schema: {
type: "array",
items: {
type: "object",
properties: {
invoice_number: { type: "string" },
amount: { type: "number" },
due_date: { type: "string" },
status: { type: "string" }
}
}
}
});

OpenCapStack — Investor Research

Enrich investor profiles before a fundraise:

await browser_enrich_memory({
url: "https://vc-firm.com/team/partner-name",
extract_goal: "Investment thesis, portfolio companies, check size, contact info",
memory_type: "semantic",
project_id: "proj_abc123"
});

Async Pipeline (Batch Mode)

For enriching many URLs at once, use the AINative backend batch endpoint directly instead of looping individual MCP calls.

POST /api/v1/public/browser/batch-extract

Extract structured data from multiple URLs in one request (max 10 URLs, 75 credits each).

curl -X POST https://api.ainative.studio/api/v1/public/browser/batch-extract \
-H "X-API-Key: ak_your_key" \
-H "Content-Type: application/json" \
-d '{
"urls": [
"https://company1.com/about",
"https://company2.com/about"
],
"extract_goal": "Company name, industry, employee count, products"
}'

Response:

{
"results": [
{
"url": "https://company1.com/about",
"status": "success",
"data": { "company_name": "Acme Corp", "industry": "SaaS", ... }
},
{
"url": "https://company2.com/about",
"status": "success",
"data": { ... }
}
],
"total": 2,
"succeeded": 2,
"failed": 0,
"credits_used": 150
}

POST /api/v1/public/browser/enrich-memory-async

Dispatch an async Celery task to enrich memory from a URL. Returns immediately with a task_id.

curl -X POST https://api.ainative.studio/api/v1/public/browser/enrich-memory-async \
-H "X-API-Key: ak_your_key" \
-H "Content-Type: application/json" \
-d '{
"url": "https://company.com/blog/latest-post",
"extract_goal": "Key insights and takeaways",
"memory_type": "semantic",
"project_id": "proj_abc123"
}'

Response (202 Accepted):

{
"task_id": "celery-task-uuid",
"status": "queued",
"message": "Memory enrichment task queued successfully"
}

Scheduled Enrichment

Create scheduled browser enrichment jobs that run on a cron schedule.

POST /api/v1/public/browser/schedules

curl -X POST https://api.ainative.studio/api/v1/public/browser/schedules \
-H "X-API-Key: ak_your_key" \
-H "Content-Type: application/json" \
-d '{
"name": "Daily competitor price check",
"urls": ["https://competitor.com/pricing"],
"cron_expr": "0 9 * * *",
"memory_type": "semantic",
"project_id": "proj_abc123"
}'

Cron expression format: Standard 5-field cron — minute hour dom month dow

ExampleMeaning
0 9 * * *Every day at 9am UTC
0 */6 * * *Every 6 hours
0 9 * * 1Every Monday at 9am
*/30 * * * *Every 30 minutes

GET /api/v1/public/browser/schedules

List all your schedules.

DELETE /api/v1/public/browser/schedules/{schedule_id}

Delete a schedule.


ZeroLocal (Local-First Mode)

The server auto-detects ZeroLocal running on localhost:8000. If detected, all requests go to your local instance — no cloud calls, no data leaves your machine.

# Start ZeroLocal
pip install zerodb-local
zerodb serve

# Then in another terminal — browser-mcp auto-connects to localhost:8000
npx @ainative/browser-mcp

Pricing

PlanPriceDaily limitMonthly limit
Free$05 tool calls/day50 tool calls/mo
Pro$49/mo50 tool calls/day1,000 tool calls/mo
EnterpriseCustomUnlimitedUnlimited

Credits are consumed per tool call (see Tools table above). Upgrade at ainative.studio/dashboard.


Rate Limits

All plans enforce per-day and per-month limits. When a limit is exceeded the API returns:

{
"error": "rate_limit_exceeded",
"message": "Daily browser tool call limit reached (5/5). Resets at midnight UTC.",
"limit": 5,
"used": 5,
"resets_at": "2026-05-20T00:00:00Z"
}

Error Reference

HTTP CodeErrorDescription
400invalid_urlURL is not reachable or malformed
401unauthorizedMissing or invalid API key
402insufficient_creditsNot enough credits for this operation
422validation_errorMissing required fields
429rate_limit_exceededDaily or monthly limit reached
500extraction_failedBrowser automation failed on the target page
503browser_unavailableBrowser service temporarily unavailable