# upload_attachment

Upload a base64-encoded attachment to a ServiceNow record (requires WRITE_ENABLED=true).

Agent View of the PolicyLayer registry record for `upload_attachment`. HTML page: https://policylayer.com/tools/servicenow-mcp-server/upload-attachment

## Facts

- Tool: `upload_attachment`
- Server: ServiceNow MCP Server (`@aartiq/servicenow-mcp`) — https://policylayer.com/tools/servicenow-mcp-server.md
- Install: `npx -y @aartiq/servicenow-mcp`
- Homepage: https://github.com/aartiq/servicenow-mcp
- Risk category: Write (Medium risk)
- Registry record: grade F, identity verified
- Server rate-limited: no
- Parameters: 0
- Recommended policy verdict: Rate-limited

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

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "upload_attachment",
    "arguments": {}
  }
}
```

## Why upload_attachment is rated Medium

This tool creates new attachment data attached to ServiceNow records. While uploads are modifications, they are reversible (attachments can be deleted), making this a Write action rather than Execute or Destructive. Severity is medium because attachment uploads could introduce malicious files, but the impact is scoped to the target record and doesn't directly execute code or cause destructive operations.

From the tool's own definition: "Tool name is 'upload_attachment' and description states it uploads 'a base64-encoded attachment to a ServiceNow record' with requirement for 'WRITE_ENABLED=true', indicating it creates/adds data to records reversibly."

## Use case

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

## Recommended policy (PolicyLayer)

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

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

## Other tools on ServiceNow MCP Server (364)

- `delete_attachment` — Destructive — https://policylayer.com/tools/servicenow-mcp-server/delete-attachment.md
- `delete_system_property` — Destructive — https://policylayer.com/tools/servicenow-mcp-server/delete-system-property.md
- `delete_uib_page` — Destructive — https://policylayer.com/tools/servicenow-mcp-server/delete-uib-page.md
- `remove_user_from_group` — Destructive — https://policylayer.com/tools/servicenow-mcp-server/remove-user-from-group.md
- `rollback_deployment` — Destructive — https://policylayer.com/tools/servicenow-mcp-server/rollback-deployment.md
- `commit_changeset` — Execute — https://policylayer.com/tools/servicenow-mcp-server/commit-changeset.md
- `create_business_rule` — Execute — https://policylayer.com/tools/servicenow-mcp-server/create-business-rule.md
- `create_flow_action` — Execute — https://policylayer.com/tools/servicenow-mcp-server/create-flow-action.md
- `create_scheduled_job` — Execute — https://policylayer.com/tools/servicenow-mcp-server/create-scheduled-job.md
- `create_script_include` — Execute — https://policylayer.com/tools/servicenow-mcp-server/create-script-include.md
- `create_ui_action` — Execute — https://policylayer.com/tools/servicenow-mcp-server/create-ui-action.md
- `execute_background_script` — Execute — https://policylayer.com/tools/servicenow-mcp-server/execute-background-script.md
- `fire_event` — Execute — https://policylayer.com/tools/servicenow-mcp-server/fire-event.md
- `ml_detect_anomalies` — Execute — https://policylayer.com/tools/servicenow-mcp-server/ml-detect-anomalies.md
- `ml_train_anomaly_detector` — Execute — https://policylayer.com/tools/servicenow-mcp-server/ml-train-anomaly-detector.md
- `ml_train_change_risk` — Execute — https://policylayer.com/tools/servicenow-mcp-server/ml-train-change-risk.md
- `ml_train_incident_classifier` — Execute — https://policylayer.com/tools/servicenow-mcp-server/ml-train-incident-classifier.md
- `publish_changeset` — Execute — https://policylayer.com/tools/servicenow-mcp-server/publish-changeset.md
- `run_aggregate_query` — Execute — https://policylayer.com/tools/servicenow-mcp-server/run-aggregate-query.md
- `run_atf_suite` — Execute — https://policylayer.com/tools/servicenow-mcp-server/run-atf-suite.md
- `run_atf_test` — Execute — https://policylayer.com/tools/servicenow-mcp-server/run-atf-test.md
- `run_discovery_scan` — Execute — https://policylayer.com/tools/servicenow-mcp-server/run-discovery-scan.md
- `run_security_playbook` — Execute — https://policylayer.com/tools/servicenow-mcp-server/run-security-playbook.md
- `run_transform_map` — Execute — https://policylayer.com/tools/servicenow-mcp-server/run-transform-map.md
- `scan_vulnerabilities` — Execute — https://policylayer.com/tools/servicenow-mcp-server/scan-vulnerabilities.md
- `switch_update_set` — Execute — https://policylayer.com/tools/servicenow-mcp-server/switch-update-set.md
- `test_flow` — Execute — https://policylayer.com/tools/servicenow-mcp-server/test-flow.md
- `trigger_agentic_playbook` — Execute — https://policylayer.com/tools/servicenow-mcp-server/trigger-agentic-playbook.md
- `trigger_flow` — Execute — https://policylayer.com/tools/servicenow-mcp-server/trigger-flow.md
- `trigger_scheduled_job` — Execute — https://policylayer.com/tools/servicenow-mcp-server/trigger-scheduled-job.md
- …and 334 more: https://policylayer.com/tools/servicenow-mcp-server.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=servicenow-mcp-server · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/servicenow-mcp-server
