# create_portfolio_snapshot_note

Record a decision or comment against one of YOUR OWN portfolio snapshots. Pass expected_content_hash -- the hash you saw when you read the snapshot -- and a mismatch is REFUSED rather than quietly filed against a different revision; that check is the point of this tool. Omitting it still records the note, it just does not assert which revision was on the screen. This writes down what was decided; it does not approve, reject or block anything, and nothing downstream gates on it. A lost reply may have committed; this write has no replay key and must not be automatically retried. Requires authentication and the tickets:write scope.

Agent View of the PolicyLayer registry record for `create_portfolio_snapshot_note`. HTML page: https://policylayer.com/tools/com-meta-council-decision-intelligence/create-portfolio-snapshot-note

## Facts

- Tool: `create_portfolio_snapshot_note`
- Server: Meta Council (`https://meta-council.com/mcp`) — https://policylayer.com/tools/com-meta-council-decision-intelligence.md
- Homepage: https://github.com/daliu/meta-council
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 4 (2 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `body` | string | yes | What was decided or observed. |
| `kind` | string | no | Whether this records a decision or an ordinary comment. Defaults to comment. |
| `snapshot_id` | string | yes | The snapshot's id, from list_portfolio_snapshots. |
| `expected_content_hash` | string | no | The snapshot's content_hash as you read it. A mismatch is refused. |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "create_portfolio_snapshot_note",
    "arguments": {
      "body": "<body>",
      "snapshot_id": "<snapshot_id>"
    }
  }
}
```

## Why create_portfolio_snapshot_note is rated Medium

An AI agent can call create_portfolio_snapshot_note faster than any human can review: one bad instruction and it creates or modifies resources in Meta Council by the hundred, each call as confident as the last.

Risk signals: Accepts raw HTML/template content (body)

## Use case

AI agents use create_portfolio_snapshot_note to create or update resources in Meta Council, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Meta Council environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Meta Council:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "create_portfolio_snapshot_note": {
      "limits": [
        {
          "counter": "create_portfolio_snapshot_note_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Meta Council (279)

- `account_export` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/account-export.md
- `cancel_booking` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/cancel-booking.md
- `decide_approval` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/decide-approval.md
- `delete_accounting_run` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/delete-accounting-run.md
- `delete_monitor` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/delete-monitor.md
- `delete_saved_view` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/delete-saved-view.md
- `delete_workflow_template` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/delete-workflow-template.md
- `preview_scheduling_action` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/preview-scheduling-action.md
- `project_unlink_feature` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/project-unlink-feature.md
- `reconcile_attention_notification_delivery` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/reconcile-attention-notification-delivery.md
- `revoke_portfolio_report_share` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/revoke-portfolio-report-share.md
- `ticket_dependency_remove` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/ticket-dependency-remove.md
- `void_invoice` — Destructive — https://policylayer.com/tools/com-meta-council-decision-intelligence/void-invoice.md
- `dismiss_ticket_integration_effect` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/dismiss-ticket-integration-effect.md
- `execute_saved_view` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/execute-saved-view.md
- `preview_accounting_ticket_sync` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/preview-accounting-ticket-sync.md
- `project_link_feature` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/project-link-feature.md
- `retry_workflow` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/retry-workflow.md
- `review_external_workflow` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/review-external-workflow.md
- `run_comparison` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/run-comparison.md
- `run_council` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/run-council.md
- `run_workflow` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/run-workflow.md
- `start_external_workflow` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/start-external-workflow.md
- `ticket_scenario_revise` — Execute — https://policylayer.com/tools/com-meta-council-decision-intelligence/ticket-scenario-revise.md
- `add_invoice_line_item` — Financial — https://policylayer.com/tools/com-meta-council-decision-intelligence/add-invoice-line-item.md
- `mark_invoice_paid` — Financial — https://policylayer.com/tools/com-meta-council-decision-intelligence/mark-invoice-paid.md
- `advance_workflow` — Read — https://policylayer.com/tools/com-meta-council-decision-intelligence/advance-workflow.md
- `ask_legal` — Read — https://policylayer.com/tools/com-meta-council-decision-intelligence/ask-legal.md
- `browse_ticket_integration_import` — Read — https://policylayer.com/tools/com-meta-council-decision-intelligence/browse-ticket-integration-import.md
- `campaign_pipeline_stats` — Read — https://policylayer.com/tools/com-meta-council-decision-intelligence/campaign-pipeline-stats.md
- …and 249 more: https://policylayer.com/tools/com-meta-council-decision-intelligence.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=com-meta-council-decision-intelligence · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/com-meta-council-decision-intelligence
