JSON:API v1.0 · HighBond · PRD Harmonization

Diligent Projects,
composed by an agent.

58 tools across 12 categories. Introspect projects schema, build one canonical view per inventory (Project, Objective, Risk, Control, Walkthrough, Test, Issue, Sign-off, Questionnaire, Response), compare to the Riskapture GRC Brain (read-only), and write back terminology and attribute values. Scoped to classic Projects; does not cover AuditAI.

67
MCP Tools
Classic Projects (HighBond) API
11
Categories
Self-discoverable via meta layer
30+
Knowledge Files
Endpoints, patterns, user journeys
1
Bearer Token
Shared with the ERM MCP
$
curl -fsSL https://mcp-3rdrisk.riskapture.ai/install.sh | bash
Installs to ~/.local/share/diligent-3rdrisk-mcp Node.js 20+, no sudo Re-run to update
Architecture

Three layers, one conversation.

The server is designed so an LLM can navigate it without memorizing tool names. A meta layer describes itself; a harmonization layer handles the complex PRD workflows; a primitive layer exposes every API endpoint.

Meta & control plane

Health check, session metrics, capability discovery, schema introspection, auto-pagination, reference cache warmup. The agent learns what it has before it guesses.

Harmonization layer

PRD-defined tools: schema detection, config discovery, subject sync, procedure sync, cross-project deduplication. The intelligence that makes Projects data canonical.

Primitive layer

Raw CRUD for projects, objectives, risks, controls, issues, frameworks, walkthroughs, tests, planning files, sign-offs, users, and platform config.

Rate-limited client

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

Composite tools

Risk-control matrix, issue dashboard, project summary, control assessment status — multi-call composites that build complete views in one tool invocation.

Name resolution

Every tool accepts human-readable names or numeric IDs. Cached resolution with 5-minute TTL. Ambiguous matches return a disambiguation table.

Two-tier response cache

Every list/get is cached in-memory (per-resource TTL) and persisted to ~/.cache/diligent-3rdrisk-mcp/cache.json. Reloaded on next process start — Claude Code's short-lived stdio MCPs actually keep their work. 17× measured speedup on warm runs. Writes invalidate affected keys automatically; manual purge via thirdrisk_clear_cache.

What you can do

Capabilities overview.

Project Lifecycle

Create projects (Workplan or Internal Control workflow), set up planning, manage statuses, conclude with ratings, archive. 20,000 project limit per org.

Frameworks

Inspect and build Risk-Control Matrix templates. Frameworks are "abstract projects" — same schema, no instantiation data. Import sections into projects with linked sync.

Fieldwork

List and inspect objectives, risks, controls. View walkthroughs (design effectiveness) and tests (operating effectiveness). Track control performance schedules.

Issue Management

List issues by severity and project, view remediation details, get overdue dashboards. Severity breakdown and aging analysis in one composite call.

Schema Harmonization

PRD-defined: introspect all project type schemas, detect template vs ad hoc usage, sync all subjects, find duplicates with Levenshtein scoring.

Platform Admin

Users, groups, roles, workflows, organizational entities. Generic API escape hatch for uncovered endpoints (DELETE blocked).

Tool Reference

All tools.

