# 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 · L18188–L18199 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18188-L18199)

### `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 · L18200–L18211 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18200-L18211)

### `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 · L18212–L18223 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18212-L18223)

### `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 · L18224–L18235 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18224-L18235)

### `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 · L18236–L18247 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18236-L18247)

### `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 · L18968–L18979 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18968-L18979)

### `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 · L18980–L18991 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L18980-L18991)

### `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 · L19016–L19027 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19016-L19027)

### `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 · L19028–L19039 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19028-L19039)

### `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 · L19040–L19051 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19040-L19051)

### `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 · L19052–L19063 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19052-L19063)

### `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 · L19064–L19075 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19064-L19075)

### `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 · L19076–L19087 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19076-L19087)

### `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 · L19088–L19099 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19088-L19099)

### `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 · L19100–L19111 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19100-L19111)

### `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 · L19136–L19147 ↗](https://github.com/getprobo/probo/blob/main/pkg/server/api/mcp/v1/specification.yaml#L19136-L19147)
