<!-- Generated by scripts/generate-tool-contract.mjs. Do not edit by hand. -->

# MCP Tool Profiles

Contract version: `1`
MCP revision: `2026-07-28`
Approved modern cache hint: `ttlMs=30000`, `cacheScope=private`

| Profile | Total | `b2_*` | `s3_*` | `bz_*` | Hash prefix |
| --- | ---: | ---: | ---: | ---: | --- |
| `full` | 40 | 21 | 19 | 0 | `91f2294b2e4b` |
| `live-b2-contract` | 39 | 20 | 19 | 0 | `3b73320b5680` |
| `phase1-default` | 37 | 18 | 19 | 0 | `49121cb2ee03` |
| `read-only` | 20 | 11 | 9 | 0 | `735537dedc14` |

## `full`

Complete tool superset for contract review and regression detection across all backing categories; durable-secret producers are sink-backed when a secret sink is active and otherwise remain availability-annotated stubs.

Profile hash: `91f2294b2e4be34ec05c1face2e489b9fee186e04b5fe856b94c8eb3d2bdf49f`

### Capability Input

- Full-surface override (`null` capability input).

### Backing Categories

- Native B2 SDK: 17
- AWS S3 SDK: 19
- Neither SDK: 4

### `b2_*` Tools (21)

- `b2_authorize_account`
- `b2_create_bucket`
- `b2_create_group_member`
- `b2_create_key`
- `b2_delete_bucket`
- `b2_delete_key`
- `b2_eject_group_member`
- `b2_get_bucket_notification_rules`
- `b2_list_buckets`
- `b2_list_group_members`
- `b2_list_groups`
- `b2_list_keys`
- `b2_list_largest_files`
- `b2_rank_egress_leaders`
- `b2_report_usage_growth`
- `b2_reserve_trial_create_account`
- `b2_set_bucket_notification_rules`
- `b2_unfinished_uploads`
- `b2_update_bucket`
- `b2_update_file_legal_hold`
- `b2_update_file_retention`

### `s3_*` Tools (19)

- `s3_abort_multipart_upload`
- `s3_complete_multipart_upload`
- `s3_copy_object`
- `s3_create_multipart_upload`
- `s3_delete_object`
- `s3_delete_objects`
- `s3_get_bucket_location`
- `s3_get_object`
- `s3_get_presigned_upload_part_url`
- `s3_get_presigned_url`
- `s3_head_bucket`
- `s3_head_object`
- `s3_list_multipart_uploads`
- `s3_list_object_versions`
- `s3_list_objects_v2`
- `s3_list_parts`
- `s3_put_bucket_lifecycle`
- `s3_put_object`
- `s3_upload_part_copy`

## `live-b2-contract`

Protected live B2 contract profile: non-master application key with release-evidence capabilities, no key-management grants, and a distinct master key only for Partner/Groups API surface discovery.

Profile hash: `3b73320b5680a9658fb9fd95939272341352086a86c5ae00f0c0bf91acd8cabc`

### Capability Input

- `bypassGovernance`
- `deleteBuckets`
- `deleteFiles`
- `listBuckets`
- `listFiles`
- `listKeys`
- `readBucketEncryption`
- `readBucketRetentions`
- `readBuckets`
- `readFileLegalHolds`
- `readFileRetentions`
- `readFiles`
- `writeBucketEncryption`
- `writeBucketNotifications`
- `writeBucketRetentions`
- `writeBuckets`
- `writeFileLegalHolds`
- `writeFileRetentions`
- `writeFiles`

### Backing Categories

- Native B2 SDK: 16
- AWS S3 SDK: 19
- Neither SDK: 4

### `b2_*` Tools (20)

- `b2_authorize_account`
- `b2_create_bucket`
- `b2_create_group_member`
- `b2_create_key`
- `b2_delete_bucket`
- `b2_eject_group_member`
- `b2_get_bucket_notification_rules`
- `b2_list_buckets`
- `b2_list_group_members`
- `b2_list_groups`
- `b2_list_keys`
- `b2_list_largest_files`
- `b2_rank_egress_leaders`
- `b2_report_usage_growth`
- `b2_reserve_trial_create_account`
- `b2_set_bucket_notification_rules`
- `b2_unfinished_uploads`
- `b2_update_bucket`
- `b2_update_file_legal_hold`
- `b2_update_file_retention`

### `s3_*` Tools (19)

- `s3_abort_multipart_upload`
- `s3_complete_multipart_upload`
- `s3_copy_object`
- `s3_create_multipart_upload`
- `s3_delete_object`
- `s3_delete_objects`
- `s3_get_bucket_location`
- `s3_get_object`
- `s3_get_presigned_upload_part_url`
- `s3_get_presigned_url`
- `s3_head_bucket`
- `s3_head_object`
- `s3_list_multipart_uploads`
- `s3_list_object_versions`
- `s3_list_objects_v2`
- `s3_list_parts`
- `s3_put_bucket_lifecycle`
- `s3_put_object`
- `s3_upload_part_copy`

## `phase1-default`

Default customer-hosted Phase 1 profile: standard B2 application key, no distinct Partner/master credential, and durable-secret producers exposed as sink-backed tools on local stdio or unavailable stubs when the sink is off.

Profile hash: `49121cb2ee0387d7a9623e50920b2bfa91916e7f323f0a0351bb98ab217a67ba`

### Capability Input

- `deleteBuckets`
- `deleteFiles`
- `deleteKeys`
- `listBuckets`
- `listFiles`
- `listKeys`
- `readBucketNotifications`
- `readFiles`
- `writeBucketNotifications`
- `writeBuckets`
- `writeFileLegalHolds`
- `writeFileRetentions`
- `writeFiles`

