{
  "$schema": "https://a2a-protocol.org/schemas/v0.3/agent-card.json",
  "protocolVersion": "0.3.0",
  "name": "handfast.ai",
  "description": "Norwegian-language AI training and advisory by Pål Sørvik Pedersen. handfast.ai teaches people and teams to make AI concrete enough to use: learn the language, save the context that works, and delegate real work to agents. This card exposes the public contact and signup surfaces of the site so other agents can route inquiries on behalf of a human.",
  "version": "1.0.0",
  "url": "https://handfast.ai/",
  "documentationUrl": "https://handfast.ai/llms.txt",
  "iconUrl": "https://handfast.ai/icon-512.png",
  "provider": {
    "organization": "handfast.ai",
    "url": "https://handfast.ai/"
  },
  "preferredTransport": "MCP+Streamable-HTTP",
  "additionalInterfaces": [
    {
      "url": "https://handfast.ai/mcp",
      "transport": "MCP+Streamable-HTTP",
      "description": "Streamable HTTP MCP server. Public tools (subscribe, callback, session request) need no auth; private tools require a bearer token from /portal/agent."
    },
    {
      "url": "https://handfast.ai/api/requests",
      "transport": "HTTP+JSON",
      "description": "Plain form POST endpoint for the same three public actions as the MCP server, no JSON-RPC envelope."
    }
  ],
  "serverCardUrl": "https://handfast.ai/.well-known/mcp/server-card.json",
  "protectedResourceUrl": "https://handfast.ai/.well-known/oauth-protected-resource",
  "defaultInputModes": ["text/plain", "application/json"],
  "defaultOutputModes": ["text/plain", "application/json"],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "securitySchemes": {},
  "skills": [
    {
      "id": "subscribe-peiling",
      "name": "Subscribe to Peiling newsletter",
      "description": "Sign a human up to Peiling, the handfast.ai email newsletter. Hand-written drops about practical AI, sent in ny og ne (now and then). Requires the human's email address. One-click unsubscribe.",
      "tags": ["newsletter", "subscribe", "email", "peiling"],
      "examples": [
        "Subscribe me to the handfast.ai newsletter",
        "Meld meg på Peiling",
        "Sign up jane@example.com to Peiling"
      ],
      "inputModes": ["application/json", "application/x-www-form-urlencoded"],
      "outputModes": ["application/json"]
    },
    {
      "id": "request-callback",
      "name": "Request a callback from Pål",
      "description": "Ask Pål to call a human back. Requires a phone number; name and a short message are optional. Use when the human wants to talk to Pål directly without scheduling a session.",
      "tags": ["contact", "callback", "phone"],
      "examples": [
        "Ask Pål to call me on +47 12 34 56 78",
        "Be Pål ringe meg på 472 89 783 i morgen formiddag",
        "Request a callback for John Doe at +47 99 99 99 99"
      ],
      "inputModes": ["application/json", "application/x-www-form-urlencoded"],
      "outputModes": ["application/json"]
    },
    {
      "id": "book-session",
      "name": "Request an Økt (working session)",
      "description": "Request a working session (Økt) with Pål. Sessions follow the three-step trapp: Steg 1 (Lær språket), Steg 2 (Slutt å introdusere deg), Steg 3 (Henda av rattet, hold kurs), plus Oppfølging, or Uvisst (find the right step together). Requires email + session type. Does not auto-book a time; Pål replies with concrete time proposals.",
      "tags": ["booking", "workshop", "training", "okt"],
      "examples": [
        "Book a Steg 1 session",
        "Be om Steg 2: Slutt å introdusere deg",
        "Request a follow-up session for jane@example.com"
      ],
      "inputModes": ["application/json", "application/x-www-form-urlencoded"],
      "outputModes": ["application/json"]
    },
    {
      "id": "read-essays",
      "name": "Read handfast.ai essays",
      "description": "Fetch the full body of essays and pages on handfast.ai. Markdown versions of every page are available with Accept: text/markdown. The full corpus is also concatenated at /llms.txt.",
      "tags": ["content", "read", "essays"],
      "examples": [
        "Read the essay about bruk-chatten-fa-skills-og-bygg-agenter",
        "Hva betyr 'handfast'?",
        "Fetch the homepage as markdown"
      ],
      "inputModes": ["text/plain"],
      "outputModes": ["text/markdown", "text/html"]
    }
  ]
}
