EarlyFra.me — Stateful Edge Webhook Orchestration & MCP Server
by earlyfra.me · remote · no sign-in to list tools · v7.0.0 · published by me.earlyfra
Stateful edge webhook fan-out to 4 targets, with confluence traps and human approval gates.
19 tools: 1 can delete or cancel things, 1 do something that can't be undone, 10 change things and 7 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone1Claude Code: ask: see these tools
- Changes things10Claude Code: ask: see these tools
- Only reads7Claude Code: allow: see these tools
2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http earlyframe https://relay.earlyfra.me/mcp --header 'X-EarlyFrame-Key: <your-x-earlyframe-key>'Findings
Matches of fixed checks, with the text they matched.
The server marks "simulate_webhook_frame" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
The server marks "synthesize_edge_ai" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
19 tools
Deletes or cancels 1Claude Code: deny
rotate_route_tokenCryptographically rotate a route's public whk_...No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Cryptographically rotate a route's public whk_... webhook ingest token without altering the Master Passkey. The previous URL stops working immediately.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: false
- openWorldHint: true
Can't be undone 1Claude Code: ask
purchase_quota_boostCreate a crypto checkout that adds extra webhook quota to an existing paid passkey (e.g.No findings
Why it is in this group
- The name "purchase_quota_boost" says "purchase": a word that usually means money moves, which cannot be taken back.
Description, as the server wrote it Create a crypto checkout that adds extra webhook quota to an existing paid passkey (e.g. agent_credit_100k, apex_overage_500k). Poll claim_subscription afterwards.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
Changes things 10Claude Code: ask
arm_confluence_trapProgrammatically arm or disarm a route's stateful signal gate: entity scope field, required confluence tags, sliding window and per-entity cooldown.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Programmatically arm or disarm a route's stateful signal gate: entity scope field, required confluence tags, sliding window and per-entity cooldown. Requires the Neural Frame tier. Use it to wait for N independent confirmations on the same entity before the route fires.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
claim_subscriptionExchange the claim_token from subscribe_plan for the provisioned Master Passkey.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
Description, as the server wrote it Exchange the claim_token from subscribe_plan for the provisioned Master Passkey. Poll until status is "completed"; returns api_key, tier, quota_limit and expiry.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
create_or_update_routeProgrammatically deploy or update a 1-to-4 fan-out route on the global edge (requires Neural Frame tier for write operations via MCP).No findings
Why it is in this group
- The name "create_or_update_route" says "create": a word for a change.
Description, as the server wrote it Programmatically deploy or update a 1-to-4 fan-out route on the global edge (requires Neural Frame tier for write operations via MCP).
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
extract_schema_tokensThe Intelligent Schema Extractor as an agent call: walks every retained inbound payload for a route and returns the {{dot.paths}} you can reference in a template — nested objects a…No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it The Intelligent Schema Extractor as an agent call: walks every retained inbound payload for a route and returns the {{dot.paths}} you can reference in a template — nested objects as data.object.amount, array projections as commits[].message — each with its inferred type, sample values, how many webhooks carried it and its presence ratio. Pass template_body to also see which of its tokens the traffic actually fills and how the cleaned alert renders: a token the payload lacks is dropped together with its label, so one ingest URL can serve several sources without leaking "RSI:" into the message.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
replay_historical_signalRe-run an ARCHIVED webhook against the route's CURRENT filter, enrichment, blackout, confluence and template rules — a time-travel backtest against real past traffic.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Re-run an ARCHIVED webhook against the route's CURRENT filter, enrichment, blackout, confluence and template rules — a time-travel backtest against real past traffic. dry_run=true reports the exact rule evaluation and transformed output without dispatching anything.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
set_agent_callbackRegister, rotate, or clear the HTTPS webhook that receives HMAC-signed subscription lifecycle events for this passkey.No findings
Why it is in this group
- The name "set_agent_callback" says "set": a word for a change.
Description, as the server wrote it Register, rotate, or clear the HTTPS webhook that receives HMAC-signed subscription lifecycle events for this passkey.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
simulate_webhook_frameRun a zero-quota dry-run simulation of a raw plain-text or JSON webhook payload against a route's filter rules, templates, and Edge AI synthesis.1 finding
Why it is in this group
- The description's first verb is "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "simulate_webhook_frame" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
Description, as the server wrote it Run a zero-quota dry-run simulation of a raw plain-text or JSON webhook payload against a route's filter rules, templates, and Edge AI synthesis.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
subscribe_planCreate a crypto checkout for a subscription plan and receive a concrete deposit address so an autonomous agent or treasury can settle it without a browser.No findings
Why it is in this group
- The name "subscribe_plan" says "subscribe": a word for a change.
Description, as the server wrote it Create a crypto checkout for a subscription plan and receive a concrete deposit address so an autonomous agent or treasury can settle it without a browser. Poll claim_subscription afterwards to obtain the Master Passkey.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: false
- openWorldHint: true
synthesize_edge_aiRun EarlyFra.me Edge AI over a raw webhook payload (JSON, form, or plain text) and return ai_summary, ai_sentiment and ai_score.1 finding
Why it is in this group
- The description's first verb is "run": a word for a change.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "synthesize_edge_ai" read-only (readOnlyHint: true), and its own name, description or input give the class "write".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The description's first verb is "run": a word for a change.
Description, as the server wrote it Run EarlyFra.me Edge AI over a raw webhook payload (JSON, form, or plain text) and return ai_summary, ai_sentiment and ai_score. Requires Neural Frame.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
update_route_templateWrite template_title, template_body and the custom JSON remapper onto an existing route in one call.No findings
Why it is in this group
- The name "update_route_template" says "update": a word for a change.
Description, as the server wrote it Write template_title, template_body and the custom JSON remapper onto an existing route in one call. The edit is partial: every field you leave out keeps its stored value, so destinations, noise-gate rules and stateful gates survive a template-only change. Requires the Neural Frame tier, and charges no quota — but the saved route starts shaping live traffic immediately.
Annotations the server declares
- readOnlyHint: false
- destructiveHint: false
- idempotentHint: true
- openWorldHint: true
Only reads 7Claude Code: allow
get_subscription_statusReturn the authenticated passkey's tier, plan, quota usage, expiry, routes, registered agent identity and callback delivery history.No findings
Why it is in this group
- The name "get_subscription_status" says "get": a word for reading.
Description, as the server wrote it Return the authenticated passkey's tier, plan, quota usage, expiry, routes, registered agent identity and callback delivery history.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
inspect_inbound_payloadRead the bytes a sender actually POSTed to an ingest URL, before any parsing, enrichment or filtering — one execution by event_id, or the newest few for a route.No findings
Why it is in this group
- The name "inspect_inbound_payload" says "inspect": a word for reading.
Description, as the server wrote it Read the bytes a sender actually POSTed to an ingest URL, before any parsing, enrichment or filtering — one execution by event_id, or the newest few for a route. Telemetry reports what the edge decided; this reports what arrived, which is what a template has to be written against. Read-only and never charges quota.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
inspect_live_telemetryFetch the latest 25 webhook execution logs (delivered and dropped signals, inbound edge location, per-target delivery latency in ms, and rescued JSON fields) from Edge Isolate RAM.No findings
Why it is in this group
- The name "inspect_live_telemetry" says "inspect": a word for reading.
Description, as the server wrote it Fetch the latest 25 webhook execution logs (delivered and dropped signals, inbound edge location, per-target delivery latency in ms, and rescued JSON fields) from Edge Isolate RAM.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_plansReturn every subscription and credit top-up an AI agent can buy programmatically, with prices, quotas, accepted crypto currencies, and the checkout/claim endpoints.No findings
Why it is in this group
- The name "list_plans" says "list": a word for reading.
Description, as the server wrote it Return every subscription and credit top-up an AI agent can buy programmatically, with prices, quotas, accepted crypto currencies, and the checkout/claim endpoints. No authentication required.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_routesList all deployed 1-to-4 webhook routes, isolated whk_ ingest URLs, filter rules, and quota metrics for the authenticated EarlyFra.me Master Passkey.No findings
Why it is in this group
- The name "list_routes" says "list": a word for reading.
Description, as the server wrote it List all deployed 1-to-4 webhook routes, isolated whk_ ingest URLs, filter rules, and quota metrics for the authenticated EarlyFra.me Master Passkey.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
preview_alert_templateDry-run a template against a payload without saving a route or charging quota: returns the rendered title and body, the exact JSON each configured destination would receive, which …No findings
Why it is in this group
- The name "preview_alert_template" says "preview": a word for reading.
Description, as the server wrote it Dry-run a template against a payload without saving a route or charging quota: returns the rendered title and body, the exact JSON each configured destination would receive, which tokens were omitted because the payload did not carry them, and how the noise gate, confluence and approval gates would judge the same body. Send raw_payload to test an arbitrary body, or event_id to replay one of your real retained webhooks.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
query_signal_memoryRead the durable state plane for a Master Passkey: recently archived webhook executions (delivered / filtered / retry_pending / dlq_failed) and the signal legs currently parked in …No findings
Why it is in this group
- The name "query_signal_memory" says "query": a word for reading.
Description, as the server wrote it Read the durable state plane for a Master Passkey: recently archived webhook executions (delivered / filtered / retry_pending / dlq_failed) and the signal legs currently parked in a confluence window, so an agent can see what is waiting, what failed, and what has already fired.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 7.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http earlyframe https://relay.earlyfra.me/mcp --header 'X-EarlyFrame-Key: <your-x-earlyframe-key>'Run in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__earlyframe__list_routes",
"mcp__earlyframe__inspect_live_telemetry",
"mcp__earlyframe__list_plans",
"mcp__earlyframe__get_subscription_status",
"mcp__earlyframe__query_signal_memory",
"mcp__earlyframe__inspect_inbound_payload",
"mcp__earlyframe__preview_alert_template"
],
"ask": [
"mcp__earlyframe__simulate_webhook_frame",
"mcp__earlyframe__create_or_update_route",
"mcp__earlyframe__subscribe_plan",
"mcp__earlyframe__claim_subscription",
"mcp__earlyframe__purchase_quota_boost",
"mcp__earlyframe__set_agent_callback",
"mcp__earlyframe__synthesize_edge_ai",
"mcp__earlyframe__arm_confluence_trap",
"mcp__earlyframe__replay_historical_signal",
"mcp__earlyframe__extract_schema_tokens",
"mcp__earlyframe__update_route_template"
],
"deny": [
"mcp__earlyframe__rotate_route_token"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as earlyframe. Review it before you use it.