developer docs

hireburst api surface.

Use MCP to AGI-pill your hiring workflow with tool-calling agents. Use the REST API when you are building apps, dashboards, ATS handoffs, or internal integrations on top of the same hiring intelligence.

MCP

Agent workflow surface

Let copilots and internal agents call role-plan, target-map, interview-loop, and calibration tools directly while preserving the same hiring bar.

REST API

App and integration surface

Use bearer-token JSON endpoints for product UIs, ATS workflows, data syncs, dashboards, and automations that need normal HTTP contracts.

MCP endpoint

Remote MCP endpoint

The MCP contract is exposed at https://hireburst.com/api/mcp. Remote clients should treat it as an OAuth-protected MCP 2.1 resource. Server-side MCP clients can mirror the same tool calls at https://hireburst.com/api/mcp/bearer with a bearer token.

POST https://hireburst.com/api/mcp Authorization: Bearer <oauth_access_token> Content-Type: application/json Resource metadata: https://hireburst.com/.well-known/oauth-protected-resource/api/mcp
{
  "jsonrpc": "2.0",
  "id": "hb-init-01",
  "method": "initialize",
  "params": {
    "protocolVersion": "2.1",
    "clientInfo": {
      "name": "your-agent",
      "version": "1.0.0"
    }
  }
}
MCP tools

Supported tool contract

The MCP surface exposes the same product capabilities as REST, but as callable tools for agent runtimes that need to reason, call, observe, and adapt inside a workflow.

hireburst.role_plan.create Create a role plan with target thesis, interview loop, scorecard, and learning loop.
hireburst.role_plan.get Retrieve a generated role plan and its latest targeting, interview, and calibration state.
hireburst.target_map.create Map candidate archetypes, adjacent markets, source channels, and outreach priorities.
hireburst.interview_loop.design Design structured rounds, evidence prompts, and scorecard anchors.
hireburst.calibration.update Update the next targeting and interview move from new interview evidence without changing the bar.
Example

MCP role-plan call

Use MCP when an agent should decide the next hiring move, call hireburst tools, and feed the output into another agent or human review step.

{
  "jsonrpc": "2.0",
  "id": "hb-call-42",
  "method": "tools/call",
  "params": {
    "name": "hireburst.role_plan.create",
    "arguments": {
      "company": "BlockHome AI",
      "role": "Account Manager",
      "team_size": 34,
      "growth_goal": "scale customer organization before enterprise expansion",
      "must_have_signals": [
        "real estate workflow fluency",
        "adoption-risk saves",
        "expansion judgment",
        "product feedback synthesis"
      ]
    }
  }
}
Current response

MCP authorization failures

The MCP endpoint currently fails closed. Expect 401 Unauthorized, a WWW-Authenticate header, and a JSON-RPC error payload.

HTTP/1.1 401 Unauthorized
WWW-Authenticate: Bearer realm="hireburst-mcp",
  error="invalid_token",
  resource_metadata="https://hireburst.com/.well-known/oauth-protected-resource/api/mcp"
{
  "jsonrpc": "2.0",
  "id": "hb-call-42",
  "error": {
    "code": -32001,
    "message": "Authorization failed",
    "data": {
      "mcp_version": "2.1",
      "authorization": "oauth"
    }
  }
}
REST API

REST exposes the same hiring system without MCP.

Use REST when you are building a product integration: ATS syncs, internal recruiting dashboards, custom approval flows, BI pipelines, or an app that needs normal HTTP resources. REST uses bearer API keys generated at hireburst.com/manage/api-keys.

Base URL: https://hireburst.com Authorization: Bearer hb_live_... Content-Type: application/json
{
  "surface": "rest",
  "same_capabilities_as": "mcp",
  "resources": [
    "role_plan",
    "target_map",
    "interview_loop",
    "calibration_update"
  ]
}
Bearer tokens

REST authorization

REST requests use bearer API keys and do not use MCP envelopes, JSON-RPC IDs, or MCP method names. Missing, expired, or incorrect tokens receive 401 as invalid API tokens.

POST /api/role_plan/ HTTP/1.1
Host: hireburst.com
Authorization: Bearer hb_live_...
Content-Type: application/json
Resources

REST endpoint map

The REST API is resource-oriented. Create a plan, retrieve it later, list submitted requests with cursor pagination, and generate the supporting target map, interview loop, and calibration update as separate artifacts.

POST /api/role_plan/Create a role plan from company, role, team size, growth goal, constraints, and must-have signals.
GET /api/role_plan/:idRetrieve the role plan, target thesis, scorecard anchors, latest interview loop, and calibration state.
GET /api/role_plan/submissionsList submitted role-plan requests with cursor pagination and optional status filters.
POST /api/target_map/Create candidate archetypes, adjacent markets, sourcing channels, exclusion rules, and outreach priorities.
GET /api/target_map/:idRetrieve a target map and the market assumptions that produced it.
POST /api/interview_loop/Create rounds, question paths, evidence prompts, scorecard anchors, and debrief structure.
GET /api/interview_loop/:idRetrieve an interview loop tied to a role plan or target map.
POST /api/calibration_update/Submit interview evidence and receive the next targeting, question, and calibration move.
GET /api/calibration_update/:idRetrieve a specific calibration update and the evidence it used.
Role plans

