{
  "protocolVersion": "0.3.0",
  "name": "MDflow",
  "description": "Agent-controllable markdown workspace. Folders hold .md documents an AI agent can read, create, update, organize, and share. Control it via the MCP server (preferred) at https://mdflow.cz/api/mcp or the REST API at https://mdflow.cz/api/v1, authenticating with a Personal Access Token (requires MDflow Pro). Shared Team accounts have their own parallel surface \u2014 the Team MCP server at https://mdflow.cz/api/team/mcp and the Team REST API at https://mdflow.cz/api/team/v1, authenticated with a Team access token (mdt_\u2026). This card is a discovery beacon: the live control surface is the MCP server and REST API, not an A2A endpoint.",
  "provider": { "organization": "MDflow", "url": "https://mdflow.cz" },
  "version": "1.0.0",
  "documentationUrl": "https://mdflow.cz/docs.md",
  "preferredTransport": "JSONRPC",
  "url": "https://mdflow.cz/api/mcp",
  "additionalInterfaces": [
    { "transport": "JSONRPC", "url": "https://mdflow.cz/api/mcp" },
    { "transport": "HTTP+JSON", "url": "https://mdflow.cz/api/v1" },
    { "transport": "JSONRPC", "url": "https://mdflow.cz/api/team/mcp" },
    { "transport": "HTTP+JSON", "url": "https://mdflow.cz/api/team/v1" }
  ],
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "defaultInputModes": ["text/markdown", "text/plain", "application/json"],
  "defaultOutputModes": ["text/markdown", "application/json"],
  "securitySchemes": {
    "personalAccessToken": {
      "type": "http",
      "scheme": "bearer",
      "description": "MDflow Personal Access Token (mdf_...), created at https://mdflow.cz/settings. Requires MDflow Pro. Send as: Authorization: Bearer mdf_..."
    },
    "oauth2": {
      "type": "oauth2",
      "description": "Sign in with your MDflow account (OAuth 2.1). Claude.ai and ChatGPT connect to https://mdflow.cz/api/mcp by adding it as a connector and signing in — no token to copy. Requires MDflow Pro.",
      "flows": {
        "authorizationCode": {
          "authorizationUrl": "https://avpohqkozlquuxzqqtsx.supabase.co/auth/v1/oauth/authorize",
          "tokenUrl": "https://avpohqkozlquuxzqqtsx.supabase.co/auth/v1/oauth/token",
          "scopes": { "openid": "identity", "email": "email", "profile": "profile" }
        }
      }
    }
  },
  "security": [{ "personalAccessToken": [] }, { "oauth2": [] }],
  "skills": [
    {
      "id": "documents",
      "name": "Manage markdown documents",
      "description": "List, read, create, rename, move, and delete markdown documents in folders you own. Each document carries its full path (workspace → … → document) and a compounded description — the workspace+folder context cascade.",
      "tags": ["markdown", "documents", "crud"],
      "examples": [
        "Create a document called meeting-notes.md in my Project folder",
        "Rename a document",
        "Show the full path and context of a document"
      ]
    },
    {
      "id": "workspaces",
      "name": "Manage workspaces",
      "description": "List, create, rename, describe, and delete workspaces, the top-level bucket above folders that every folder belongs to.",
      "tags": ["workspaces", "organize"]
    },
    {
      "id": "folders",
      "name": "Organize folders",
      "description": "List, read (with full path and the compounded description cascade from workspace down to folder), create, rename, move, and delete folders, and edit folder descriptions, which act as retrieval context for the documents inside.",
      "tags": ["folders", "organize"]
    },
    {
      "id": "context",
      "name": "Topic-based retrieval",
      "description": "Find the most relevant markdown by ranking folder descriptions first, then titles, then fetching the best-matching document bodies. When a topic clearly belongs to one workspace, pick the best-matching workspace first and pass workspaceId to scope retrieval there; omit it for broad or ambiguous topics to rank across the whole account.",
      "tags": ["search", "retrieval", "rag"],
      "examples": ["Get context about my API documentation from mdflow", "Get context about billing, scoped to my Work workspace"]
    },
    {
      "id": "sharing",
      "name": "Share documents",
      "description": "Turn on public unguessable share links (optionally with comments), or privately share a document with specific people by email.",
      "tags": ["sharing", "publish"]
    },
    {
      "id": "team",
      "name": "Work in a Team account",
      "description": "Read and write the shared workspaces, folders, and markdown documents of an MDflow Team account, using a Team access token (mdt_…) against the Team MCP server at https://mdflow.cz/api/team/mcp (16 mdflow_team_* tools) or the Team REST API at https://mdflow.cz/api/team/v1. A token is bound to one Team account, granted only the workspaces chosen when it was created, and capped at read-only or read-and-write; every request re-checks the creator's live membership, role, and per-workspace permission. Content only — membership, invitations, and billing are not exposed. Personal tokens are rejected on Team routes and Team tokens on personal routes.",
      "tags": ["team", "collaboration", "workspaces", "documents"],
      "examples": ["List the Team workspaces this token can reach", "Get context about onboarding from our Team workspace"]
    }
  ]
}
