FrameWorks
Multi-tenant live streaming platform with three access layers and crypto-native auth.
Skill Files
Platform Overview
Interfaces
| Interface |
Endpoint |
Best For |
| MCP |
POST /mcp |
Full agent integration — tools, resources, prompts. Richest experience. |
| GraphQL |
POST /graphql |
Typed queries/mutations/subscriptions. Good for custom integrations. |
| REST |
/auth/* |
Authentication only (wallet login, JWT refresh). |
Authentication Methods
| Method |
Headers |
Use Case |
| Wallet (EIP-191) |
X-Wallet-Address, X-Wallet-Signature, X-Wallet-Message |
Primary agent auth. Auto-provisions tenant on first login. |
| x402 Payment |
X-PAYMENT: <base64> |
Gasless USDC payment per-request. Also acts as anti-abuse barrier. |
| Bearer JWT |
Authorization: Bearer <token> |
Session token from wallet-login response. |
What You Can Do
| Category |
MCP Tools |
MCP Resources |
GraphQL |
| Streams |
create, update, delete, refresh keys |
list, details, health |
mutations + queries + subscriptions |
| Clips |
create from live/recorded, delete |
— |
mutations + queries |
| DVR |
start/stop catch-up recording |
— |
mutation |
| VOD |
upload, complete, abort, delete |
list, details |
mutations + queries |
| Playback |
resolve viewer endpoints (geo-routed) |
— |
query |
| Billing |
top up, submit payment, check deposits |
balance, pricing, transactions |
queries |
| Analytics |
— |
usage, viewers, geographic |
queries |
| QoE Diagnostics |
rebuffering, buffer, packet loss, routing |
— |
— |
| Support |
search conversations |
history |
— |
| API Exploration |
introspect schema, generate & execute queries |
schema catalog |
introspection |
| Knowledge |
ask_consultant |
knowledge://sources |
— |
MCP: 29 tools, 18 resources, 8 prompts — full discovery via tools/list and resources/list.
GraphQL: introspection enabled at /graphql — full schema discovery built-in.
Security Notes
- Never share private keys or seed phrases with third parties.
- Store agent credentials locally (see Credentials below).
- Only send authentication headers to
*.frameworks.network domains.
Credentials
Store credentials at ~/.config/frameworks/credentials.json:
{
"wallet_address": "0x...",
"jwt": "eyJ...",
"api_base": "https://bridge.frameworks.network"
}
Or use environment variables: FRAMEWORKS_WALLET_PRIVKEY, FRAMEWORKS_JWT.
Quick Start (Agent Flow)
- Create or load an EVM wallet.
- Sign a wallet login message (EIP-191) and call
POST /auth/wallet-login to auto-provision a prepaid tenant.
- Fund the tenant via x402 or crypto deposit.
- Connect via MCP (
POST /mcp) or GraphQL (POST /graphql) with wallet headers or JWT.
- Create a stream and push RTMP using the stream key.
Wallet Authentication
Headers:
X-Wallet-Address: 0x...
X-Wallet-Signature: 0x... (EIP-191 personal_sign)
X-Wallet-Message: <exact message>
Message format (verbatim):
FrameWorks Login
Timestamp: 2025-01-15T12:00:00Z
Nonce: 12345
Wallet login endpoint: POST /auth/wallet-login
MCP Configuration
Discovery: GET /.well-known/mcp.json
Endpoint: POST /mcp
Transport: HTTP + SSE (streamable-http)
Example (Claude Desktop)
{
"mcpServers": {
"frameworks": {
"url": "https://bridge.frameworks.network/mcp",
"headers": {
"X-Wallet-Address": "0x...",
"X-Wallet-Signature": "0x...",
"X-Wallet-Message": "FrameWorks Login\nTimestamp: 2025-01-15T12:00:00Z\nNonce: 12345"
}
}
}
}
x402 Payments
Gasless USDC payments for instant top-ups or per-request auth. Also acts as an economic barrier against automated abuse.
- Header:
X-PAYMENT: <base64 payload>
- Supported networks: Base, Arbitrum (USDC)
GraphQL (Alternative Interface)
Endpoint: POST /graphql
Key operations:
- Mutations:
createStream, updateStream, deleteStream, refreshStreamKey
- Queries:
streams, stream, me, balance
- Subscriptions:
streamHealthUpdated
Authentication: same wallet headers or bearer token.
Rate Limits & Billing
- API requests are free; usage costs apply to viewer hours, storage, and processing.
- Prepaid balance must be positive to run billable operations.
- Use MCP
billing://balance or GraphQL balance query to monitor balance and drain rate.
Streaming Best Practices
- Check balance before creating streams. Active streams drain balance continuously. Use
billing://balance (MCP) or balance query (GraphQL) to check drain rate.
- Monitor stream health. Read
streams://{id}/health periodically during live streams. Use QoE diagnostic tools if viewers report issues.
- Top up proactively. Streams are terminated if balance drops below -$10. Use x402 auto-payment or
topup_balance to maintain buffer.
- Clean up after yourself. Delete streams, clips, and VOD assets you no longer need. Storage costs are ongoing.
Video Consultant (Skipper)
Use ask_consultant to query the Skipper pipeline — knowledge retrieval, query rewriting, reranking, optional web search, and multi-step reasoning. Every answer includes confidence tagging and source citations.
Knowledge Domains
| Domain |
Coverage |
| FrameWorks |
Platform docs: ingest, playback, API, cluster deployment, billing |
| MistServer |
Configuration, protocols, triggers, push targets, container formats |
| FFmpeg |
Encoding: H.264, HEVC, VP9, AV1, hardware acceleration, bitrate control |
| OBS |
Studio setup, streaming configuration, encoder settings, troubleshooting |
| SRT |
Protocol specification, configuration, latency tuning |
| HLS |
RFC 8216, playlist formats, segment encoding, LL-HLS |
| nginx-rtmp |
Module configuration, directives, live streaming setup |
| Ecosystem |
Livepeer, WebRTC standards, DASH specification |
Read knowledge://sources for the live list of indexed URLs and sitemaps.
Effective Queries
- Be specific: include protocol, codec, or tool name
- Good: "How do I configure SRT latency in MistServer for a 500ms target?"
- Weak: "How to reduce latency?"
- Platform questions: mention "FrameWorks" explicitly to prioritize platform docs
- Mode:
"docs" for factual lookups (faster, no web), "full" (default) for web-augmented reasoning
- Iterate: if confidence is
best_guess or unknown, rephrase with different terminology
Confidence Tags
| Tag |
Meaning |
Agent Action |
verified |
Grounded in indexed documentation |
Safe for autonomous action |
sourced |
Found via web search with URL |
Act with verification |
best_guess |
Inferred from adjacent knowledge |
Present to human for confirmation |
unknown |
No strong evidence |
Do not act autonomously |
Tool Composition
For stream diagnostics, collect data first, then interpret:
get_stream_health_summary — overview (bitrate, FPS, issues)
- Symptom-specific tool (
diagnose_rebuffering, diagnose_buffer_health, diagnose_packet_loss, diagnose_routing)
ask_consultant — pass diagnostic JSON for expert recommendations
Guided Workflows
| Prompt |
Use Case |
video_consultant |
Expert streaming consultant persona |
diagnose_quality_issue(stream_id, symptom) |
Structured diagnostic workflow |
agent_instructions |
Comprehensive MCP usage guide |
troubleshoot_stream(stream_id) |
Stream-specific issue resolution |
optimize_costs |
Usage analysis and savings |
api_integration_assistant(goal) |
GraphQL API integration help |
Node Management
Agents that provision their own edge infrastructure can manage node lifecycle:
- Create cluster:
create_private_cluster — get bootstrap enrollment token
- Add nodes:
create_enrollment_token for additional edges in the same cluster
- Provision:
frameworks edge provision --enrollment-token <token> --ssh user@host
- Check health:
get_node_info for registration data, get_node_health for live metrics (CPU, RAM, bandwidth, active viewers)
- Set mode via API:
set_node_mode — no SSH needed, goes through Gateway → Commodore → Foghorn
- Set mode via CLI:
frameworks edge mode draining / maintenance / normal (local or --ssh user@host)
- Diagnose:
frameworks edge doctor + frameworks edge logs
Two management paths: use set_node_mode / get_node_health MCP tools when you don't have SSH access. Use CLI commands when you're on the edge or have SSH. Use manage_node for guided CLI command generation.
When to Alert Your Human
Do alert:
- Balance is critically low (< $5 with active streams)
- Stream health shows
critical status
- Billing details are missing and you can't proceed
- x402 payment settlement fails
- Wallet signature is rejected (may need re-signing)
Heartbeat (Periodic Check)
Run every 15–30 minutes during active streaming, every few hours otherwise.
- Account health: Read
account://status. Resolve any blockers.
- Balance: Read
billing://balance. Alert human if < $5 with active streams.
- Active streams: Read
streams://list. For each live stream, read streams://{id}/health. If status: critical, run diagnose_rebuffering and diagnose_buffer_health.
- Skill updates: Check
skill.json version periodically (once/day).
If nothing notable: no output needed.
If action required: surface the specific issue and recommended resolution.
For the full periodic check routine, load heartbeat.md.
Preflight Errors
Billable MCP tools run preflight checks before execution. These are the blocking errors:
| Code |
Trigger |
Resolution |
AUTHENTICATION_REQUIRED |
No wallet headers or bearer token |
Send X-Wallet-Address + X-Wallet-Signature + X-Wallet-Message, or Authorization: Bearer <jwt> |
BILLING_DETAILS_MISSING |
Account has no billing address |
Call update_billing_details tool with address fields |
INSUFFICIENT_BALANCE |
Prepaid balance ≤ $0 |
Pay via x402 (submit_payment) or topup_balance. Check billing://balance for current state |
Rate limiting is handled at the Gateway layer (HTTP 429) with standard Retry-After headers — not as a preflight error.
Free operations (reads, listing, health checks) skip preflight entirely.
Example: First Stream
- Authenticate — Sign EIP-191 message (
"FrameWorks Login\nTimestamp: <ISO8601>\nNonce: <random>"), call POST /auth/wallet-login → receive JWT + tenant auto-provisioned.
- Connect —
POST /mcp or POST /graphql with Authorization: Bearer <jwt> or wallet headers.
- Resolve blockers — Read
account://status → check blockers. Fix BILLING_DETAILS_MISSING with update_billing_details, INSUFFICIENT_BALANCE with x402 or topup_balance.
- Create & stream —
create_stream → capture stream_key + rtmp_url. Push RTMP: rtmp://<ingest>/live/<stream_key>.
- Monitor — Read
streams://{id}/health periodically. If issues: diagnose_rebuffering, diagnose_buffer_health.
- Wrap up —
delete_stream or leave. Check billing://balance for cost.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: livepeer-frameworks-monorepo-skills3description: FrameWorks4---56# FrameWorks78Multi-tenant live streaming platform with three access layers and crypto-native auth.910## Skill Files1112| File | URL |13| ------------- | ------------------------------------------------------ |14| SKILL.md | https://frameworks.network/SKILL.md |15| skill.json | https://frameworks.network/skill.json |16| heartbeat.md | https://frameworks.network/heartbeat.md |17| MCP discovery | https://bridge.frameworks.network/.well-known/mcp.json |1819## Platform Overview2021### Interfaces2223| Interface | Endpoint | Best For |24| ----------- | --------------- | ----------------------------------------------------------------------- |25| **MCP** | `POST /mcp` | Full agent integration — tools, resources, prompts. Richest experience. |26| **GraphQL** | `POST /graphql` | Typed queries/mutations/subscriptions. Good for custom integrations. |27| **REST** | `/auth/*` | Authentication only (wallet login, JWT refresh). |2829### Authentication Methods3031| Method | Headers | Use Case |32| -------------------- | ------------------------------------------------------------ | ------------------------------------------------------------------ |33| **Wallet** (EIP-191) | `X-Wallet-Address`, `X-Wallet-Signature`, `X-Wallet-Message` | Primary agent auth. Auto-provisions tenant on first login. |34| **x402 Payment** | `X-PAYMENT: <base64>` | Gasless USDC payment per-request. Also acts as anti-abuse barrier. |35| **Bearer JWT** | `Authorization: Bearer <token>` | Session token from wallet-login response. |3637### What You Can Do3839| Category | MCP Tools | MCP Resources | GraphQL |40| --------------- | --------------------------------------------- | ------------------------------ | ----------------------------------- |41| Streams | create, update, delete, refresh keys | list, details, health | mutations + queries + subscriptions |42| Clips | create from live/recorded, delete | — | mutations + queries |43| DVR | start/stop catch-up recording | — | mutation |44| VOD | upload, complete, abort, delete | list, details | mutations + queries |45| Playback | resolve viewer endpoints (geo-routed) | — | query |46| Billing | top up, submit payment, check deposits | balance, pricing, transactions | queries |47| Analytics | — | usage, viewers, geographic | queries |48| QoE Diagnostics | rebuffering, buffer, packet loss, routing | — | — |49| Support | search conversations | history | — |50| API Exploration | introspect schema, generate & execute queries | schema catalog | introspection |51| Knowledge | ask_consultant | knowledge://sources | — |5253MCP: 29 tools, 18 resources, 8 prompts — full discovery via `tools/list` and `resources/list`.54GraphQL: introspection enabled at `/graphql` — full schema discovery built-in.5556## Security Notes5758- Never share private keys or seed phrases with third parties.59- Store agent credentials locally (see Credentials below).60- Only send authentication headers to `*.frameworks.network` domains.6162## Credentials6364Store credentials at `~/.config/frameworks/credentials.json`:6566```json67{68 "wallet_address": "0x...",69 "jwt": "eyJ...",70 "api_base": "https://bridge.frameworks.network"71}72```7374Or use environment variables: `FRAMEWORKS_WALLET_PRIVKEY`, `FRAMEWORKS_JWT`.7576## Quick Start (Agent Flow)77781. **Create or load an EVM wallet.**792. **Sign a wallet login message** (EIP-191) and call `POST /auth/wallet-login` to auto-provision a prepaid tenant.803. **Fund the tenant** via x402 or crypto deposit.814. **Connect** via MCP (`POST /mcp`) or GraphQL (`POST /graphql`) with wallet headers or JWT.825. **Create a stream** and push RTMP using the stream key.8384## Wallet Authentication8586Headers:8788- `X-Wallet-Address: 0x...`89- `X-Wallet-Signature: 0x...` (EIP-191 `personal_sign`)90- `X-Wallet-Message: <exact message>`9192Message format (verbatim):9394```95FrameWorks Login96Timestamp: 2025-01-15T12:00:00Z97Nonce: 1234598```99100Wallet login endpoint: `POST /auth/wallet-login`101102## MCP Configuration103104Discovery: `GET /.well-known/mcp.json`105Endpoint: `POST /mcp`106Transport: HTTP + SSE (streamable-http)107108### Example (Claude Desktop)109110```json111{112 "mcpServers": {113 "frameworks": {114 "url": "https://bridge.frameworks.network/mcp",115 "headers": {116 "X-Wallet-Address": "0x...",117 "X-Wallet-Signature": "0x...",118 "X-Wallet-Message": "FrameWorks Login\nTimestamp: 2025-01-15T12:00:00Z\nNonce: 12345"119 }120 }121 }122}123```124125## x402 Payments126127Gasless USDC payments for instant top-ups or per-request auth. Also acts as an economic barrier against automated abuse.128129- Header: `X-PAYMENT: <base64 payload>`130- Supported networks: Base, Arbitrum (USDC)131132## GraphQL (Alternative Interface)133134Endpoint: `POST /graphql`135136Key operations:137138- Mutations: `createStream`, `updateStream`, `deleteStream`, `refreshStreamKey`139- Queries: `streams`, `stream`, `me`, `balance`140- Subscriptions: `streamHealthUpdated`141142Authentication: same wallet headers or bearer token.143144## Rate Limits & Billing145146- API requests are free; usage costs apply to viewer hours, storage, and processing.147- Prepaid balance must be positive to run billable operations.148- Use MCP `billing://balance` or GraphQL `balance` query to monitor balance and drain rate.149150## Streaming Best Practices151152- **Check balance before creating streams.** Active streams drain balance continuously. Use `billing://balance` (MCP) or `balance` query (GraphQL) to check drain rate.153- **Monitor stream health.** Read `streams://{id}/health` periodically during live streams. Use QoE diagnostic tools if viewers report issues.154- **Top up proactively.** Streams are terminated if balance drops below -$10. Use x402 auto-payment or `topup_balance` to maintain buffer.155- **Clean up after yourself.** Delete streams, clips, and VOD assets you no longer need. Storage costs are ongoing.156157## Video Consultant (Skipper)158159Use `ask_consultant` to query the Skipper pipeline — knowledge retrieval, query rewriting, reranking, optional web search, and multi-step reasoning. Every answer includes confidence tagging and source citations.160161### Knowledge Domains162163| Domain | Coverage |164| ---------- | ------------------------------------------------------------------------ |165| FrameWorks | Platform docs: ingest, playback, API, cluster deployment, billing |166| MistServer | Configuration, protocols, triggers, push targets, container formats |167| FFmpeg | Encoding: H.264, HEVC, VP9, AV1, hardware acceleration, bitrate control |168| OBS | Studio setup, streaming configuration, encoder settings, troubleshooting |169| SRT | Protocol specification, configuration, latency tuning |170| HLS | RFC 8216, playlist formats, segment encoding, LL-HLS |171| nginx-rtmp | Module configuration, directives, live streaming setup |172| Ecosystem | Livepeer, WebRTC standards, DASH specification |173174Read `knowledge://sources` for the live list of indexed URLs and sitemaps.175176### Effective Queries177178- **Be specific**: include protocol, codec, or tool name179 - Good: "How do I configure SRT latency in MistServer for a 500ms target?"180 - Weak: "How to reduce latency?"181- **Platform questions**: mention "FrameWorks" explicitly to prioritize platform docs182- **Mode**: `"docs"` for factual lookups (faster, no web), `"full"` (default) for web-augmented reasoning183- **Iterate**: if confidence is `best_guess` or `unknown`, rephrase with different terminology184185### Confidence Tags186187| Tag | Meaning | Agent Action |188| ------------ | --------------------------------- | --------------------------------- |189| `verified` | Grounded in indexed documentation | Safe for autonomous action |190| `sourced` | Found via web search with URL | Act with verification |191| `best_guess` | Inferred from adjacent knowledge | Present to human for confirmation |192| `unknown` | No strong evidence | Do not act autonomously |193194### Tool Composition195196For stream diagnostics, collect data first, then interpret:1971981. `get_stream_health_summary` — overview (bitrate, FPS, issues)1992. Symptom-specific tool (`diagnose_rebuffering`, `diagnose_buffer_health`, `diagnose_packet_loss`, `diagnose_routing`)2003. `ask_consultant` — pass diagnostic JSON for expert recommendations201202### Guided Workflows203204| Prompt | Use Case |205| -------------------------------------------- | ----------------------------------- |206| `video_consultant` | Expert streaming consultant persona |207| `diagnose_quality_issue(stream_id, symptom)` | Structured diagnostic workflow |208| `agent_instructions` | Comprehensive MCP usage guide |209| `troubleshoot_stream(stream_id)` | Stream-specific issue resolution |210| `optimize_costs` | Usage analysis and savings |211| `api_integration_assistant(goal)` | GraphQL API integration help |212213## Node Management214215Agents that provision their own edge infrastructure can manage node lifecycle:2162171. **Create cluster**: `create_private_cluster` — get bootstrap enrollment token2182. **Add nodes**: `create_enrollment_token` for additional edges in the same cluster2193. **Provision**: `frameworks edge provision --enrollment-token <token> --ssh user@host`2204. **Check health**: `get_node_info` for registration data, `get_node_health` for live metrics (CPU, RAM, bandwidth, active viewers)2215. **Set mode via API**: `set_node_mode` — no SSH needed, goes through Gateway → Commodore → Foghorn2226. **Set mode via CLI**: `frameworks edge mode draining` / `maintenance` / `normal` (local or `--ssh user@host`)2237. **Diagnose**: `frameworks edge doctor` + `frameworks edge logs`224225Two management paths: use `set_node_mode` / `get_node_health` MCP tools when you don't have SSH access. Use CLI commands when you're on the edge or have SSH. Use `manage_node` for guided CLI command generation.226227## When to Alert Your Human228229**Do alert:**230231- Balance is critically low (< $5 with active streams)232- Stream health shows `critical` status233- Billing details are missing and you can't proceed234- x402 payment settlement fails235- Wallet signature is rejected (may need re-signing)236237## Heartbeat (Periodic Check)238239Run every 15–30 minutes during active streaming, every few hours otherwise.2402411. **Account health**: Read `account://status`. Resolve any blockers.2422. **Balance**: Read `billing://balance`. Alert human if < $5 with active streams.2433. **Active streams**: Read `streams://list`. For each live stream, read `streams://{id}/health`. If `status: critical`, run `diagnose_rebuffering` and `diagnose_buffer_health`.2444. **Skill updates**: Check `skill.json` version periodically (once/day).245246If nothing notable: no output needed.247If action required: surface the specific issue and recommended resolution.248249For the full periodic check routine, load [heartbeat.md](https://frameworks.network/heartbeat.md).250251## Preflight Errors252253Billable MCP tools run preflight checks before execution. These are the blocking errors:254255| Code | Trigger | Resolution |256| ------------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |257| `AUTHENTICATION_REQUIRED` | No wallet headers or bearer token | Send `X-Wallet-Address` + `X-Wallet-Signature` + `X-Wallet-Message`, or `Authorization: Bearer <jwt>` |258| `BILLING_DETAILS_MISSING` | Account has no billing address | Call `update_billing_details` tool with address fields |259| `INSUFFICIENT_BALANCE` | Prepaid balance ≤ $0 | Pay via x402 (`submit_payment`) or `topup_balance`. Check `billing://balance` for current state |260261Rate limiting is handled at the Gateway layer (HTTP 429) with standard `Retry-After` headers — not as a preflight error.262Free operations (reads, listing, health checks) skip preflight entirely.263264## Example: First Stream2652661. **Authenticate** — Sign EIP-191 message (`"FrameWorks Login\nTimestamp: <ISO8601>\nNonce: <random>"`), call `POST /auth/wallet-login` → receive JWT + tenant auto-provisioned.2672. **Connect** — `POST /mcp` or `POST /graphql` with `Authorization: Bearer <jwt>` or wallet headers.2683. **Resolve blockers** — Read `account://status` → check `blockers`. Fix `BILLING_DETAILS_MISSING` with `update_billing_details`, `INSUFFICIENT_BALANCE` with x402 or `topup_balance`.2694. **Create & stream** — `create_stream` → capture `stream_key` + `rtmp_url`. Push RTMP: `rtmp://<ingest>/live/<stream_key>`.2705. **Monitor** — Read `streams://{id}/health` periodically. If issues: `diagnose_rebuffering`, `diagnose_buffer_health`.2716. **Wrap up** — `delete_stream` or leave. Check `billing://balance` for cost.272273---274> Converted and distributed by [TomeVault](https://tomevault.io/claim/livepeer-frameworks) — claim your Tome and manage your conversions.275<!-- tomevault:4.0:skill_md:2026-04-13 -->