Use ShieldNode with your AI agent
A drop-in skill that teaches Claude Code, Cursor, Continue, and any other agent how to integrate APIs through ShieldNode, without you having to explain it every time.
What is the skill?
It's a single SKILL.md file (plus a services/ folder) that lives inside your project. When your AI agent needs to integrate an API, it reads the skill, walks you through configuration, and writes per-service reference notes that future sessions reuse.
Configure services correctly
Auto / Manual / AI configuration paths, with the base-URL formatting rules baked in.
Generate reference docs
The agent fetches the API's documentation and saves a clean reference file per service.
Debug like a senior
HTTP error decision tree, base-URL gotchas, and curl diagnostic commands ready to paste.
Install
Pick the option that matches how your agent loads context.
Drop into your project (recommended)
Most agent runtimes (Claude Code, Cursor) auto-discover skills under skills/.
| tar -xz -C skills --strip-components=1
Single file
Just the instructions, no auto-discovery. Point your agent at it from a system prompt.
Git submodule
Pin to a specific commit and pull updates explicitly.
Use it
Just talk to your agent normally, no special syntax. Examples:
“I want to integrate the Stripe API through ShieldNode. Set it up.”
“My OpenAI proxy returns 404, what's going on?”
“Generate a reference doc for the Resend API.”
“I configured the Airtable base URL without /v0, what URL should I call?”
The agent reads SKILL.md, asks you any missing info, and saves what it learns under skills/services/<api>.md. Future sessions don't re-fetch the docs, they read the local file.
What it teaches the agent
Push approval (the marquee flow)
Push approval is the marquee feature ShieldNode exposes to agents. A user can keep a virtual key disabled by default. When the agent calls that key, the proxy does not return a generic error. It triggers a push notification on the user's phone and returns 403 approval_required. The agent polls. The user taps Approve. The key activates for a bounded window. The next call returns 200.
Headers an agent should send
X-Agent-Name(highly recommended)
Your agent's identity. The notification body reads “Claude requests 5 min on production-key” instead of the generic“External agent requests…”. Specific identities get approved. Capped at 60 characters server-side.
X-Approval-Duration(optional)
How long the agent needs access. Accepts plain integers (minutes) or shorthand like15m /2h. Server clamps to 1…1440. Falls back to the user's per-key default (30 min) when absent.
Response shapes
# Awaiting user approval (poll and retry)
HTTP 403
{
"error": "approval_required",
"request_id": "...",
"requested_minutes": 15,
"poll_interval_seconds": 30,
"timeout_seconds": 300
}
# User declined (stop polling, tell the user)
HTTP 403
{ "error": "approval_denied" }
# No mobile device registered (no approval channel)
HTTP 403
{ "error": "key_disabled" }
# Granted (resume normal operation)
HTTP 200
{ ... upstream response ... }Behaviour the skill enforces
- · Always send
X-Agent-Name. Anonymous requests get ignored more often than approved. - · Right-size
X-Approval-Durationto the workload. A 5-min chat reply is not an 8-hour batch. - · Tell the user once that an approval is pending. Then poll silently. Repeating chat messages every 30 seconds feels like spyware.
- · Stop on explicit decline. Do not retry just because the call failed. The user said no.
- · Respect the timeout. After 5 minutes with no answer, the agent should ask the user in chat whether to try again rather than loop forever.
The skill ships with a canonical Python implementation of the polling loop covering every code path above.Read it on GitHub.
Bonus: bypass Cloudflare bot rules
Many third-party APIs sit behind Cloudflare with strict bot-detection rules. When you call them directly from a Python requests, Node axios, Go net/http, or any other HTTP library, Cloudflare can fingerprint your client (TLS handshake + User-Agent) and reject the call with HTTP 403 / error code 1010, even though your IP is fine and your credentials are valid.
Routing the request through ShieldNode fixes this. The proxy uses a browser-like User-Agent and a hosting-provider IP that Cloudflare trusts when forwarding upstream, your client only has to reach proxy.shieldnode.app.
Direct (Python requests → CF-protected API):
Through ShieldNode:
If your use case requires a specific User-Agent for analytics or partner attribution, send it via the X-ShieldNode-User-Agent header, the proxy will use that value upstream instead of the default browser UA.
Compatibility
The skill is plain markdown, it works with any agent that can read instructions from a file. Tested with:
Claude Code
Auto-discovered under skills/
Cursor
Reference via .cursorrules or @-mention
Continue
Add as a context provider
Custom agents
Inject into the system prompt
Browse the source
The skill is open-source. Read it, fork it, send a PR if something is missing.