Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.
get_api_artifactsOne API's artifacts, grouped by type.
get_openapiThe primary OpenAPI for this API.
find_similar_apisAPIs that look like this one.
apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
resolveTurn a domain, URL or GitHub org into the provider it belongs to.
find_cohortsEvery scored population of providers in the catalog.
All 92 tools →
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/backworkhealth-com:backworkhealth-com-agent-tools-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Backworkhealth Com Agent Tools API
version: 1.0.0
contact:
email: support@backworkhealth.com
url: https://backworkhealth.com
license:
name: Proprietary
url: https://backworkhealth.com/terms
description: 'Operations tagged Agent Tools across 2 of this provider''s published API definitions: backworkhealth-com-openapi.json, backworkhealth-com-v1-openapi.json. Each path carries the servers of the definition it was published in.'
servers:
- url: https://backworkhealth.com/api/v1
description: Production server
- url: http://localhost:3000/api/v1
description: Local development
security:
- bearerAuth: []
tags:
- name: Agent Tools
description: Machine-readable tool manifest and controlled agent invocation
paths:
/agent/tools:
get:
tags:
- Agent Tools
summary: List agent tools
description: Returns the machine-readable tool catalog for controlled agent access, including input and output schemas, required scopes, approval posture, and whether the authenticated key can invoke each tool. Requires agent tool access and the `read` scope.
operationId: listAgentTools
responses:
'200':
description: Agent tool manifest
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/AgentToolManifest'
meta:
$ref: '#/components/schemas/ResponseMeta'
required:
- success
- data
- meta
'401':
description: 'Error: `AUTH_MISSING`, `AUTH_INVALID_FORMAT`, `AUTH_INVALID_TOKEN`, `AUTH_KEY_NOT_FOUND`, `AUTH_KEY_REVOKED`, `AUTH_KEY_SUSPENDED`, `AUTH_TEST_KEY_SANDBOX_ONLY`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: AUTH_MISSING
message: Missing Authorization header
hint: 'Include "Authorization: Bearer bwk_xxx" header'
docUrl: https://backworkhealth.com/docs/errors#auth-missing
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'402':
description: 'Error: `BILLING_CREDITS_EXHAUSTED`, plan-gate denial'
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ErrorResponse'
- $ref: '#/components/schemas/GateDenialResponse'
example:
success: false
error:
code: BILLING_CREDITS_EXHAUSTED
message: Your organization has no request credits left for this call
hint: details.requests_required is this call's cost and details.requests_available is the balance. Retry once the balance covers the call. An organization admin can manage the plan and usage in the Backwork dashboard at https://backworkhealth.com/api-usage
docUrl: https://backworkhealth.com/docs/errors#billing-credits-exhausted
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'403':
description: 'Error: `AUTHZ_SCOPE_REQUIRED`, `AUTHZ_ORIGIN_NOT_ALLOWED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: AUTHZ_SCOPE_REQUIRED
message: Insufficient permissions for this operation
hint: details.required_scopes lists the scopes this operation accepts
docUrl: https://backworkhealth.com/docs/errors#authz-scope-required
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'429':
description: 'Error: `RATE_LIMIT_EXCEEDED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: RATE_LIMIT_EXCEEDED
message: Rate limit exceeded
hint: Wait the number of seconds in the Retry-After header, then retry
docUrl: https://backworkhealth.com/docs/errors#rate-limit-exceeded
retryable: true
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'500':
description: 'Error: `SERVER_INTERNAL_ERROR`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: SERVER_INTERNAL_ERROR
message: Internal server error
hint: Contact support@backworkhealth.com with the request_id from this response
docUrl: https://backworkhealth.com/docs/errors#server-internal-error
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
servers:
- url: https://backworkhealth.com/api/v1
description: Production server
- url: http://localhost:3000/api/v1
description: Local development
/agent/tools/{tool}:
post:
tags:
- Agent Tools
summary: Invoke an agent tool
description: Invokes one high-level Backwork tool through the controlled agent access layer. Use `GET /agent/tools` first to fetch the exact input schema for each tool. Read tools accept `read`, `admin`, `agent:tool:*`, or the tool-specific `agent:tool:` scope; write tools require `write`, `admin`, `agent:tool:*`, or the tool-specific scope. A key that holds any `agent:tool:` scope is limited to its agent scopes. `acknowledge_policy_change` also requires a plan with compliance dashboard access. Requests containing patient-identifying field names are rejected with `PHI_NOT_ALLOWED`.
operationId: invokeAgentTool
parameters:
- name: tool
in: path
description: Agent tool ID
required: true
schema:
type: string
enum:
- check_coverage
- validate_claim
- find_policies
- check_updates
- acknowledge_policy_change
- name: X-Backwork-Agent
in: header
description: Optional agent name recorded in the invocation ledger. Must not contain PHI.
required: false
schema:
type: string
maxLength: 120
- name: X-Backwork-Approval
in: header
description: Set to `reviewed` only after authorized review for tools that return approval_required=true.
required: false
schema:
type: string
const: reviewed
requestBody:
required: true
content:
application/json:
schema:
anyOf:
- $ref: '#/components/schemas/AgentCheckCoverageInput'
- $ref: '#/components/schemas/AgentValidateClaimInput'
- $ref: '#/components/schemas/AgentFindPoliciesInput'
- $ref: '#/components/schemas/AgentCheckUpdatesInput'
- $ref: '#/components/schemas/AgentAcknowledgePolicyChangeInput'
description: Tool-specific input. Fetch /agent/tools for the exact JSON schema for each tool.
responses:
'200':
description: Tool result
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
const: true
data:
type: object
propertyNames:
type: string
additionalProperties: {}
description: Tool-specific result payload. Its JSON Schema is the tool's `output_schema` in GET /agent/tools; every result includes a `provenance` block.
meta:
$ref: '#/components/schemas/AgentToolInvocationMeta'
required:
- success
- data
- meta
'202':
description: Approval is required before the write tool executes
content:
application/json:
schema:
type: object
properties:
success:
type: boolean
const: true
data:
$ref: '#/components/schemas/AgentToolApprovalRequired'
meta:
$ref: '#/components/schemas/AgentToolInvocationMeta'
required:
- success
- data
- meta
'400':
description: 'Error: `PHI_NOT_ALLOWED`, `VALIDATION_INVALID_JSON`, `VALIDATION_ERROR`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: PHI_NOT_ALLOWED
message: PHI/ePHI is not allowed for this endpoint
hint: Remove patient identifiers and submit only rule-level coverage inputs
docUrl: https://backworkhealth.com/docs/errors#phi-not-allowed
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'401':
description: 'Error: `AUTH_MISSING`, `AUTH_INVALID_FORMAT`, `AUTH_INVALID_TOKEN`, `AUTH_KEY_NOT_FOUND`, `AUTH_KEY_REVOKED`, `AUTH_KEY_SUSPENDED`, `AUTH_TEST_KEY_SANDBOX_ONLY`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: AUTH_MISSING
message: Missing Authorization header
hint: 'Include "Authorization: Bearer bwk_xxx" header'
docUrl: https://backworkhealth.com/docs/errors#auth-missing
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'402':
description: 'Error: `BILLING_FEATURE_REQUIRED`, `BILLING_CREDITS_EXHAUSTED`, plan-gate denial'
content:
application/json:
schema:
oneOf:
- $ref: '#/components/schemas/ErrorResponse'
- $ref: '#/components/schemas/GateDenialResponse'
example:
success: false
error:
code: BILLING_FEATURE_REQUIRED
message: This organization's API access does not include this feature
hint: An organization admin can manage the plan and usage in the Backwork dashboard at https://backworkhealth.com/api-usage
docUrl: https://backworkhealth.com/docs/errors#billing-feature-required
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'403':
description: 'Error: `AUTHZ_SCOPE_REQUIRED`, `AUTHZ_ORIGIN_NOT_ALLOWED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: AUTHZ_SCOPE_REQUIRED
message: Insufficient permissions for this operation
hint: details.required_scopes lists the scopes this operation accepts
docUrl: https://backworkhealth.com/docs/errors#authz-scope-required
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'409':
description: 'Error: `REQUEST_IDEMPOTENCY_CONFLICT`, `REQUEST_IDEMPOTENCY_IN_PROGRESS`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: REQUEST_IDEMPOTENCY_CONFLICT
message: Idempotency key conflict
hint: Use a new idempotency key for a request with a different body
docUrl: https://backworkhealth.com/docs/errors#request-idempotency-conflict
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'429':
description: 'Error: `RATE_LIMIT_EXCEEDED`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: RATE_LIMIT_EXCEEDED
message: Rate limit exceeded
hint: Wait the number of seconds in the Retry-After header, then retry
docUrl: https://backworkhealth.com/docs/errors#rate-limit-exceeded
retryable: true
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'500':
description: 'Error: `SERVER_INTERNAL_ERROR`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: SERVER_INTERNAL_ERROR
message: Internal server error
hint: Contact support@backworkhealth.com with the request_id from this response
docUrl: https://backworkhealth.com/docs/errors#server-internal-error
retryable: false
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
'503':
description: 'Error: `SERVER_IDEMPOTENCY_UNAVAILABLE`'
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
success: false
error:
code: SERVER_IDEMPOTENCY_UNAVAILABLE
message: Idempotency service temporarily unavailable; the request was not executed
hint: Retry the same request with the same idempotency key
docUrl: https://backworkhealth.com/docs/errors#server-idempotency-unavailable
retryable: true
meta:
request_id: req_abc123
timestamp: '2024-01-15T10:30:00Z'
servers:
- url: https://backworkhealth.com/api/v1
description: Production server
- url: http://localhost:3000/api/v1
description: Local development
components:
schemas:
AgentAcknowledgePolicyChangeInput:
type: object
properties:
diff_id:
type: integer
exclusiveMinimum: 0
notes:
type: string
maxLength: 500
response_format:
default: concise
description: Use concise for normal agent reasoning; use detailed only when the agent needs IDs, source metadata, or audit evidence.
type: string
enum:
- concise
- detailed
required:
- diff_id
additionalProperties: false
AgentCheckUpdatesInput:
type: object
properties:
codes:
maxItems: 20
type: array
items:
type: string
pattern: ^[A-Za-z0-9.-]{2,20}$
days_back:
default: 30
type: integer
minimum: 1
maximum: 90
limit:
default: 10
type: integer
minimum: 1
maximum: 25
offset:
default: 0
type: integer
minimum: 0
maximum: 1000
response_format:
default: concise
description: Use concise for normal agent reasoning; use detailed only when the agent needs IDs, source metadata, or audit evidence.
type: string
enum:
- concise
- detailed
additionalProperties: false
JsonArray:
type: array
items:
$ref: '#/components/schemas/JsonValue'
ErrorResponse:
type: object
properties:
success:
type: boolean
const: false
error:
type: object
properties:
code:
$ref: '#/components/schemas/ApiErrorCode'
message:
type: string
description: Human-readable error message
hint:
description: Suggestion for resolving the error
type: string
docUrl:
description: Link to error documentation
type: string
format: uri
retryable:
type: boolean
description: Whether repeating the identical request later can succeed
details:
description: Additional error details
$ref: '#/components/schemas/JsonValue'
required:
- code
- message
- retryable
meta:
$ref: '#/components/schemas/ResponseMeta'
required:
- success
- error
- meta
AgentValidateClaimInput:
type: object
properties:
payer:
type: string
minLength: 1
maxLength: 100
pattern: ^[A-Za-z0-9 &'().,/-]+$
plan_type:
type: string
enum:
- commercial
- medicare_advantage
- medicaid
- traditional_medicare
- exchange
line_of_business:
type: string
minLength: 1
maxLength: 100
pattern: ^[A-Za-z0-9 &'().,/-]+$
procedure_codes:
minItems: 1
maxItems: 10
type: array
items:
type: string
pattern: ^(?:\d{5}|[A-Za-z]\d{4})$
diagnosis_codes:
maxItems: 20
type: array
items:
type: string
pattern: ^[A-Za-z][0-9][A-Za-z0-9](?:\.?[A-Za-z0-9]{0,4})?$
modifiers:
maxItems: 5
type: array
items:
type: string
pattern: ^[A-Za-z0-9]{2}$
state:
type: string
pattern: ^[A-Za-z]{2}$
date_of_service:
type: string
site_of_service:
type: string
enum:
- office
- outpatient_hospital
- asc
- inpatient
- home
- telehealth
provider_specialty:
type: string
minLength: 1
maxLength: 100
pattern: ^[A-Za-z0-9 &'().,/-]+$
age_category:
type: string
enum:
- pediatric
- adult
- medicare_age
sex_when_policy_relevant:
type: string
enum:
- female
- male
- other
- unknown
response_format:
default: concise
description: Use concise for normal agent reasoning; use detailed only when the agent needs IDs, source metadata, or audit evidence.
type: string
enum:
- concise
- detailed
required:
- procedure_codes
additionalProperties: false
AgentToolManifest:
type: object
properties:
version:
type: string
posture:
type: string
auth:
type: object
properties:
scheme:
type: string
const: bearer
header:
type: string
scopes:
type: object
properties:
read_fallback:
type: string
write_fallback:
type: string
agent_specific:
type: string
agent_wildcard:
type: string
required:
- read_fallback
- write_fallback
- agent_specific
- agent_wildcard
write_approval:
type: string
required:
- scheme
- header
- scopes
- write_approval
no_phi_boundary:
type: string
tools:
type: array
items:
$ref: '#/components/schemas/AgentTool'
required:
- version
- posture
- auth
- no_phi_boundary
- tools
AgentToolApprovalRequired:
type: object
properties:
approval_required:
type: boolean
const: true
approval_status:
type: string
const: required
tool:
type: string
enum:
- check_coverage
- validate_claim
- find_policies
- check_updates
- acknowledge_policy_change
required_header:
type: string
const: 'X-Backwork-Approval: reviewed'
next_action:
type: string
required:
- approval_required
- approval_status
- tool
- required_header
- next_action
ResponseMeta:
type: object
properties:
request_id:
type: string
description: Unique request identifier for tracing
timestamp:
type: string
format: date-time
description: Response timestamp
required:
- request_id
- timestamp
ApiErrorCode:
type: string
enum:
- AUTH_MISSING
- AUTH_INVALID_FORMAT
- AUTH_INVALID_KEY_FORMAT
- AUTH_INVALID_TOKEN
- AUTH_KEY_NOT_FOUND
- AUTH_KEY_REVOKED
- AUTH_KEY_SUSPENDED
- AUTH_KEY_EXPIRED
- AUTH_SANDBOX_TEST_KEY_REQUIRED
- AUTH_TEST_KEY_SANDBOX_ONLY
- AUTHZ_SCOPE_REQUIRED
- AUTHZ_IP_NOT_ALLOWED
- AUTHZ_ORIGIN_NOT_ALLOWED
- BILLING_FEATURE_REQUIRED
- BILLING_CREDITS_EXHAUSTED
- RATE_LIMIT_EXCEEDED
- RATE_QUOTA_EXCEEDED
- RATE_CONCURRENT_EXCEEDED
- VALIDATION_ERROR
- VALIDATION_INVALID_JSON
- VALIDATION_REQUIRED_FIELD
- VALIDATION_OUT_OF_RANGE
- VALIDATION_INVALID_FORMAT
- PHI_NOT_ALLOWED
- RESOURCE_NOT_FOUND
- RESOURCE_POLICY_NOT_FOUND
- RESOURCE_CODE_NOT_FOUND
- RESOURCE_JURISDICTION_NOT_FOUND
- RESOURCE_PAYER_NOT_FOUND
- RESOURCE_RELEASE_NOT_AVAILABLE
- REQUEST_INVALID_CURSOR
- REQUEST_IDEMPOTENCY_CONFLICT
- REQUEST_IDEMPOTENCY_IN_PROGRESS
- REQUEST_UNSUPPORTED_CONTENT_TYPE
- REQUEST_FORMAT_NOT_ACCEPTABLE
- SERVER_INTERNAL_ERROR
- SERVER_DATABASE_ERROR
- SERVER_SEARCH_UNAVAILABLE
- SERVER_TIMEOUT
- SERVER_UNAVAILABLE
- SERVER_IDEMPOTENCY_UNAVAILABLE
- SERVER_UPSTREAM_UNAVAILABLE
- COMMERCIAL_SURFACE_UNAVAILABLE
description: Machine-readable error code
GateDenialResponse:
type: object
properties:
success:
type: boolean
const: false
error:
type: object
properties:
code:
type: string
enum:
- INVALID_API_KEY
- SUBSCRIPTION_INACTIVE
- FEATURE_NOT_AVAILABLE
- USAGE_LIMIT_EXCEEDED
- DAILY_LIMIT_EXCEEDED
message:
type: string
description: Which limit or feature check failed, when it resets, and who can manage the plan
required:
- code
- message
meta:
$ref: '#/components/schemas/ResponseMeta'
required:
- success
- error
- meta
description: The plan does not include this feature or its usage is exhausted.
JsonValue:
anyOf:
- type: string
- type: number
- type: boolean
- type: 'null'
- $ref: '#/components/schemas/JsonArray'
- $ref: '#/components/schemas/JsonObject'
description: Any JSON value.
AgentToolInvocationMeta:
type: object
properties:
request_id:
type: string
description: Unique request identifier for tracing
timestamp:
type: string
format: date-time
description: Response timestamp
tool:
type: string
enum:
- check_coverage
- validate_claim
- find_policies
- check_updates
- acknowledge_policy_change
actor_type:
type: string
enum:
- api_client
- agent
- human
- system
actor_name:
type: string
approval_status:
type: string
enum:
- not_required
- required
- approved
- rejected
required:
- request_id
- timestamp
- tool
- actor_type
- actor_name
- approval_status
JsonObject:
type: object
propertyNames:
type: string
additionalProperties:
$ref: '#/components/schemas/JsonValue'
AgentTool:
type: object
properties:
id:
type: string
name:
type: string
description: MCP-style alias for id.
title:
type: string
description:
type: string
access:
type: string
enum:
- read
- write
scope:
type: string
description: Tool-specific scope, `agent:tool:<tool_id>`
approval_required:
type: boolean
description: 'When true, invocation returns 202 until retried with `X-Backwork-Approval: reviewed`.'
billable_units:
type: integer
annotations:
type: object
properties:
readOnlyHint:
type: boolean
destructiveHint:
type: boolean
idempotentHint:
type: boolean
openWorldHint:
type: boolean
required:
- readOnlyHint
- destructiveHint
- idempotentHint
- openWorldHint
description: Tool-use hints for MCP-style clients.
endpoint:
type: string
method:
type: string
const: POST
input_schema:
type: object
properties:
type:
type: string
required:
- type
additionalProperties: {}
description: JSON Schema for the tool's request body
inputSchema:
type: object
properties:
type:
type: string
required:
- type
additionalProperties: {}
description: MCP-style alias for input_schema
output_schema:
type: object
properties:
type:
type: string
const: object
required:
- type
additionalProperties: {}
description: JSON Schema (draft 2020-12) for the tool's result `data`. Every result carries a `provenance` block with source URLs, retrieval time, effective date, and issuing authority.
outputSchema:
type: object
properties:
type:
type: string
const: object
required:
- type
additionalProperties: {}
description: MCP-style alias for output_schema
allowed:
description: Whether the authenticated key can invoke this tool
type: boolean
required:
- id
- name
- title
- description
- access
- scope
- approval_required
- billable_units
- annotations
- endpoint
- method
- input_schema
- inputSchema
- output_schema
- outputSchema
AgentCheckCoverageInput:
type: object
properties:
code:
type: string
pattern: ^[A-Za-z0-9.-]{2,20}$
description: CPT, HCPCS, ICD-10-CM, or ICD-10-PCS code
state:
type: string
pattern: ^[A-Za-z]{2}$
response_format:
default: concise
description: Use concise for normal agent reasoning; use detailed only when the agent needs IDs, source metadata, or audit evidence.
type: string
enum:
- concise
- detailed
required:
- code
additionalProperties: false
AgentFindPoliciesInput:
type: object
properties:
search_query:
type: string
minLength: 1
maxLength: 500
description: Coverage policy search phrase, e.g. 'continuous glucose monitor' or 'L33822 oxygen'.
policy_id:
type: string
minLength: 1
maxLength: 256
limit:
default: 10
type: integer
minimum: 1
maximum: 20
offset:
default: 0
type: integer
minimum: 0
maximum: 1000
response_format:
default: concise
description: Use concise for normal agent reasoning; use detailed only when the agent needs IDs, source metadata, or audit evidence.
type: string
enum:
- concise
- detailed
additionalProperties: false
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: API Key
description: 'API key in format: bwk_live_xxxxx. Keys issued before the rename (vrt_live_) remain valid. bwk_test_ keys work only on the sandbox.'
x-refined-from:
- backworkhealth-com-openapi.json
- backworkhealth-com-v1-openapi.json