Role plan endpoints

Role plans are the main hiring artifact. They define the target thesis, must-have signals, interview loop, scorecard anchors, and the learning state that later calibration updates preserve.

POST /api/role_plan/

Create a role plan from the hiring context your app collected.

Request body

NameTypeRequiredDescription
companystringyesCompany or business unit hiring the role.
rolestringyesRole title, such as Account Manager.
team_sizeintegeryesCurrent employee count or target team size context.
growth_goalstringyesThe business outcome the hire must unlock.
must_have_signalsstring[]yesEvidence signals that should drive targeting and interview scoring.
marketstringnoIndustry or buyer context for role-specific calibration.
constraintsobjectnoLocation, seniority, domain, compensation, or exclusion constraints.
external_idstringnoYour ATS, CRM, or internal requisition identifier.
callback_urlstringnoHTTPS webhook to notify when the generated plan is ready.

Expected response

{
  "object": "role_plan",
  "id": "rp_01jz9d4v8k",
  "status": "ready",
  "created_at": "2026-07-07T19:20:00Z",
  "company": "BlockHome AI",
  "role": "Account Manager",
  "target_map_id": "tm_01jz9d7a2r",
  "interview_loop_id": "il_01jz9d9b4p",
  "plan": {
    "target_thesis": "string",
    "must_have_signals": ["string"],
    "scorecard_anchors": [
      {
        "name": "string",
        "evidence": "string",
        "weight": 0.25
      }
    ],
    "calibration_state": {
      "consistency_lock": "string",
      "last_updated_at": "2026-07-07T19:20:00Z"
    }
  }
}
GET /api/role_plan/:id

Retrieve a generated role plan and optionally expand its related artifacts.

Path and query params

NameTypeRequiredDescription
idstringyesRole plan id beginning with rp_.
includestring[]noComma-separated expansions: target_map, interview_loop, calibration_updates.

Expected response

{
  "object": "role_plan",
  "id": "rp_01jz9d4v8k",
  "status": "ready",
  "company": "BlockHome AI",
  "role": "Account Manager",
  "target_map": {
    "object": "target_map",
    "id": "tm_01jz9d7a2r"
  },
  "interview_loop": {
    "object": "interview_loop",
    "id": "il_01jz9d9b4p"
  },
  "latest_calibration_update_id": "cu_01jz9ef8wq"
}
Pagination

Role-plan submissions

Submission lists use cursors instead of page numbers so integrations can resume safely as new hiring requests arrive.

GET /api/role_plan/submissions

List submitted role-plan requests for dashboards, intake queues, and sync jobs.

NameTypeRequiredDescription
limitintegernoNumber of results, from 1 to 100. Default 25.
cursorstringnoOpaque cursor returned in the previous page.
statusenumnosubmitted, processing, ready, or archived.
created_afterdatetimenoISO 8601 lower bound for submitted requests.
created_beforedatetimenoISO 8601 upper bound for submitted requests.
GET /api/role_plan/submissions?limit=25&cursor=sub_01jz9a9c3z&status=submitted HTTP/1.1
Host: hireburst.com
Authorization: Bearer hb_live_...

Expected response

{
  "object": "list",
  "data": [
    {
      "id": "rps_01jz9b2d4a",
      "role": "Account Manager",
      "company": "BlockHome AI",
      "status": "submitted",
      "created_at": "2026-07-07T18:40:00Z"
    }
  ],
  "pagination": {
    "next_cursor": "sub_01jz9c8nr4",
    "has_more": true,
    "limit": 25
  }
}
Target maps

Target map endpoints

Target maps translate the role plan into candidate archetypes, adjacent markets, source channels, exclusion rules, and outreach priorities.

POST /api/target_map/

Create or refresh a target map for an existing role plan.

Request body

NameTypeRequiredDescription
role_plan_idstringyesRole plan id beginning with rp_.
regionsstring[]noAllowed talent markets, time zones, or countries.
channelsstring[]noPreferred sourcing channels such as referrals, LinkedIn, ATS, or communities.
excluded_companiesstring[]noCompanies or categories to avoid.
archetype_countintegernoTarget number of archetypes. Default 4.

Expected response

{
  "object": "target_map",
  "id": "tm_01jz9d7a2r",
  "role_plan_id": "rp_01jz9d4v8k",
  "archetypes": [
    {
      "name": "Expansion-minded real estate AM",
      "signals": ["string"],
      "source_markets": ["string"],
      "avoid_signals": ["string"]
    }
  ],
  "channels": [
    {
      "name": "LinkedIn outbound",
      "priority": 1,
      "message_angle": "string"
    }
  ],
  "assumptions": ["string"]
}
GET /api/target_map/:id

