JSON:API v1.0 · HighBond · ERM Service · Enterprise Risk Management

Diligent ERM,
composed by an agent.

118 tools across three API surfaces plus a harmonization layer. Model the risk-and-control universe, configure workflows, populate instance data, run Risk Manager CRUD on risks / controls / assessments / mitigation plans / workshops, and surface one canonical inventory view across ERM Service + HighBond — all from one agent conversation, through one protocol.

118
MCP Tools
5 meta · 54 config · 18 data · 29 service · 9 inventory · 3 cache/UI
3
API Surfaces
HighBond + ERM Service
9
Data Types
text, select, userLookup & more
1
Bearer Token
Same auth as Diligent Projects
$
curl -fsSL https://mcp-erm.riskapture.ai/install.sh | bash
Installs to ~/.local/share/diligent-erm-mcp Node.js 20+, no sudo Re-run to update
Architecture

Three surfaces, one conversation.

The server is designed so an LLM can navigate it without memorizing tool names. A configuration layer models the schema; a data layer fills in instances; a dedicated Risk Manager service layer handles risks, controls, assessments, mitigation plans, and workshops with proper PATCH support. All three share the same bearer token as the Diligent Projects MCP — one credential, three API surfaces.

Meta & control plane

Health check, session metrics, capability discovery, auto-pagination. The agent learns what it has before it guesses.

Configuration layer

CRUD for asset types, record types, attribute types, workflows, statuses, events, handlers, and status-event mappings. The full schema surface.

Data layer

Create, read, update, delete asset and record instances. Stitch relationships between risks, controls, objectives, assessments, and mitigations.

Rate-limited client

Token-bucket rate limiter (600 req/hr, 6 req/sec), exponential backoff retry, structured error classification, and per-call observability metrics.

Atomic section tools

Add, remove, rename sections and place attributes in them via single tool calls. The client handles GET-modify-PATCH cycles transparently.

Bulk import

Load thousands of assets and records via /import/data with automatic session polling — the tool waits for completion and returns a structured result.

What you can do

Capabilities overview.

Schema Design

Model your risk taxonomy: create asset types (Risk, Control, Objective, Process), attribute types (9 data types), and record types (Assessments, Mitigations).

Workflow Modelling

Define state machines: workflows, statuses, transitions (events), side-effects (handlers), and status-event mappings. Full CRUD.

UI Layout

Organise attributes into named sections on asset and record types — the configuration drives how the ERM UI renders the record.

Instance Data

Create individual risks, controls, objectives, assessments, and mitigations — or bulk-import thousands at once via /import/data.

Relationships

Link risks to the controls that mitigate them, objectives to the risks they track, and records to their parent assets.

Bulk Operations

Stream large loads through the bulk import endpoint; the tool waits for the import session to complete and returns per-reference success/error detail.

Tool Reference

All tools.

Meta & Control Plane (5)
ToolDescription
erm_health_checkAPI connectivity, response time, session metrics
erm_get_session_metricsCall counts, errors, retries, average duration
erm_reset_session_metricsReset counters for a new job
erm_list_capabilitiesTool inventory by category with descriptions
erm_query_allAuto-paginate any JSON:API resource collection
ERM Configuration — Schema

ERM Config tools.

54 tools for managing the Diligent ERM data model: asset types, record types, attribute types, sections, connections, workflows, events, handlers. Uses ERM_API_TOKEN (same bearer token as the Projects MCP).

