# io.github.pain2hustle/cloudflare-ops-mcp

The bridge from K2 agents through Wrangler to your master AI - safe, approval-gated Cloudflare ops.

- **Type:** MCP server
- **Trust:** 60/100 (B), scored on the content rubric
- **Verification:** community-indexed — nobody has claimed this listing
- **Version:** 0.4.0
- **Author:** io.github.pain2hustle
- **License:** Unknown
- **Endpoints:** streamable-http https://cfops.nothingunseen.com/mcp
- **Source:** https://github.com/pain2hustle/cloudflare-ops-mcp
- **Endpoint health:** degraded (last checked 2026-08-29T21:42:55.409Z, 1 sample) — uptime is not a security property and is not part of the trust score
- **Compatible clients:** claude-code, cursor, copilot, chatgpt, gemini (basis: transport)

## Trust

60/100 (B), scored on the content rubric
- Publisher verified: no
- Install scripts: nothing suspicious found
- Prompt-injection scan: clean
- Obfuscation scan: clean
- Evidence age: 1 day

## Security scan

- **Status:** clean
- **Scanned:** 2026-09-01T10:03:00.269Z
- **Version scanned:** HEAD
- **CVEs:** no coverage — this entry has no package coordinates to query OSV against, so "no known CVEs" is NOT asserted for it.

## Tools