### Backing Categories

- Native B2 SDK: 14
- AWS S3 SDK: 19
- Neither SDK: 4

### `b2_*` Tools (18)

- `b2_authorize_account`
- `b2_create_bucket`
- `b2_create_group_member`
- `b2_create_key`
- `b2_delete_bucket`
- `b2_delete_key`
- `b2_get_bucket_notification_rules`
- `b2_list_buckets`
- `b2_list_keys`
- `b2_list_largest_files`
- `b2_rank_egress_leaders`
- `b2_report_usage_growth`
- `b2_reserve_trial_create_account`
- `b2_set_bucket_notification_rules`
- `b2_unfinished_uploads`
- `b2_update_bucket`
- `b2_update_file_legal_hold`
- `b2_update_file_retention`

### `s3_*` Tools (19)

- `s3_abort_multipart_upload`
- `s3_complete_multipart_upload`
- `s3_copy_object`
- `s3_create_multipart_upload`
- `s3_delete_object`
- `s3_delete_objects`
- `s3_get_bucket_location`
- `s3_get_object`
- `s3_get_presigned_upload_part_url`
- `s3_get_presigned_url`
- `s3_head_bucket`
- `s3_head_object`
- `s3_list_multipart_uploads`
- `s3_list_object_versions`
- `s3_list_objects_v2`
- `s3_list_parts`
- `s3_put_bucket_lifecycle`
- `s3_put_object`
- `s3_upload_part_copy`

## `read-only`

Deterministic read/list profile for safe production use and contract tests; write/delete/admin handlers are omitted while durable-secret producer names remain unavailable stubs unless a sink-backed admin profile is configured.

Profile hash: `735537dedc1479eb270133bcc0c588fae08dff31886565328f6cd823c89ca421`

### Capability Input

- `listBuckets`
- `listFiles`
- `listKeys`
- `readBucketNotifications`
- `readFiles`

### Backing Categories

- Native B2 SDK: 7
- AWS S3 SDK: 9
- Neither SDK: 4

### `b2_*` Tools (11)

- `b2_authorize_account`
- `b2_create_group_member`
- `b2_create_key`
- `b2_get_bucket_notification_rules`
- `b2_list_buckets`
- `b2_list_keys`
- `b2_list_largest_files`
- `b2_rank_egress_leaders`
- `b2_report_usage_growth`
- `b2_reserve_trial_create_account`
- `b2_unfinished_uploads`

### `s3_*` Tools (9)

- `s3_get_bucket_location`
- `s3_get_object`
- `s3_get_presigned_url`
- `s3_head_bucket`
- `s3_head_object`
- `s3_list_multipart_uploads`
- `s3_list_object_versions`
- `s3_list_objects_v2`
- `s3_list_parts`

# MCP Prompt Profiles

Prompt contract issue: [#166](https://github.com/backblaze-labs/b2-mcp/issues/166)

MCP workflow prompts are off by default. Set `B2_ENABLE_MCP_PROMPTS=true` to enable them once every replica runs prompt-capable code. The flag gates handler registration and `prompts/list` advertisement together, so flip it atomically across the fleet (or use sticky routing) rather than as a decoupled two-phase rollout: a mixed flag state could advertise prompts on one replica while a sibling still lacks a `prompts/get` handler. These generated fixtures pin the prompt surface when enabled.

The `full` prompt profile enables an inline dummy secret sink so sink-dependent key-rotation prompts are included in the external contract.

| Profile | Prompts | Hash prefix |
| --- | ---: | --- |
| `full` | 5 | `c52599d06cda` |
| `live-b2-contract` | 4 | `7378ab9a0c3e` |
| `phase1-default` | 3 | `0257b2a65d29` |
| `read-only` | 2 | `686610d7c5bf` |

## `full` Prompt Surface

Complete guided-workflow prompt surface: every B2 workflow launcher is advertised, including the write- and admin-capable prompts, for contract review and regression detection.

Prompt profile hash: `c52599d06cdabc7017a82ac69bd71a0ae920984c652ab0517b29b6cd215c5e20`

### MCP Prompts

- `b2_audit_public_exposure`
- `b2_configure_lifecycle_cost_rules`
- `b2_provision_locked_bucket`
- `b2_review_bucket_notifications`
- `b2_rotate_application_key`

## `live-b2-contract` Prompt Surface

Prompt surface for the protected live B2 contract profile: workflow launchers right-sized to the non-master application key's release-evidence capabilities.

Prompt profile hash: `7378ab9a0c3e4fe419b9d458adb120311f336fcaae7e19715621f67a8bb35179`

### MCP Prompts

- `b2_audit_public_exposure`
- `b2_configure_lifecycle_cost_rules`
- `b2_provision_locked_bucket`
- `b2_review_bucket_notifications`

## `phase1-default` Prompt Surface

Prompt surface for the default customer-hosted Phase 1 profile: workflow launchers right-sized to a standard B2 application key with no distinct Partner/master credential.

Prompt profile hash: `0257b2a65d29aeaa1d7a37ea63f13aa9c549d654e8de5e6f3c4b705db6eb48e1`

### MCP Prompts

- `b2_audit_public_exposure`
- `b2_configure_lifecycle_cost_rules`
- `b2_review_bucket_notifications`

## `read-only` Prompt Surface

Read-only guided-workflow prompt surface: only launchers whose required tools are read/list operations are advertised; write, delete, and admin workflows are omitted.

Prompt profile hash: `686610d7c5bf334093888a5e122ec39b40865947535d66da2d9230b2b0c1b381`

### MCP Prompts

- `b2_audit_public_exposure`
- `b2_review_bucket_notifications`