Schema Overview (1)
ToolDescription
erm_config_get_schemaFull schema: all asset types with sections and resolved attributes
Asset Types (5)
ToolDescription
erm_config_list_asset_typesList all asset types (entity types) with category and workflow
erm_config_get_asset_typeFull detail with sections and attribute items
erm_config_create_asset_typeCreate new asset type MUTATES
erm_config_update_asset_typeRename or update description MUTATES
erm_config_delete_asset_typeDelete asset type DESTRUCTIVE
Record Types (5)
ToolDescription
erm_config_list_record_typesList all record types (assessment, mitigation types)
erm_config_get_record_typeFull detail with sections and attribute items
erm_config_create_record_typeCreate a new record type MUTATES
erm_config_update_record_typeRename or update description / admin notes MUTATES
erm_config_link_record_typeLink record type to parent asset or record type MUTATES
Attribute Types (4)
ToolDescription
erm_config_list_attribute_typesList all field definitions, filter by data_type
erm_config_create_attribute_typeCreate field (text, paragraph, boolean, number, dateTime, select, userLookup, attachment, adHocRelationship) MUTATES
erm_config_update_attribute_typeRename, update tooltip, required flag, or select values MUTATES
erm_config_delete_attribute_typeDelete field definition DESTRUCTIVE
Connections & Sections (14)
ToolDescription
erm_config_connect_attributeConnect attribute to asset type MUTATES
erm_config_disconnect_attributeDisconnect attribute from asset type MUTATES
erm_config_connect_record_attributeConnect attribute to record type MUTATES
erm_config_disconnect_record_attributeDisconnect attribute from record type MUTATES
erm_config_add_sectionAdd a new section to an asset type MUTATES
erm_config_remove_sectionRemove a section from an asset type MUTATES
erm_config_rename_sectionRename a section on an asset type MUTATES
erm_config_add_attribute_to_sectionPlace attribute in an asset type section MUTATES
erm_config_remove_attribute_from_sectionRemove attribute from asset type section MUTATES
erm_config_add_record_type_sectionAdd a new section to a record type MUTATES
erm_config_remove_record_type_sectionRemove a section from a record type MUTATES
erm_config_rename_record_type_sectionRename a section on a record type MUTATES
erm_config_add_attribute_to_record_type_sectionPlace attribute in a record type section MUTATES
erm_config_remove_attribute_from_record_type_sectionRemove attribute from record type section MUTATES
Workflows, Events & Handlers (20)
ToolDescription
erm_config_list_workflowsList all configured workflows
erm_config_get_workflowGet a workflow with its statuses and events
erm_config_create_workflowCreate a new workflow MUTATES
erm_config_update_workflowRename or update a workflow MUTATES
erm_config_delete_workflowDelete a workflow DESTRUCTIVE
erm_config_create_workflow_statusAdd a status to a workflow MUTATES
erm_config_get_statusGet a status with its linked events
erm_config_list_eventsList event definitions
erm_config_get_eventGet an event with its handlers
erm_config_create_eventCreate a new event MUTATES
erm_config_update_eventUpdate event fields MUTATES
erm_config_delete_eventDelete an event DESTRUCTIVE
erm_config_list_handlersList handler definitions
erm_config_get_handlerGet a handler with its events
erm_config_create_handlerCreate a new handler MUTATES
erm_config_update_handlerUpdate handler fields MUTATES
erm_config_delete_handlerDelete a handler DESTRUCTIVE
erm_config_create_status_event_mappingLink an event to a status MUTATES
erm_config_get_status_event_mappingGet a status-event mapping
erm_config_update_status_event_mappingUpdate a status-event mapping MUTATES
erm_config_delete_status_event_mappingDelete a status-event mapping DESTRUCTIVE
ERM Data — Instances

ERM Data tools.

18 tools for creating, updating, and deleting asset / record instances and linking them. Resolve type IDs with the erm_config_* tools first.

Assets (5)
ToolDescription
erm_data_create_assetCreate a risk, control, objective, or process instance MUTATES
erm_data_get_assetGet a single asset instance with all attributes
erm_data_update_assetUpdate fields on an existing asset instance MUTATES
erm_data_delete_assetDelete an asset instance DESTRUCTIVE
erm_data_list_assetsList asset instances of a type — for verification / ID lookup
Records (5)
ToolDescription
erm_data_create_recordCreate an assessment or mitigation (pass parent field to link) MUTATES
erm_data_get_recordGet a single record instance with all attributes
erm_data_update_recordUpdate fields on an existing record instance MUTATES
erm_data_delete_recordDelete a record instance DESTRUCTIVE
erm_data_list_recordsList record instances of a type — for verification / ID lookup
Relationships (7)
ToolDescription
erm_data_list_all_asset_relationshipsList all relationships across all assets of a type
erm_data_get_asset_relationshipsList relationships on a single asset instance
erm_data_create_relationshipLink two assets (Risk↔Control, Objective↔Risk, etc.) MUTATES
erm_data_delete_asset_relationshipRemove a link between two assets DESTRUCTIVE
erm_data_get_record_relationshipsList relationships on a single record instance
erm_data_create_record_relationshipCreate a relationship link on a record instance MUTATES
erm_data_delete_record_relationshipRemove a relationship link from a record instance DESTRUCTIVE
Bulk Import (1)
ToolDescription
erm_data_bulk_importBulk-import assets and records via /import/data; polls until complete MUTATES
ERM Service — Risk Manager CRUD

ERM Service tools.

29 tools hitting erm-service-api.highbond.com/api/v1 — a dedicated Risk Manager API with full PATCH support. Same ERM_API_TOKEN, x-org-id sent as a header instead of path segment. Override the host with ERM_SERVICE_URL.