29 declared. Statically extracted from the shipped source — a floor on the surface, not a census.
- `submit_result` — Submit the complete evidence-backed job result. Always call this tool exactly once.
- `cloudflare-ops-mcp`
- `federation_add` — Register an upstream MCP server so its tools appear in THIS catalog under a namespace (namespace__tool) and calls proxy to it. Args: namespace (a-z0-9_-), url (
- `federation_list` — List registered upstream MCP servers (namespace, url, whether authed).
- `federation_remove` — Unregister an upstream MCP server by namespace.
- `policy_set` — Set governance policy for any tool (native or federated namespace__tool): allow | approve | block. Default is allow. 'approve' refuses the call unless it carrie
- `policy_list` — List all non-default tool policies.
- `scan_zone` — Read-only snapshot of a domain's Cloudflare zone: all DNS records plus parsed SPF, DMARC, BIMI, and Email Routing status. Never writes.
- `plan_email_auth` — Analyze a domain's email authentication (SPF/DKIM/DMARC/BIMI/routing) and report what is missing or misconfigured, with the exact records to add. Never writes.
- `verify_domain` — Re-scan a domain and return a pass/fail checklist: SPF, DMARC present + enforced, MX, Email Routing, BIMI, DKIM count. Never writes.
- `apply_dns_record` — Upsert a single DNS record (create if absent, update if content differs, no-op if identical). DRY-RUN by default — returns the planned diff and writes nothing u
- `delete_dns_record` — Delete exactly one DNS record after a fresh lookup. Requires domain, exact record_id, matching expected_name, and confirm=true. Refuses by default and never del
- `set_dmarc_policy` — Change the _dmarc policy (none|quarantine|reject), preserving other tags. DRY-RUN by default — returns the before/after diff and writes nothing unless apply=tru
- `setup_bimi` — Create/update the default._bimi TXT record pointing at a logo SVG. REFUSES to write when DMARC is p=none (unless force=true) because BIMI won't be honored witho
- `setup_email_routing` — Enable Cloudflare Email Routing and create forward rules (+ optional catch-all). Cloudflare auto-adds the MX/SPF records. DRY-RUN by default. Destination addres
- `pages_cutover` — Plan or apply a Cloudflare Pages DNS cutover. Deletes only conflicting apex/www A/AAAA/CNAME records and www NS delegations, then creates proxied CNAMEs to the 
- `purge_cache` — Purge Cloudflare's cache for a zone — the whole zone (default) or specific URLs. DRY-RUN by default: returns the scope and purges NOTHING unless apply=true. Nee
- `create_turnstile_widget` — Plan or create a Cloudflare Turnstile widget for a domain. DRY-RUN by default; creates the widget only when apply=true. Returns the public sitekey and one-time 
- `mint_scoped_token` — Mint a narrow, auto-expiring Cloudflare API token for ONE zone (presets: zone-read, dns-zone, cache-purge; default 1h TTL). The vending machine for least-privil
- `list_tokens` — List API tokens on the connected user: id, name, status, expiry, and whether cfops minted them. NEVER returns token values (Cloudflare only shows those once, at
- `revoke_token` — Revoke an API token by id (e.g. a minted task-token you're done with early). DRY-RUN by default; deletes nothing unless apply=true.
- `who_serves_domain` — Answer 'what is ACTUALLY serving this domain?': zone → Worker routes, Worker custom domains, and Pages projects that claim it, with a warning when multiple prod
- `account_doctor` — Diagnose the token/account situation: accounts visible to this token, whether the expected account is among them (wrong-token detection), and SAME-NAME Pages pr
- `pages_branch_check` — Compare a Pages project's production branch against the branch you're about to deploy — catches the silent 'git says master, project says main, every deploy lan
- `agent_research_start` — Delegate a bounded research, verification, zero-AI site-health, UI, Cloudflare diagnosis, inventory, data review, missed-items, or revision-proposal job to the 
- `agent_research_status` — Read one delegated job, including its redacted timeline, sources, primary result, independent verifier result, gaps, and candidate revisions.
- `agent_research_list` — List recent delegated jobs for this authenticated user. Read-only and tenant-isolated.
- `agent_briefing` — Return the Continuity Keeper's current compact project briefing and memory hash: active platform, target, blocker, keep/archive/drop guidance, and next safe ste
- `agent_control` — Safely pause or resume new agent work, cancel a queued/running job at its next phase boundary, force read-only mode, or run retention cleanup. Models cannot dis

## Install

**Verdict: review** — Installable, but 2 things to check first: No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
**Cautions** (coverage gaps and advisories — never blocking)
- No CVE coverage: this entry has no npm/PyPI coordinates to query OSV against, so "no known vulnerabilities" is not a claim that can be made about it.
- No publisher has proved control of this listing; it is indexed, not vouched for.
**Config** (claude-code):
```json
"{\n  \"mcpServers\": {\n    \"cloudflare-ops-mcp\": {\n      \"type\": \"http\",\n      \"url\": \"https://cfops.nothingunseen.com/mcp\"\n    }\n  }\n}"
```

## Blast radius

Moderate to extensive — no credential declaration found, from the publisher, the upstream registry, or the README. Known so far: deletes data; runs on someone else's infrastructure.
- Floor 33, ceiling 57 (tier: unknown)
- `unknown` means the floor and ceiling land in different bands — not measured enough to name one. It does not mean low.
- This is impact, not likelihood. A high radius is not a defect: a filesystem server is supposed to write files. It is never part of the trust score.

## Machine-readable views of this entry

- Signed JSON: https://forgeregistry.com/api/v1/packages/io.github.pain2hustle%2Fcloudflare-ops-mcp
- Install plan: https://forgeregistry.com/api/v1/packages/io.github.pain2hustle%2Fcloudflare-ops-mcp/install-plan
- Alternatives: https://forgeregistry.com/api/v1/alternatives/io.github.pain2hustle%2Fcloudflare-ops-mcp
- HTML page: https://forgeregistry.com/registry/io.github.pain2hustle%2Fcloudflare-ops-mcp
- MCP: POST https://forgeregistry.com/api/mcp → `forge_get_package` / `forge_install_plan`

## About this document

Generated by Forge (https://forgeregistry.com) — a compact rendering of the same record served, signed, at the JSON URL above. Trust and scan facts are the registry's own measurements; anything Forge did not measure is named as unmeasured rather than omitted.
