# EarlyFra.me — Stateful Edge Webhook Orchestration & MCP Server (remote · relay.earlyfra.me)

Stateful edge webhook fan-out to 4 targets, with confluence traps and human approval gates.

- Trust score: 77/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-10-22

## Components

- remote · `relay.earlyfra.me`: 77/100 (this document), [markdown](https://verifymcp.io/servers/me-earlyfra-earlyframe-mcp/relay.md), [page](https://verifymcp.io/servers/me-earlyfra-earlyframe-mcp/relay)

## Channel facts

- Endpoint: `https://relay.earlyfra.me/mcp`
- Transports: `streamable-http`
- Auth: `required (not validated)`
- Version: `7.0.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-10-22.

- **Endpoint Security**: 89/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, but the challenge carries no valid RFC 9728 metadata, so a client cannot discover where to get a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 67/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2715 tokens (~142/item across 19 items; 19 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 13/100
  - Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 94/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 83% of tool parameters carry a description.
- **Tool Safety**: 100/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - We read all 19 captured tool definition(s), and no name or description among them implies an irreversible operation.
  - An AI judge read all 20 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… server?

EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… is a hosted endpoint at https://relay.earlyfra.me/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http me-earlyfra-earlyframe-mcp 'https://relay.earlyfra.me/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "me-earlyfra-earlyframe-mcp": {
      "url": "https://relay.earlyfra.me/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "me-earlyfra-earlyframe-mcp": {
      "type": "http",
      "url": "https://relay.earlyfra.me/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.me-earlyfra-earlyframe-mcp]
url = "https://relay.earlyfra.me/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "me-earlyfra-earlyframe-mcp": {
      "type": "remote",
      "url": "https://relay.earlyfra.me/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add me-earlyfra-earlyframe-mcp --url 'https://relay.earlyfra.me/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  me-earlyfra-earlyframe-mcp:
    url: "https://relay.earlyfra.me/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "me-earlyfra-earlyframe-mcp": {
      "Transport": "http",
      "Url": "https://relay.earlyfra.me/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add me-earlyfra-earlyframe-mcp -t streamable-http -u 'https://relay.earlyfra.me/mcp'
```

### Other

```json
{
  "mcpServers": {
    "me-earlyfra-earlyframe-mcp": {
      "type": "http",
      "url": "https://relay.earlyfra.me/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-10-21 (score 77, +1)

No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-10-20 (score 76, +3)

- [security] Tool “inspect_live_telemetry” rewrote its description, which is the text the model reads
- [functional improvement] MCP protocol: fail → pass
- [functional] MCP protocol version: 2025-03-26 → 2025-11-25
- [functional] Server version: 7.0.0 → 7.1.2
- [cosmetic] “replay_historical_signal” reworded the description of “route_id”

### 2026-10-19 (score 73, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [functional regression] Schema quality: 116 → 142
- [functional improvement] Tool coverage: 78% → 83%
- [functional improvement] Stability: unverified → 0.03
- [functional] Server version: 6.2.0 → 7.0.0
- [functional] New tool “extract_schema_tokens”
- [functional] New tool “inspect_inbound_payload”
- [functional] New tool “preview_alert_template”
- [functional] New tool “update_route_template”

### 2026-10-18 (score 73)

First indexed and scored.

## MCP tools (19)

### `list_routes` (~42 tokens)

List webhook routes

List all deployed 1-to-4 webhook routes, isolated whk_ ingest URLs, filter rules, and quota metrics for the authenticated EarlyFra.me Master Passkey.

### `inspect_live_telemetry` (~83 tokens)

Inspect live telemetry

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.

Input parameters:

- `limit` (number): Max log items to return (1-25)
- `route_id` (string): Optional route_id filter (e.g. rt_1)

### `simulate_webhook_frame` (~72 tokens)

Dry-run a webhook payload

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.

Input parameters:

- `raw_payload` (string, required): Raw plain-text or JSON webhook payload to test
- `route_id` (string): Optional route_id to test against

### `create_or_update_route` (~187 tokens)

Create or update a fan-out route

Programmatically deploy or update a 1-to-4 fan-out route on the global edge (requires Neural Frame tier for write operations via MCP).

Input parameters:

- `ai_enrich` (boolean): Inject {{ai_summary}} and {{ai_sentiment}} into payload
- `custom_webhook_url` (string)
- `dedup_window_sec` (number)
- `discord_webhook_url` (string)
- `filter_logic` (string)
- `filters` (array)
- `id` (string): Route ID (e.g. rt_1) or 'new' to create a new route
- `name` (string, required): Human-readable route label
- `slack_webhook_url` (string)
- `telegram_bot_url` (string)
- `telegram_chat_id` (string)
- `template_body` (string)
- `template_title` (string)

### `rotate_route_token` (~55 tokens)

Rotate a route ingest token

Cryptographically rotate a route's public whk_... webhook ingest token without altering the Master Passkey. The previous URL stops working immediately.

Input parameters:

- `route_id` (string, required): Target route ID (e.g. rt_1)

### `list_plans` (~44 tokens)

List agent-purchasable plans

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.

### `subscribe_plan` (~215 tokens)

Buy a subscription (machine-payable)

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.

Input parameters:

- `agent` (object): Optional agent identity recorded on the subscription
- `callback_url` (string): HTTPS endpoint that receives HMAC-signed subscription.activated / quota.topped_up lifecycle events
- `email` (string, required): Owner/operator email for receipts and passkey recovery
- `existing_api_key` (string): Existing ef_live_... passkey when renewing, upgrading, or buying a credit top-up
- `metadata` (object): Optional opaque metadata (<= 1024 bytes) stored with the subscription
- `pay_currency` (string): Settlement currency, e.g. usdttrc20 (default), usdterc20, usdc, btc, eth, sol
- `plan_id` (string, required): Plan from list_plans, e.g. neural_monthly, pro_monthly, agent_credit_100k

### `claim_subscription` (~69 tokens)

Claim a paid subscription

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.

Input parameters:

- `claim_token` (string, required): claim_token returned by subscribe_plan
- `order_id` (string, required): order_id returned by subscribe_plan

### `get_subscription_status` (~34 tokens)

Read subscription and quota status

Return the authenticated passkey's tier, plan, quota usage, expiry, routes, registered agent identity and callback delivery history.

### `purchase_quota_boost` (~92 tokens)

Buy a credit top-up

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.

Input parameters:

- `pack` (string, required): Credit pack plan_id, e.g. agent_credit_100k or apex_overage_500k
- `pay_currency` (string): Settlement currency, default usdttrc20

### `set_agent_callback` (~51 tokens)

Register an agent lifecycle callback

Register, rotate, or clear the HTTPS webhook that receives HMAC-signed subscription lifecycle events for this passkey.

Input parameters:

- `callback_url` (string, required): HTTPS endpoint, or an empty string to clear the callback

### `synthesize_edge_ai` (~61 tokens)

Synthesize Edge AI signal enrichment

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.

Input parameters:

- `raw_payload` (string, required): Raw payload text or JSON to analyse

### `query_signal_memory` (~146 tokens)

Query the edge signal memory

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.

Input parameters:

- `entity_key` (string): Optional entity scope filter, matching the route's stateful_gate.entity_field (e.g. SOLUSDT)
- `limit` (number): Max rows per bucket (1-50, default 20)
- `route_id` (string): Optional route_id filter (e.g. rt_1)
- `status_filter` (string): Optional archive status filter

### `arm_confluence_trap` (~214 tokens)

Arm a multi-signal confluence trap

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.

Input parameters:

- `cooldown_sec` (number): Mute repeat signals for the same entity for N seconds after firing (0 = off)
- `enabled` (boolean): Set false to disarm the trap without clearing the rest of the route
- `entity_field` (string): Dot-notation payload field that scopes the trap (default ticker)
- `required_tags` (array): Signal legs that must ALL arrive inside the window, e.g. ["15m","1h"]
- `route_id` (string, required): Target route ID (e.g. rt_1)
- `tag_field` (string): Field identifying the leg (default timeframe)
- `window_sec` (number): Confluence sliding window in seconds (30-86400, default 900)

### `replay_historical_signal` (~135 tokens)

Replay a historical signal

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.

Input parameters:

- `dry_run` (boolean): true (default) = report only; false = re-dispatch through the current rules
- `event_id` (string, required): Archived event_id to replay (from query_signal_memory or inspect_live_telemetry)
- `route_id` (string): Optional route whose current rules should be applied; defaults to the route that received the archived event

### `inspect_inbound_payload` (~159 tokens)

Inspect raw inbound payloads

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.

Input parameters:

- `event_id` (string): Inspect one retained execution in full (from inspect_live_telemetry or query_signal_memory)
- `limit` (number): Max events to return when listing (1-25, default 5)
- `route_id` (string): Optional route_id to list the newest retained inbounds for (e.g. rt_1). Omit to cover every route on the passkey.

### `extract_schema_tokens` (~169 tokens)

Extract template tokens from live traffic

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.

Input parameters:

- `route_id` (string): Route to extract from (defaults to every retained webhook on the passkey)
- `template_body` (string): Optional draft body: adds resolved_tokens, omitted_tokens and rendered_preview

### `preview_alert_template` (~230 tokens)

Preview a template against a payload

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.

Input parameters:

- `custom_body_template` (string): Override the JSON remapper sent to the custom webhook for this preview only
- `event_id` (string): Or replay one of your retained inbound webhooks by event_id (takes precedence over raw_payload)
- `raw_payload` (string): Body to test — JSON, plain text or form-encoded. The edge rescues unstructured text into fields.
- `route_id` (string): Use a saved route's destinations, filters and gates (defaults to the first route)
- `template_body` (string): Override the route's body template for this preview only
- `template_title` (string): Override the route's title template for this preview only

### `update_route_template` (~170 tokens)

Save a route template

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.

Input parameters:

- `custom_body_template` (string): JSON remapper for the 4th destination. Must stay valid JSON once placeholders are substituted.
- `route_id` (string, required): Target route ID (e.g. rt_1)
- `template_body` (string): New body template, up to 600 characters
- `template_title` (string): New title template. An empty string clears it; omit the field to keep the current one.

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/me-earlyfra-earlyframe-mcp/relay#diagnostics

## Score history

- 2026-10-22: 77
- 2026-10-21: 77
- 2026-10-20: 76
- 2026-10-19: 73
- 2026-10-18: 73

## Common questions

### What is the EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… server?

EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… is listed in the public MCP registry as me.earlyfra/earlyframe-mcp. Stateful edge webhook fan-out to 4 targets, with confluence traps and human approval gates. This page covers its hosted endpoint (https://relay.earlyfra.me/mcp).

### Is the EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… server safe to use?

EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… scores 77 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… server expose?

EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… exposes 19 tools: list_routes, inspect_live_telemetry, simulate_webhook_frame, create_or_update_route, rotate_route_token, and 14 more. Their descriptions and schemas cost roughly 2,228 tokens of context every time the server is loaded.

### Does the EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… server require authentication?

Yes. EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.

### Is the EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… server still maintained?

EarlyFra.me — Stateful Edge Webhook Orchestration & MCP… is still listed as active in the MCP registry. We last reached this channel on 22 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://relay.earlyfra.me/mcp
- Authorisation metadata: https://relay.earlyfra.me/.well-known/oauth-protected-resource/mcp
- Website: https://earlyfra.me/
- Changelog RSS feed: https://verifymcp.io/servers/me-earlyfra-earlyframe-mcp/relay.xml
- Changelog JSON feed: https://verifymcp.io/servers/me-earlyfra-earlyframe-mcp/relay.json
- HTML version of this page: https://verifymcp.io/servers/me-earlyfra-earlyframe-mcp/relay
