{
  "name": "Quasareum",
  "description": "Quasareum, a one-person software studio in Paris, as an agent: it answers questions about the studio, its projects (PerpLog, Sophria, Amav Sophro), its published research on perpetual-futures market microstructure and its practice, grounded in the site's own corpus with citations, and it passes messages to the founder. A text part is a question for the chat skill; to run another skill, send a data part {\"skill\": \"<id>\", \"arguments\": {...}}. No credential is required. Stateless: each message is answered with a message, the contextId is echoed but not remembered, and no task is ever created.",
  "supportedInterfaces": [
    {
      "url": "https://quasareum.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://quasareum.com/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "provider": {
    "organization": "Quasareum",
    "url": "https://quasareum.com"
  },
  "version": "1.0.0",
  "documentationUrl": "https://quasareum.com/AGENTS.md",
  "iconUrl": "https://quasareum.com/icon-512.png",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false
  },
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "text/plain",
    "application/json"
  ],
  "skills": [
    {
      "id": "list_projects",
      "name": "List projects",
      "description": "List every project run by the studio (own products + client work). Returns slug, name, status, stage, version, tagline, url, ownership, keywords.",
      "tags": [
        "projects",
        "studio"
      ],
      "examples": [
        "{\"skill\":\"list_projects\",\"arguments\":{}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "get_project",
      "name": "Get project",
      "description": "Get the full record for a single project: stack, highlights, stance, keywords, actions, related projects.",
      "tags": [
        "projects"
      ],
      "examples": [
        "{\"skill\":\"get_project\",\"arguments\":{\"slug\":\"perplog\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "get_about",
      "name": "Get about",
      "description": "Founder profile (Thomas Erhel) — formation, mantras, current learning tracks, languages, contact.",
      "tags": [
        "founder",
        "profile"
      ],
      "examples": [
        "{\"skill\":\"get_about\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "get_status",
      "name": "Get status",
      "description": "Current state of the studio and its projects (live/in-development/etc.), computed on each call from the embedded content; asOf is the time of the call.",
      "tags": [
        "status",
        "projects"
      ],
      "examples": [
        "{\"skill\":\"get_status\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "list_domains",
      "name": "List domains",
      "description": "The three operating domains: quantum-finance, claude-native-engineering, crypto-infrastructure.",
      "tags": [
        "studio",
        "domains"
      ],
      "examples": [
        "{\"skill\":\"list_domains\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "search_faq",
      "name": "Search FAQ",
      "description": "Search the studio FAQ. Returns Q&A entries that match the query against questions, answers, and tags.",
      "tags": [
        "faq",
        "search"
      ],
      "examples": [
        "{\"skill\":\"search_faq\",\"arguments\":{\"query\":\"research\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "lookup_term",
      "name": "Lookup glossary term",
      "description": "Resolve domain jargon (Hyperliquid, SIWE, sophrology, MCP, etc.) against the curated Quasareum glossary.",
      "tags": [
        "glossary"
      ],
      "examples": [
        "{\"skill\":\"lookup_term\",\"arguments\":{\"term\":\"MCP\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "get_engagement",
      "name": "Get engagement policy",
      "description": "Get the studio engagement policy: availability, SLA, scope, what is out of scope, preferred channel.",
      "tags": [
        "engagement",
        "collaboration"
      ],
      "examples": [
        "{\"skill\":\"get_engagement\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "get_thesis",
      "name": "Get studio thesis",
      "description": "Why Quasareum is built agents-first. Returns the philosophical stance behind the entire surface — paradigm shift with AI, anticipated proactively. Pairs with get_about (studio.convictions[0]) for the eternal-beginner / Socratic framing that governs every other answer.",
      "tags": [
        "thesis",
        "studio"
      ],
      "examples": [
        "{\"skill\":\"get_thesis\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "chat",
      "name": "Chat (RAG over Quasareum corpus)",
      "description": "Ask a free-text question about Quasareum. Embeds the question, retrieves the top-K matching chunks from the Vectorize index (projects, research, practice, convictions, FAQ, glossary, domains, thesis, lookingFor, certifications, on-chain artifacts), and answers via Workers AI (Llama 3.3 70B fp8-fast). The response includes inline [kind:slug] citations and a structured citations[] array. Reaches a model: 20 such calls a minute per client (counted at each Cloudflare location), then the call fails with `rate_limited` and `retryAfterSeconds`.",
      "tags": [
        "question-answering",
        "rag",
        "citations"
      ],
      "examples": [
        "What is PerpLog?"
      ],
      "inputModes": [
        "text/plain",
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "semantic_search",
      "name": "Hybrid search (BM25 + vector + RRF)",
      "description": "Search the Quasareum corpus. Default mode is `hybrid` — fuses BM25 (lexical, exact-match strong) and Vectorize cosine (semantic, paraphrase strong) via Reciprocal Rank Fusion. Override with mode=vector or mode=bm25. Returns top-K matches with kind, slug, title, score, excerpt. The vector and hybrid modes reach a model: 20 such calls a minute per client (counted at each Cloudflare location), then the call fails with `rate_limited` and `retryAfterSeconds`; bm25 is not limited.",
      "tags": [
        "search",
        "retrieval"
      ],
      "examples": [
        "{\"skill\":\"semantic_search\",\"arguments\":{\"query\":\"liquidation episodes\",\"mode\":\"bm25\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "list_practice",
      "name": "List practice areas",
      "description": "Areas Thomas works in or studies. Note: framed as `practice` (not `expertise`) by principle — Socratic posture, refuses the expert label to keep the learning loop alive. Optional category filter: engineering, finance, ai, marketing, climate.",
      "tags": [
        "practice"
      ],
      "examples": [
        "{\"skill\":\"list_practice\",\"arguments\":{\"activeOnly\":true}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "route_intent",
      "name": "Route an agent goal to the right surface",
      "description": "Pre-flight discovery: an agent submits a natural-language goal and gets a ranked list of recommended endpoints + MCP tool calls (with arguments) most likely to satisfy it. Powered by hybrid search over the corpus. Use this when you don't know which specific surface to query. Reaches a model: 20 such calls a minute per client (counted at each Cloudflare location), then the call fails with `rate_limited` and `retryAfterSeconds`.",
      "tags": [
        "routing",
        "discovery"
      ],
      "examples": [
        "{\"skill\":\"route_intent\",\"arguments\":{\"goal\":\"hire the studio for a Rust project\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "list_onchain_artifacts",
      "name": "List on-chain artifacts",
      "description": "Time-stamped on-chain witnesses held by Thomas (NFTs, attestations, clusters). Each entry is verifiable via `ownerOf(tokenId)` against the holder address. Includes Vitalik Buterin's Proof of Stake book NFT (signed to monproweb.eth, minted 15 days before The Merge in Sept 2022) and Stand with Crypto (regulatory-pressure stance). Optional filter by `network` or `type`.",
      "tags": [
        "on-chain",
        "provenance"
      ],
      "examples": [
        "{\"skill\":\"list_onchain_artifacts\"}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "list_certifications",
      "name": "List certifications",
      "description": "Thomas's 196 certifications from 2015 → 2026. Optional filter by `category` (ai, quantum, finance, blockchain, cloud, frontend, backend, mobile, game-dev, marketing, climate, leadership, project-management, cs-fundamentals, data, devtools) or by `issuer`. Returns count summaries (byCategory, byIssuer) plus the full filtered list.",
      "tags": [
        "certifications",
        "learning"
      ],
      "examples": [
        "{\"skill\":\"list_certifications\",\"arguments\":{\"limit\":5}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "get_github",
      "name": "Get GitHub snapshot",
      "description": "Returns Thomas's GitHub footprint: profile, contributions (last 12mo + this week + streaks), stars given (>6000) + received, recently starred repos (his current reading list), all public repos chronologically, top languages, profile README. Refreshed hourly. Useful when an agent wants to characterise Thomas's curiosity or current focus.",
      "tags": [
        "github",
        "activity"
      ],
      "examples": [
        "{\"skill\":\"get_github\",\"arguments\":{\"section\":\"reading-list\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    },
    {
      "id": "send_contact",
      "name": "Send contact message",
      "description": "Send a message to the studio. Routes to contact@quasareum.com via Resend, with the same validation, rate limit and answers as POST /api/contact: validation_failed (naming the field), rate_limited (at most 5 messages per client per rolling hour and 50 per UTC day overall; with retryAfterSeconds), service_unavailable, delivery_failed, or {ok: true, id}. Use this when an end user wants to reach the founder. ALWAYS include `agent` identifying yourself.",
      "tags": [
        "contact",
        "email"
      ],
      "examples": [
        "{\"skill\":\"send_contact\",\"arguments\":{\"name\":\"…\",\"email\":\"…\",\"message\":\"…\",\"agent\":\"…\"}}"
      ],
      "inputModes": [
        "application/json"
      ],
      "outputModes": [
        "text/plain",
        "application/json"
      ]
    }
  ],
  "url": "https://quasareum.com/a2a",
  "preferredTransport": "JSONRPC",
  "protocolVersion": "0.3"
}