Retrieve a target map and its source assumptions.

Path and query params

NameTypeRequiredDescription
idstringyesTarget map id beginning with tm_.
includestring[]noComma-separated expansions: role_plan, outreach.

Expected response

{
  "object": "target_map",
  "id": "tm_01jz9d7a2r",
  "role_plan_id": "rp_01jz9d4v8k",
  "status": "ready",
  "archetypes": [
    {
      "name": "string",
      "signals": ["string"]
    }
  ],
  "updated_at": "2026-07-07T19:24:00Z"
}
Interview loops

Interview loop endpoints

Interview loops turn the role plan and target map into rounds, evidence prompts, scorecard anchors, interviewer guidance, and debrief structure.

POST /api/interview_loop/

Create an interview loop tied to a role plan.

Request body

NameTypeRequiredDescription
role_plan_idstringyesRole plan id beginning with rp_.
target_map_idstringnoTarget map id to shape interview evidence prompts.
round_countintegernoRequested number of rounds. Default 4.
competenciesstring[]noCompetencies to emphasize or preserve.
debrief_modeenumnoasync, live, or panel.

Expected response

{
  "object": "interview_loop",
  "id": "il_01jz9d9b4p",
  "role_plan_id": "rp_01jz9d4v8k",
  "rounds": [
    {
      "name": "Customer expansion judgment",
      "duration_minutes": 45,
      "purpose": "string",
      "questions": ["string"],
      "scorecard_anchors": ["string"]
    }
  ],
  "debrief": {
    "mode": "async",
    "decision_rules": ["string"]
  }
}
GET /api/interview_loop/:id

Retrieve an interview loop and its round-by-round scorecard.

Path and query params

NameTypeRequiredDescription
idstringyesInterview loop id beginning with il_.
includestring[]noComma-separated expansions: role_plan, target_map.

Expected response

{
  "object": "interview_loop",
  "id": "il_01jz9d9b4p",
  "role_plan_id": "rp_01jz9d4v8k",
  "status": "ready",
  "rounds": [
    {
      "name": "string",
      "questions": ["string"]
    }
  ],
  "updated_at": "2026-07-07T19:26:00Z"
}
Calibration

Calibration update endpoints

Calibration updates let hireburst adjust targeting and interviewing after each interview while preserving the same bar across candidates and interviewers.

POST /api/calibration_update/

Submit interview evidence and receive the next hiring-system adjustment.

Request body

NameTypeRequiredDescription
role_plan_idstringyesRole plan id beginning with rp_.
interview_loop_idstringyesInterview loop id beginning with il_.
interview_evidenceobject[]yesRound, signal, evidence, score, and interviewer notes from a completed interview.
candidate_profileobjectnoCandidate source, archetype, seniority, or anonymized background context.
outcomeenumnoadvance, hold, reject, or hire.

Expected response

{
  "object": "calibration_update",
  "id": "cu_01jz9ef8wq",
  "role_plan_id": "rp_01jz9d4v8k",
  "interview_loop_id": "il_01jz9d9b4p",
  "recommended_changes": {
    "targeting": ["string"],
    "questions": ["string"],
    "scorecard": ["string"],
    "consistency_lock": "do_not_lower_bar"
  },
  "next_actions": [
    {
      "owner": "recruiting",
      "action": "string"
    }
  ]
}
GET /api/calibration_update/:id

Retrieve a calibration update and the evidence summary it used.

Path and query params

NameTypeRequiredDescription
idstringyesCalibration update id beginning with cu_.
includestring[]noComma-separated expansions: evidence, role_plan, interview_loop.

Expected response

{
  "object": "calibration_update",
  "id": "cu_01jz9ef8wq",
  "role_plan_id": "rp_01jz9d4v8k",
  "interview_loop_id": "il_01jz9d9b4p",
  "evidence_summary": "string",
  "recommended_changes": {
    "targeting": ["string"],
    "questions": ["string"],
    "scorecard": ["string"]
  },
  "created_at": "2026-07-07T19:30:00Z"
}
Schemas

Shared object types

These object shapes repeat across endpoint responses so client libraries can share models across REST and MCP tool results.

RolePlan

id: string, status: enum, company: string, role: string, plan: object, target_map_id?: string, interview_loop_id?: string.

TargetMap

id: string, role_plan_id: string, archetypes: object[], channels: object[], assumptions: string[].

InterviewLoop

id: string, role_plan_id: string, rounds: object[], debrief: object, created_at: datetime.

CalibrationUpdate

id: string, role_plan_id: string, interview_loop_id: string, recommended_changes: object, next_actions: object[].

Current response

REST authorization failures

The REST endpoints also fail closed. They return normal JSON errors instead of JSON-RPC envelopes.

{
  "error": {
    "type": "authorization_error",
    "code": "invalid_token",
    "message": "Invalid API token."
  }
}