# crm_form_upload_file

Upload a file to a contact

Agent View of the PolicyLayer registry record for `crm_form_upload_file`. HTML page: https://policylayer.com/tools/io-github-0nork-0nmcp/crm-form-upload-file

## Facts

- Tool: `crm_form_upload_file`
- Server: 0nmcp (`0nmcp`) — https://policylayer.com/tools/io-github-0nork-0nmcp.md
- Install: `npx -y 0nmcp`
- Homepage: https://github.com/0nork/0nMCP
- Risk category: Write (Medium risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- 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": "crm_form_upload_file",
    "arguments": {}
  }
}
```

## Why crm_form_upload_file is rated Medium

This tool performs a reversible write operation: it adds a file to a contact in a CRM system. The file can be deleted or replaced, making it a Write rather than Destructive action. Severity is medium because unauthorized file uploads could introduce malware, corrupt records, or expose sensitive data, but the blast radius depends on file validation and CRM access controls.

From the tool's own definition: "Tool name contains 'upload' and description states 'Upload a file to a contact', indicating it creates or modifies data (adds a file attachment to a CRM contact record)."

## Use case

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

## Recommended policy (PolicyLayer)

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

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

## Other tools on 0nmcp (217)

- `crm_marketplace_delete_charge` — Destructive — https://policylayer.com/tools/io-github-0nork-0nmcp/crm-marketplace-delete-charge.md
- `crm_marketplace_uninstall` — Destructive — https://policylayer.com/tools/io-github-0nork-0nmcp/crm-marketplace-uninstall.md
- `crm_media_bulk_delete` — Destructive — https://policylayer.com/tools/io-github-0nork-0nmcp/crm-media-bulk-delete.md
- `crm_media_delete` — Destructive — https://policylayer.com/tools/io-github-0nork-0nmcp/crm-media-delete.md
- `patent_watchlist` — Destructive — https://policylayer.com/tools/io-github-0nork-0nmcp/patent-watchlist.md
- `shadcn_theme` — Destructive — https://policylayer.com/tools/io-github-0nork-0nmcp/shadcn-theme.md
- `vault_container_revoke` — Destructive — https://policylayer.com/tools/io-github-0nork-0nmcp/vault-container-revoke.md
- `ai_chat` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/ai-chat.md
- `ai_embed` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/ai-embed.md
- `ai_generate` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/ai-generate.md
- `api_call` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/api-call.md
- `app_build` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/app-build.md
- `app_open` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/app-open.md
- `brain_compile` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/brain-compile.md
- `brain_import` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/brain-import.md
- `brain_train` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/brain-train.md
- `council_debate` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/council-debate.md
- `council_solve` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/council-solve.md
- `crm_build_ai_workflow` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/crm-build-ai-workflow.md
- `crm_deploy_snapshot` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/crm-deploy-snapshot.md
- `crm_run_ai_workflow` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/crm-run-ai-workflow.md
- `execute` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/execute.md
- `flow_run_now` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/flow-run-now.md
- `landing_pages_deploy` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/landing-pages-deploy.md
- `plugin_build` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/plugin-build.md
- `plugin_execute` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/plugin-execute.md
- `rc_sequence_to_user_workflow` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/rc-sequence-to-user-workflow.md
- `run_workflow` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/run-workflow.md
- `site_run` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/site-run.md
- `training_feed` — Execute — https://policylayer.com/tools/io-github-0nork-0nmcp/training-feed.md
- …and 187 more: https://policylayer.com/tools/io-github-0nork-0nmcp.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=io-github-0nork-0nmcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/io-github-0nork-0nmcp
