All recipes

Secure & Govern · Prompt

Shared responsibility matrix

Split every control between your team, the client and third parties so nobody assumes someone else has it.

ControlMap
Requires MCPby Greg Brydon · Solutions Engineer

Needs an LLM client connected to ScalePad MCP — Claude Desktop, Cursor, Windsurf or similar. Without it the assistant cannot call the recipe's tools.

User prompt

3 inputs to fill
For [CLIENT NAME]'s [FRAMEWORK] program, assign each control to one of: [MSP NAME], the client, a third party (name them), or shared.

For shared controls, spell out exactly which part each side owns. Base the split on our ControlMap data and the services [MSP NAME] delivers, and ask me when it's unclear.

Return a table grouped by domain, and a short summary of controls the client owns so they can staff them. Before you create, update or delete anything, show me exactly what you plan to change in a table and wait for my approval. After approval, save the matrix as a ControlMap governance document and map it to the objectives it covers.

How to work with the ControlMap API (ScalePad MCP):
- Find the client with GET /controlmap/v1/clients/health and use its tenant ID (for example "dundmif") in every request. Some clients have no UUID.
- Send the header Content-Type: application/json on every POST, PUT and PATCH, including searches.
- Use page_size of 50 or less and follow next_cursor. The "fields" parameter is ignored, so responses are large.
- Judge controls by "status", not the "compliant" flag. Objective lists include sub-objectives, so take totals from objective_summary.
- Use framework-level scores and labels. The overall score_label on client health can be wrong.
- Older policy sections may be URL-encoded twice: decode them and use the highest version of each section.
- If a call returns 502 or fails to connect, wait a few seconds and retry once. If it still fails, tell me exactly which data is missing.

When writing to ControlMap:
- Update policies one field per request. review_date must include milliseconds (2027-01-01T00:00:00.000Z) and policy status must be draft, in_progress, in_review or approved.
- Risk scores and treatment can't be changed through the API. A new risk takes one impact and likelihood, which sets inherent, current and target together. List any score or treatment changes for me to make in ControlMap.
- Write evidence request notes to the "notes" field and assignees to "assigned_to".
- Files can't be uploaded through the MCP. Attach a link to where the file lives (SharePoint, Google Drive) and list any files I need to upload in ControlMap.
- Department and risk category must match existing values (GET /risks/departments and /risks/categories).
- Action item effort is capped at 8 hours, so put larger estimates in the description.
- A 500 error can still save part of a change. Read the record back before retrying.

# Shared responsibility matrix

Hook: Split every control between your team, the client and third parties so nobody assumes someone else has it.

When to use it

Defining the service scope, especially for CMMC or co-managed clients.

What you get

A responsibility matrix by control, ready to attach to the statement of work.

Fill in the details

  • [CLIENT NAME]: Client name (e.g. Acme Dental)
  • [FRAMEWORK]: Framework (e.g. CIS Controls v8.1)
  • [MSP NAME]: Your company name (e.g. Northwind IT)

Status

Tested against the ControlMap API on October 16, 2026. Only asks for what the API supports.

Makes changes: Claude shows a plan of every create, update or delete and waits for your approval before acting.

GBAuthorGreg BrydonSolutions Engineer · ScalePad

Recipes are starting points. Adapt them to your environment and validate the output before putting one into practice.

Request a recipe

More in Secure & Govern