Data Reaktor is a job search desk. For a job seeker's target companies, it finds the people inside from public sources, scores a warm path to each one from 0 to 100, and drafts intros that the person sends themselves. It never sends anything.
This post shows how an agent can sign itself up, run one search and get one draft back. Every endpoint here comes from our public AGENTS.md. The IDs in the examples are illustrative.
What the agent gets
- A remote MCP server at
https://www.datareaktor.ai/mcpover Streamable HTTP - The same operations over REST at
https://www.datareaktor.ai/api/v1 - An OpenAPI spec at
/api/v1/openapi.json, plusllms.txtand/.well-known/agent.jsonfor discovery
Some rules are built into the API, so your agent cannot break them by accident. People come from public sources only, and each person has a source URL. LinkedIn is never fetched or logged into. Emails appear only when they were found on a public page. Drafts come back with "delivery": "user_sends", and mark_sent only works when the user reports that they sent the message.
Step 1: register the agent
There is no sign up form, email or captcha. One request gets a key:
curl -s -X POST https://www.datareaktor.ai/api/v1/agents/register \
-H "Content-Type: application/json" \
-d '{ "name": "my-job-search-agent", "acceptTerms": true }'
name must be unique and 3 to 64 characters. acceptTerms must be true (the terms are at datareaktor.ai/terms-of-service). You can also send an optional purpose of up to 280 characters and a homepage. The response is a 201 with your API key. It is shown once, so store it.
The trial is 300 credits for 60 days, 60 requests per minute and 60 lookups per day. GET /api/v1/agent/account shows credits left. Costs are 5 credits per company for people discovery, 2 per warm path score, 6 per draft and 5 per contact lookup. No card is ever charged, and a refused call charges nothing.
Step 2: connect over MCP
For Cursor, add this to ~/.cursor/mcp.json:
{
"mcpServers": {
"data-reaktor": {
"url": "https://www.datareaktor.ai/mcp",
"headers": { "X-API-Key": "drk_live_YOUR_KEY_HERE" }
}
}
}
Claude Desktop uses the same block with "transport": "streamable-http" added. Hosted connectors that only speak OAuth, like the ChatGPT and claude.ai connectors, do not work yet. OAuth 2.1 is planned. Until then, use a key from your own client or code.
A typical tool flow: get_setup_status, create_search, add_target_company, estimate_cost, find_inside_people, get_job, list_people, draft_intro. There are 46 tools in total, and every one maps to a REST endpoint.
Step 3: the same run over REST
KEY="drk_live_YOUR_KEY_HERE"
API="https://www.datareaktor.ai/api/v1"
# 1. Create a search
curl -s -X POST "$API/searches" -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{ "name": "Senior PM, fintech", "targetLevel": "senior" }'
# 2. Add a target company (no charge yet)
curl -s -X POST "$API/searches/12/targets" -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{ "companies": [ { "companyName": "Fernhill Payments", "domain": "fernhill.example" } ] }'
# 3. Estimate, then start discovery with a hard cap
curl -s -X POST "$API/estimate" -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{ "searchId": 12, "draftsPerTarget": 0 }'
curl -s -X POST "$API/searches/12/people:discover" -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{ "max_credits": 60, "draftsPerTarget": 0 }'
# 4. Poll the job until it is completed, failed or cancelled
curl -s "$API/jobs/JOB_ID" -H "X-API-Key: $KEY"
# 5. List people, with sources and ranked paths
curl -s "$API/searches/12/people" -H "X-API-Key: $KEY"
# 6. Draft an intro for one person (returned, never sent)
curl -s -X POST "$API/people/31/drafts" -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{ "mode": "connector_ask" }'
Discovery runs as a background job. The call returns a 202 with a job_id and a poll URL, and max_credits is required so the agent cannot overspend. Discovery finds up to 5 people per company. draftsPerTarget defaults to 0 for agent keys, so you only pay for drafts you ask for. Draft modes are connector_ask, hiring_manager_note, alumni_note, follow_up and thank_you.
Your agent should show the estimate to the user and ask before step 3. AGENTS.md says the same.
Step 4: hand the draft to the human
The draft is plain text. The user reads it, edits it and sends it from their own account. After they confirm, the agent records it:
curl -s -X POST "$API/drafts/77/mark-sent" -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
-d '{ "user_reported": true, "channel": "linkedin" }'
A follow up then comes due 5 business days later, and list_followups returns it.
Making paths warmer
Warm path scores get better when the user imports their LinkedIn Connections.csv with import_connections. The score is deterministic: first degree, former colleague, alumni, mutual connection or cold. Without the file, most paths start cold.
Limits
60 requests per minute per key, 40 drafts per day, and up to 5 people per company. Errors are JSON with a stable code, a retryable flag and nextSteps.
Links
- Agent docs: https://www.datareaktor.ai/agents?utm_source=devto&utm_medium=community&utm_campaign=gtm-w1-2026-10&utm_content=article-mcp-quickstart
- Full reference: https://www.datareaktor.ai/AGENTS.md?utm_source=devto&utm_medium=community&utm_campaign=gtm-w1-2026-10&utm_content=article-agentsmd
- OpenAPI: https://www.datareaktor.ai/api/v1/openapi.json
If you are the job seeker rather than the agent builder, the web app is free during the beta, no card: https://www.datareaktor.ai/sign-up?utm_source=devto&utm_medium=community&utm_campaign=gtm-w1-2026-10&utm_content=article-signup
Top comments (0)