# crm_exchange_token

Exchange an OAuth authorization code for access and refresh tokens.

Agent View of the PolicyLayer registry record for `crm_exchange_token`. HTML page: https://policylayer.com/tools/io-github-0nork-0nmcp/crm-exchange-token

## Facts

- Tool: `crm_exchange_token`
- 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_exchange_token",
    "arguments": {}
  }
}
```

## Why crm_exchange_token is rated Medium

This tool performs an OAuth token exchange, which creates new authentication tokens (access and refresh). This is a Write operation as it generates/creates new credentials in the OAuth system. The severity is high because misuse could result in unauthorized access token generation, potentially granting persistent access to CRM systems via refresh tokens.

From the tool's own definition: "Exchange an OAuth authorization code for access and refresh tokens"

## Use case

AI agents use crm_exchange_token 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_exchange_token": {
      "limits": [
        {
          "counter": "crm_exchange_token_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
