{
  "brand": "Wireframe",
  "description": "Reusable agent recipes built on the connections library. All $0 within listed limits.",
  "skills": [
    {
      "id": "wireframe-catalog-browse",
      "cost": "$0",
      "summary": "Discover a free/freemium connection for a task before calling anything.",
      "steps": [
        "GET https://lumasky.xyz/api/catalog (optionally ?status=free|trial|freemium&category=market-data|web|utility|dev|ai|webhook|realtime-rooms&connect=treg-mcp|direct-https|docs-only)",
        "Prefer status=free, then trial (watch daily pool), then freemium (read `cost` — may bill).",
        "If connect=treg-mcp: catalog_get(id) to confirm price/params before call(). If direct-https: call the `how` URL from the agent."
      ],
      "new": true
    },
    {
      "id": "wireframe-health-check",
      "cost": "$0",
      "summary": "Smoke-test the Wireframe edge.",
      "steps": [
        "GET /api/health → expect ok:true, brand:\"Wireframe\".",
        "GET /api/ping → ts + colo (no third-party calls).",
        "GET /api/spaces?limit=3 → items[] non-empty, `cache` HIT|MISS|STALE.",
        "Check headers x-ratelimit-limit / x-ratelimit-remaining (API = 20/min/IP)."
      ],
      "new": true
    },
    {
      "id": "treg-free-quote-agent-side",
      "cost": "$0 (trial pools)",
      "summary": "Get a stock quote through Treg MCP on the agent side — the public site never proxies Finnhub bodies.",
      "steps": [
        "catalog_get(\"finnhub.quote\") → confirm usd 0 and trial pool (50/team/day).",
        "call(\"finnhub.quote\", {symbol}) from the agent. Fallbacks: twelvedata.price / tiingo.iex.latest (20/day each).",
        "Use the value privately (analysis, summaries). Do NOT post raw quote bodies to a public page (Finnhub ToS).",
        "Avoid routed treg.* endpoints unless you cap cost (X-Treg-Route-Max-Cost) — misses on children can bill."
      ],
      "new": true
    },
    {
      "id": "hf-spaces-sync",
      "cost": "$0",
      "summary": "Browse live Hugging Face Spaces through Wireframe's cached sync.",
      "steps": [
        "GET https://lumasky.xyz/api/spaces?sort=likes&limit=24 (sort: likes|trendingScore|lastModified|createdAt; limit 1–48).",
        "Each item: id, author, title, emoji, likes, sdk, tags, short_description, url.",
        "Cached ~10 min at the edge; upstream is the public HF Hub API (no token)."
      ],
      "new": true
    },
    {
      "id": "free-public-api-recipes",
      "cost": "$0",
      "summary": "Direct HTTPS utilities agents can hit without any key.",
      "steps": [
        "Weather: api.open-meteo.com/v1/forecast?latitude=..&longitude=..&current=temperature_2m",
        "FX: api.frankfurter.app/latest?from=USD&to=EUR · IP: api.ipify.org?format=json",
        "Wiki: en.wikipedia.org/api/rest_v1/page/summary/{title} · GitHub: api.github.com/repos/{o}/{r} (60/hr)",
        "Always send a User-Agent, cache results, respect provider limits."
      ],
      "new": true
    },
    {
      "id": "webhook-echo-test",
      "cost": "$0",
      "summary": "Test a webhook sender against Wireframe's stateless echo.",
      "steps": [
        "POST https://lumasky.xyz/api/echo with any JSON/text body (≤ 8 KB echoed).",
        "Response mirrors method, query, safe headers (auth/cookies redacted), body, content-type.",
        "Need a persistent inbox? Use webhook.site (freemium, public — no secrets)."
      ],
      "new": true
    },
    {
      "id": "ai-freemium-picker",
      "cost": "$0 within free tiers",
      "summary": "Pick a free LLM tier (docs only; keys live agent-side).",
      "steps": [
        "High volume small model → Groq llama-3.1-8b-instant (14,400 RPD).",
        "Model variety → OpenRouter :free (50/day, or 1,000/day after ≥$10 credits purchased).",
        "Long context → Gemini free tier in AI Studio (model-specific RPD; data may train Google products).",
        "Never place provider keys in a public Worker or page."
      ],
      "new": true
    }
  ],
  "rate_limit": {
    "limit": 20,
    "remaining": 19,
    "window_seconds": 60
  }
}