Schema (2)
ToolDescription
ermapi_get_schemaFull ERM schema for all entity types
ermapi_get_entity_schemaSchema for a specific entity type (risk / control / assessment / mitigation / objective / process)
Risks & Risk Assessments (8)
ToolDescription
ermapi_list_risksList risks from the ERM Risk Register (pagination)
ermapi_get_riskFull risk detail
ermapi_create_riskCreate a new risk MUTATES
ermapi_update_riskUpdate risk — PATCH works here MUTATES
ermapi_list_risk_assessmentsRisk event assessments for a given risk
ermapi_create_risk_assessmentCreate a risk event assessment MUTATES
ermapi_get_assessmentAssessment detail
ermapi_update_assessmentUpdate a risk event assessment MUTATES
Mitigation Plans (4)
ToolDescription
ermapi_list_mitigation_plansMitigation plans for a risk
ermapi_create_mitigation_planCreate mitigation plan MUTATES
ermapi_get_mitigation_planMitigation plan detail
ermapi_update_mitigation_planUpdate mitigation plan MUTATES
Workshops & Assessors (6)
ToolDescription
ermapi_list_workshopsWorkshops for a risk (collaborative assessment sessions)
ermapi_create_workshopCreate a risk workshop MUTATES
ermapi_get_workshopWorkshop detail
ermapi_update_workshopUpdate workshop MUTATES
ermapi_list_workshop_assessorsAssessors assigned to a workshop
ermapi_add_workshop_assessorAdd an assessor to a workshop MUTATES
Controls & Control Assessments (8)
ToolDescription
ermapi_list_controlsList controls from the ERM Control Register
ermapi_get_controlFull control detail
ermapi_create_controlCreate a new control MUTATES
ermapi_update_controlUpdate control — PATCH works here MUTATES
ermapi_list_control_assessmentsAssessments for a control
ermapi_create_control_assessmentCreate a control assessment MUTATES
ermapi_get_control_assessmentControl assessment detail
ermapi_update_control_assessmentUpdate a control assessment MUTATES
Relationships (1)
ToolDescription
ermapi_get_relationshipsList relationships for an entity (risks ↔ controls ↔ objectives ↔ processes)
Configuration

Environment variables.

VariableRequiredDescription
ERM_BASE_URLYesAPI base URL (e.g. https://apis-us.diligentoneplatform.com)
ERM_API_TOKENYesBearer token from Admin Hub > API Access Tokens
ERM_ORG_IDYesOrganisation ID (numeric)
ERM_SERVICE_URLNoERM Service API base (default https://erm-service-api.highbond.com/api/v1)
ERM_LOG_FILENoPath for JSONL request log

Regional base URLs: US, Canada, Europe, Asia, Australia, Africa, Japan.

Constraints

Hard rules.

Resolve Types First
Always call erm_config_list_asset_types / erm_config_list_record_types before creating instance data.
Discover Fields
Call erm_config_get_asset_type + erm_config_get_attribute_type before populating attributes — never guess field names or dropdown values.
DELETE Body
All DELETE requests must include Content-Type: application/vnd.api+json with body {}. Auto-filled by the client.
Select UUIDs
When updating select values, preserve existing UUIDs for unchanged options. New values get auto-assigned UUIDs.
Type Options
dateTime requires is24Hour, attachment requires allowMultipleFiles. Auto-filled by the tool if omitted.
Rate Limits
600 req/hour, 6 req/sec. Token-bucket rate limiter enforced client-side with exponential backoff.
JSON:API v1.0
All requests use application/vnd.api+json. Cursor-based pagination via links.next.
Parent Links Records
Records (assessments, mitigations) attach to their parent asset via a {field_name: "parent", value: {id, object_type_id}} entry in attributes.
Bulk Parent
For erm_data_bulk_import records, the parent attribute uses {field_name: "parent", id: "<asset_id>", object_type_id: "<asset_type_id>"} (no value key).
ermapi: Different Host
All ermapi_* tools hit erm-service-api.highbond.com/api/v1, send x-org-id as a header, use application/json (not vnd.api+json), and paginate with pageSize/pageNumber.
ermapi: Use Schemas
Always call ermapi_get_entity_schema before creating or updating an entity — the ERM Service schema is distinct from the HighBond asset/record schema.
Quick start

Getting started.

1. Install via the one-liner above, or clone from GitHub

2. Set your environment variables (API token from Admin Hub > API Access Tokens)

3. Restart Claude Code: /mcp reset diligent-erm

4. Start with erm_health_check to verify connectivity

5. Run erm_list_capabilities to see all available tools

6. Run erm_config_get_schema to get a full snapshot of the current data model