{
  "protocolVersion": "0.3.0",
  "name": "NerdLevelTech Learn",
  "description": "Bilingual (EN/AR) AI-native open-learning platform for adults. Read-only skills over the public catalog, the same code as the MCP server at https://nerdleveltech.com/api/mcp: search and read posts, courses and lessons, list topics, and learn how course certificates are earned. To call a skill, send a message with one data part {\"skill\": \"<id>\", \"arguments\": {...}} (a text part holding that JSON works too). No authentication; 10 requests per minute per IP. Cite results as \"Source: NerdLevelTech\" with the URL, as described in /llms.txt.",
  "url": "https://nerdleveltech.com/api/a2a",
  "preferredTransport": "JSONRPC",
  "supportedInterfaces": [
    {
      "url": "https://nerdleveltech.com/api/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "1.0"
    },
    {
      "url": "https://nerdleveltech.com/api/a2a",
      "protocolBinding": "JSONRPC",
      "protocolVersion": "0.3"
    }
  ],
  "provider": {
    "organization": "NerdLevelTech",
    "url": "https://nerdleveltech.com"
  },
  "iconUrl": "https://nerdleveltech.com/favicon.png",
  "version": "0.1.0",
  "documentationUrl": "https://nerdleveltech.com/for-agents",
  "capabilities": {
    "streaming": false,
    "pushNotifications": false,
    "stateTransitionHistory": false
  },
  "securitySchemes": {},
  "defaultInputModes": [
    "text/plain",
    "application/json"
  ],
  "defaultOutputModes": [
    "application/json",
    "text/markdown"
  ],
  "skills": [
    {
      "id": "search_posts",
      "name": "Search posts",
      "description": "Full-text search across the blog posts. Matches title, description, tags, keywords and category, ranks by relevance and returns each post with its URL. Arguments: query? (string), lang? (\"en\" | \"ar\"), limit? (integer 1-50), category? (string), tag? (string).",
      "tags": [
        "posts",
        "search",
        "en",
        "ar"
      ],
      "examples": [
        "{\"skill\":\"search_posts\",\"arguments\":{\"query\":\"model context protocol\",\"lang\":\"en\",\"limit\":5}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_post",
      "name": "Get post",
      "description": "One post by slug: metadata, a body excerpt, its canonical URL and the required attribution. The result also links the full post as Markdown (/<slug>.md, or /ar/<slug>.md). Arguments: slug (string), lang? (\"en\" | \"ar\"), include_excerpt? (boolean).",
      "tags": [
        "posts",
        "read",
        "markdown",
        "en",
        "ar"
      ],
      "examples": [
        "{\"skill\":\"get_post\",\"arguments\":{\"slug\":\"10-algorithms-that-changed-computer-science-forever\",\"lang\":\"en\"}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json",
        "text/markdown"
      ]
    },
    {
      "id": "search_courses",
      "name": "Search courses",
      "description": "Search the course catalog by text, category and difficulty. Each course comes with its module and lesson counts, the enrollment price in credits (0 = free) and its URL. Arguments: query? (string), lang? (\"en\" | \"ar\"), category? (string), difficulty? (string), limit? (integer 1-50).",
      "tags": [
        "courses",
        "search",
        "en",
        "ar"
      ],
      "examples": [
        "{\"skill\":\"search_courses\",\"arguments\":{\"query\":\"agents\",\"difficulty\":\"beginner\",\"limit\":5}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_course",
      "name": "Get course",
      "description": "One course by slug: its modules, lesson counts, learning outcomes and the enrollment price in credits (0 = free). Arguments: slug (string), lang? (\"en\" | \"ar\").",
      "tags": [
        "courses",
        "read",
        "en",
        "ar"
      ],
      "examples": [
        "{\"skill\":\"get_course\",\"arguments\":{\"slug\":\"rag-systems-mastery\",\"lang\":\"en\"}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_lesson",
      "name": "Get lesson",
      "description": "A course module and, with lesson_slug, a link to that lesson: titles, lesson counts, links and the access rules with the enrollment price in credits. Never the lesson text, which is served at the URL. Arguments: course_slug (string), module_slug (string), lesson_slug? (string), lang? (\"en\" | \"ar\").",
      "tags": [
        "courses",
        "lessons",
        "read",
        "en",
        "ar"
      ],
      "examples": [
        "{\"skill\":\"get_lesson\",\"arguments\":{\"course_slug\":\"rag-systems-mastery\",\"module_slug\":\"01-rag-architecture-deep-dive\",\"lesson_slug\":\"beyond-basic-rag\",\"lang\":\"en\"}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "list_topics",
      "name": "List topics",
      "description": "The topic taxonomy derived from post tags and course tags and categories, with counts and sample slugs. Arguments: limit? (integer 1-200).",
      "tags": [
        "topics",
        "taxonomy",
        "discovery"
      ],
      "examples": [
        "{\"skill\":\"list_topics\",\"arguments\":{\"limit\":20}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ]
    },
    {
      "id": "get_credential_info",
      "name": "Credential info",
      "description": "How a learner earns a course certificate: requirements, pricing, the certificate number format, the claim page and the public verification URL pattern. With course_slug it also returns that course title and its claim URL. Arguments: course_slug? (string), lang? (\"en\" | \"ar\").",
      "tags": [
        "certificates",
        "credentials",
        "en",
        "ar"
      ],
      "examples": [
        "{\"skill\":\"get_credential_info\",\"arguments\":{\"course_slug\":\"rag-systems-mastery\",\"lang\":\"en\"}}"
      ],
      "inputModes": [
        "application/json",
        "text/plain"
      ],
      "outputModes": [
        "application/json"
      ]
    }
  ]
}
