# Frameworks and controls MCP tools

This page documents **16 tools** in the frameworks and controls group. Return to the [complete MCP tool reference](/docs/developers/api/mcp/tools) to browse another group.

Select a tool to inspect its schemas and behavior. Schema links open the exact definition in GitHub.

### `listFrameworks` — List Frameworks

List all frameworks for the organization.

- **Input:** [`ListFrameworksInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3189-L3205)
- **Output:** [`ListFrameworksOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3207-L3218)
- **Behavior:** Read only · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L18206–L18217 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18206-L18217)

### `getFramework` — Get Framework

Get a framework by ID.

- **Input:** [`GetFrameworkInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3220-L3227)
- **Output:** [`GetFrameworkOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3229-L3235)
- **Behavior:** Read only · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L18218–L18229 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18218-L18229)

### `addFramework` — Add Framework

Add a new framework to the organization.

- **Input:** [`AddFrameworkInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3237-L3251)
- **Output:** [`AddFrameworkOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3253-L3259)
- **Behavior:** Writes data · Non-destructive · Non-idempotent · Closed world
- **Source:** [specification.yaml · L18230–L18241 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18230-L18241)

### `updateFramework` — Update Framework

Update an existing framework.

- **Input:** [`UpdateFrameworkInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3261-L3275)
- **Output:** [`UpdateFrameworkOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3277-L3283)
- **Behavior:** Writes data · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L18242–L18253 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18242-L18253)

### `deleteFramework` — Delete Framework

Delete a framework.

- **Input:** [`DeleteFrameworkInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3285-L3292)
- **Output:** [`DeleteFrameworkOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L3294-L3301)
- **Behavior:** Writes data · Destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L18254–L18265 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18254-L18265)

### `linkAuditFramework` — Link Audit Framework

Link a framework to an audit.

- **Input:** [`LinkAuditFrameworkInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6689-L6700)
- **Output:** [`LinkAuditFrameworkOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6702-L6711)
- **Behavior:** Writes data · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L18986–L18997 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18986-L18997)

### `unlinkAuditFramework` — Unlink Audit Framework

Unlink a framework from an audit.

- **Input:** [`UnlinkAuditFrameworkInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6713-L6724)
- **Output:** [`UnlinkAuditFrameworkOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6726-L6737)
- **Behavior:** Writes data · Destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L18998–L19009 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18998-L19009)

### `listControls` — List Controls

List all controls for the organization or framework.

- **Input:** [`ListControlsInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6814-L6839)
- **Output:** [`ListControlsOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6841-L6852)
- **Behavior:** Read only · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L19034–L19045 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19034-L19045)

### `getControl` — Get Control

Get a control by ID.

- **Input:** [`GetControlInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6854-L6861)
- **Output:** [`GetControlOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6863-L6869)
- **Behavior:** Read only · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L19046–L19057 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19046-L19057)

### `addControl` — Add Control

Add a new control to a framework.

- **Input:** [`AddControlInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6871-L6908)
- **Output:** [`AddControlOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6910-L6916)
- **Behavior:** Writes data · Non-destructive · Non-idempotent · Closed world
- **Source:** [specification.yaml · L19058–L19069 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19058-L19069)

### `updateControl` — Update Control

Update an existing control.

- **Input:** [`UpdateControlInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6918-L6947)
- **Output:** [`UpdateControlOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6949-L6955)
- **Behavior:** Writes data · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L19070–L19081 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19070-L19081)

### `deleteControl` — Delete Control

Delete a control.

- **Input:** [`DeleteControlInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6957-L6964)
- **Output:** [`DeleteControlOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6966-L6973)
- **Behavior:** Writes data · Destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L19082–L19093 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19082-L19093)

### `linkControl` — Link Control

Link a resource to a control (internal control, document, audit, or obligation). The resource type is determined from the resource_id GID.

- **Input:** [`LinkControlInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6975-L6986)
- **Output:** [`LinkControlOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6988-L6989)
- **Behavior:** Writes data · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L19094–L19105 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19094-L19105)

### `unlinkControl` — Unlink Control

Unlink a resource from a control (internal control, document, audit, or obligation). The resource type is determined from the resource_id GID.

- **Input:** [`UnlinkControlInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L6991-L7002)
- **Output:** [`UnlinkControlOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L7004-L7005)
- **Behavior:** Writes data · Destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L19106–L19117 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19106-L19117)

### `listControlObligations` — List Control Obligations

List obligations linked to a control.

- **Input:** [`ListControlObligationsInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L7007-L7023)
- **Output:** [`ListControlObligationsOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L7025-L7036)
- **Behavior:** Read only · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L19118–L19129 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19118-L19129)

### `listControlAudits` — List Control Audits

List audits linked to a control.

- **Input:** [`ListControlAuditsInput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L7100-L7116)
- **Output:** [`ListControlAuditsOutput`](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L7118-L7129)
- **Behavior:** Read only · Non-destructive · Idempotent · Closed world
- **Source:** [specification.yaml · L19154–L19165 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19154-L19165)