Meta & Control Plane (6)
ToolDescription
thirdrisk_health_checkAPI connectivity, response time, session metrics
thirdrisk_get_session_metricsCall counts, errors, retries, average duration
thirdrisk_reset_session_metricsReset counters for a new job
thirdrisk_list_capabilitiesTool inventory by category with descriptions
thirdrisk_warmup_reference_cachePre-fetch project types & workflows
thirdrisk_query_allAuto-paginate any JSON:API resource collection
Projects (6)
ToolDescription
thirdrisk_list_projectsList all projects with status filter
thirdrisk_get_projectFull project details — accepts name or ID
thirdrisk_create_projectCreate a new project MUTATES
thirdrisk_update_projectUpdate project fields (name, status, opinion, dates, tags) MUTATES
thirdrisk_list_project_typesAvailable project types with workflow info
thirdrisk_get_project_typeProject type detail with terminology config
Objectives (3)
ToolDescription
thirdrisk_list_objectivesObjectives (sections) within a project
thirdrisk_get_objectiveFull objective detail with related entity IDs
thirdrisk_get_objective_detailObjective + all nested risks, controls, narratives
Risks (3)
ToolDescription
thirdrisk_list_risksAll risks, optionally filtered by objective
thirdrisk_get_riskFull risk detail with custom attributes & factors
thirdrisk_get_risk_heat_mapImpact x Likelihood matrix across project or all
Controls & Testing (8)
ToolDescription
thirdrisk_list_controlsAll controls/procedures, optionally by objective
thirdrisk_get_controlFull control detail with UI link
thirdrisk_list_walkthroughsDesign effectiveness assessments
thirdrisk_get_walkthroughWalkthrough detail
thirdrisk_list_control_testsOperating effectiveness tests (filter by round)
thirdrisk_get_control_testControl test detail
thirdrisk_list_questionnaire_responsesControl performance questionnaire responses
thirdrisk_get_control_assessment_statusComposite: control assessment status across a project
Frameworks & RCM (5)
ToolDescription
thirdrisk_list_frameworksAll framework templates
thirdrisk_get_frameworkFramework detail — accepts name or ID
thirdrisk_list_framework_objectivesObjectives within a framework
thirdrisk_list_framework_planning_filesPlanning files in a framework
thirdrisk_get_risk_control_matrixComposite: full Objective-Risk-Control denormalized matrix
Issues (3)
ToolDescription
thirdrisk_list_issuesAll issues with severity/project/type filter
thirdrisk_get_issueFull issue with description, recommendation, remediation
thirdrisk_get_issue_dashboardComposite: severity breakdown + overdue + status pipeline
Planning & Sign-offs (4)
ToolDescription
thirdrisk_get_planningProject planning info (background, purpose, scope)
thirdrisk_list_planning_filesPlanning files for a project
thirdrisk_get_planning_filePlanning file detail
thirdrisk_list_signoffsWorkpaper sign-off records
Platform (7)
ToolDescription
thirdrisk_list_usersAll platform users
thirdrisk_list_groupsUser groups
thirdrisk_list_rolesPlatform roles
thirdrisk_list_workflowsConfigured workflows
thirdrisk_list_entitiesOrganizational entities
thirdrisk_list_entity_categoriesEntity categories
thirdrisk_api_rawGeneric JSON:API call — DELETE blocked ESCAPE HATCH
Harmonization — PRD (6)
ToolDescription
thirdrisk_schema_detectionIntrospect all project type schemas, attribute defs, framework templates
thirdrisk_config_discoveryTemplate vs ad hoc analysis, schema consistency scoring
thirdrisk_subject_syncFull/delta sync of all subjects across project types
thirdrisk_procedure_syncSync procedures + assessment results (walkthroughs, tests)
thirdrisk_find_duplicate_subjectsCross-project deduplication with Levenshtein scoring
thirdrisk_get_project_summaryComposite: full project dashboard with counts and issue breakdown
Inventory-centric Schema & Canonical Data Dictionary (8)

Classic Projects has ten inventory kinds (project, objective, risk, control, walkthrough, control_test, issue, signoff, questionnaire, questionnaire_response). These tools build one flat canonical view per inventory, introspect the emergent schema from live data (data type, mandatory rate, population rate, enum values, precision, USER detection via *_user relationships), compare to the Riskapture GRC Brain (read-only), and support terminology + value writes. Falls back to per-project nested walks when a flat endpoint 404s on a specific tenant.

ToolDescription
thirdrisk_list_canonical_inventoriesEnumerate the 10 inventory kinds with their list endpoints and parent chains
thirdrisk_list_inventory_recordsList every instance of one inventory tenant-wide, tagged with its project of origin
thirdrisk_get_inventory_schemaIntrospect one inventory's emergent schema — dataType / mandatoryRate / populationRate / enumValues / precision
thirdrisk_build_data_dictionaryComposite — walks every inventory, returns a structured data dictionary for the whole tenant
thirdrisk_list_brain_canonical_inventoriesREAD-ONLY list of the Riskapture Brain canonical inventories (from services/grc-brain/knowledge/domains/*/inventories/*.yaml)
thirdrisk_compare_inventory_to_brainREAD-ONLY diff: aligned / only-in-brain / only-in-projects / type-conflicts
thirdrisk_update_project_type_terminology (n/a)PATCH the *_terms config on a project type — all 18 terminology keys writable MUTATES
thirdrisk_set_subject_custom_attribute (n/a)Update the value of an EXISTING custom_attribute on a subject. Returns ATTRIBUTE_NOT_DEFINED when the term isn't defined (the public API can't add definitions — use the UI tools below) MUTATES
Admin & bulk tools (13)

Admin surface: user lifecycle, role assignment, access-domain membership. Bulk import: dry-run-by-default validation + commit loops for third parties, contracts, and users. Flat export for downstream ingest.

ToolDescription
thirdrisk_admin_assign_roleAdd one or more roles to a user MUTATES
thirdrisk_admin_unassign_roleRemove roles from a user MUTATES
thirdrisk_admin_replace_rolesReplace the full set of roles on a user MUTATES
thirdrisk_admin_assign_access_domainAdd access domains to a user MUTATES
thirdrisk_admin_audit_user_permissionsComposite report: every user's roles and access domains in one view
thirdrisk_bulk_import_third_partiesDry-run (default) or commit batch of third-party creates MUTATES
thirdrisk_bulk_import_contractsDry-run (default) or commit batch of contract creates MUTATES
thirdrisk_bulk_import_usersDry-run (default) or commit batch of user creates MUTATES
thirdrisk_export_flatFlatten any resource to plain rows (id + attributes) for CSV/Brain ingest
Response cache (2)

Two-tier cache wraps every list/get call. Tier 1 is in-memory with per-resource TTL (15m reference, 10m entities + UI schema, 5m projects / frameworks, 2m record lists, ∞ Brain YAML). Tier 2 persists to ~/.cache/diligent-3rdrisk-mcp/cache.json so a fresh MCP process on the next Claude Code turn reloads instantly. Writes invalidate affected keys automatically. Measured 17× speedup on warm runs (2.07 s → 0.12 s for thirdrisk_get_inventory_schema(risk, sample_limit=50)).

ToolDescription
thirdrisk_cache_statusKeys by prefix, bytes, hit/miss/write counters, disk file path
thirdrisk_clear_cachePurge all / reference / instances / ui-schema / brain — or the whole cache
Configuration

Environment variables.

VariableRequiredDescription
THIRDRISK_BASE_URLYesAPI base URL (e.g. https://pied-piper.3rdrisk.com/api/v1)
THIRDRISK_API_TOKENYesBearer token from Admin Hub > API Access Tokens
THIRDRISK_ORGYesOrganisation ID (numeric)
THIRDRISK_LOG_FILENoPath for JSONL request log
THIRDRISK_CACHE_ENABLEDNoSet to false to disable the response cache (default on)
THIRDRISK_CACHE_DIRNoCache location (default ~/.cache/diligent-3rdrisk-mcp)
UNUSED_UI_PLACEHOLDERUI onlyOIDC login email (for (n/a — 3rdRisk has no UI write tools) tools)
UNUSED_UI_PLACEHOLDERUI onlyOIDC password
UNUSED_UI_PLACEHOLDERUI onlyOrg subdomain (e.g. piedpiper)

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

Looking for ERM configuration and data tools? They moved to the Diligent ERM MCP — same bearer token, different server.

Constraints

Hard rules.

No DELETE
Soft-delete is destructive and irreversible via API. DELETE is hard-blocked in the client.
Rate Limits
600 req/hour, 6 req/sec. Token-bucket rate limiter enforced client-side with exponential backoff.
No Server Filter
Server-side filtering is NOT supported. All filtering is done client-side after fetching.
JSON:API v1.0
All requests use application/vnd.api+json content type. Cursor-based pagination via links.next.
Include Works
JSON:API sideloading is supported via ?include=resource_type. Returns data in included[].
RCM is 2D
The risk-control matrix is a many-to-many between exactly 2 domain objects. The relationship type is immutable per project type.
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-3rdrisk

4. Start with thirdrisk_health_check to verify connectivity

5. Run thirdrisk_list_capabilities to see all available tools

6. Use thirdrisk_warmup_reference_cache before bulk operations