← WebMCP Directory

Tool tree

caprai.dev

Media & PersonalTools verified
Website
A Skill to implement WebMCP on Next.js and make your site compatible with AI agents. Practical experience, mistakes to avoid, and verified solutions.
Explore capabilities

    page: Every page

    search_contentAnswer

    Full-text search across the articles and the courses of caprai.dev, Alessandro Caprai's site about artificial intelligence (blog and online courses, in Italian, English and Spanish). Use it to find content on a topic; then call get_article or get_course with a result's url to read it. Only content the current visitor may open is returned.

    View tool JSON
    {
      "name": "search_content",
      "kind": "answer",
      "impl": "imperative",
      "description": "Full-text search across the articles and the courses of caprai.dev, Alessandro Caprai's site about artificial intelligence (blog and online courses, in Italian, English and Spanish). Use it to find content on a topic; then call get_article or get_course with a result's url to read it. Only content the current visitor may open is returned.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "minLength": 2,
            "maxLength": 200,
            "description": "Words to search for, e.g. \"AI Act\" or \"prompt engineering\"."
          },
          "type": {
            "default": "all",
            "description": "Restrict the search to articles or courses. Defaults to all.",
            "type": "string",
            "enum": [
              "all",
              "articles",
              "courses"
            ]
          },
          "language": {
            "description": "Language of the returned content: it (Italian, the site's main language), en (English) or es (Spanish). Defaults to the language of the page the agent is on.",
            "type": "string",
            "enum": [
              "it",
              "en",
              "es"
            ]
          }
        },
        "required": [
          "query"
        ]
      },
      "page": "/en/vibe-coding/post/next-js-and-webmcp-the-skill-that-makes-your-site-speak-the-language-of-ai-agents"
    }
    list_articlesAnswer

    List the latest articles published on caprai.dev, newest first, with title, URL, short description, category and date. Optionally filter by category slug. Use get_article to read one in full.

    View tool JSON
    {
      "name": "list_articles",
      "kind": "answer",
      "impl": "imperative",
      "description": "List the latest articles published on caprai.dev, newest first, with title, URL, short description, category and date. Optionally filter by category slug. Use get_article to read one in full.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "category": {
            "description": "A category slug as it appears in the site's URLs, e.g. intelligenza-artificiale. Omit for all categories.",
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "limit": {
            "default": 10,
            "description": "How many articles to return, from 1 to 50. Defaults to 10.",
            "type": "integer",
            "minimum": 1,
            "maximum": 50
          },
          "language": {
            "description": "Language of the returned content: it (Italian, the site's main language), en (English) or es (Spanish). Defaults to the language of the page the agent is on.",
            "type": "string",
            "enum": [
              "it",
              "en",
              "es"
            ]
          }
        }
      },
      "page": "/en/vibe-coding/post/next-js-and-webmcp-the-skill-that-makes-your-site-speak-the-language-of-ai-agents"
    }
    get_articleAnswer

    Read one article of caprai.dev in full, as Markdown, with its title, date, category and tags. Pass the article's url (from search_content or list_articles) or its slug. If the article is reserved to some readers the visitor is not among, only its title, URL and public description are returned (available: false, reason: restricted).

    View tool JSON
    {
      "name": "get_article",
      "kind": "answer",
      "impl": "imperative",
      "description": "Read one article of caprai.dev in full, as Markdown, with its title, date, category and tags. Pass the article's url (from search_content or list_articles) or its slug. If the article is reserved to some readers the visitor is not among, only its title, URL and public description are returned (available: false, reason: restricted).",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "description": "The article's URL on caprai.dev, absolute or as a path, e.g. https://caprai.dev/en/ai/post/my-article.",
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          },
          "slug": {
            "description": "The article's slug (the last segment of its URL), when the URL is not known.",
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "language": {
            "description": "Language of the returned content: it (Italian, the site's main language), en (English) or es (Spanish). Defaults to the language of the page the agent is on.",
            "type": "string",
            "enum": [
              "it",
              "en",
              "es"
            ]
          }
        }
      },
      "page": "/en/vibe-coding/post/next-js-and-webmcp-the-skill-that-makes-your-site-speak-the-language-of-ai-agents"
    }
    list_coursesAnswer

    List the online courses published on caprai.dev, with title, URL, description, level, how they open (free, free_with_registration, reserved, paid), price (in cents, VAT included), duration, number of modules and lessons, and available languages. Use get_course for a course's full programme.

    View tool JSON
    {
      "name": "list_courses",
      "kind": "answer",
      "impl": "imperative",
      "description": "List the online courses published on caprai.dev, with title, URL, description, level, how they open (free, free_with_registration, reserved, paid), price (in cents, VAT included), duration, number of modules and lessons, and available languages. Use get_course for a course's full programme.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "language": {
            "description": "Language of the returned content: it (Italian, the site's main language), en (English) or es (Spanish). Defaults to the language of the page the agent is on.",
            "type": "string",
            "enum": [
              "it",
              "en",
              "es"
            ]
          }
        }
      },
      "page": "/en/vibe-coding/post/next-js-and-webmcp-the-skill-that-makes-your-site-speak-the-language-of-ai-agents"
    }
    get_courseAnswer

    Get one course of caprai.dev in full: description, programme (modules and lessons with durations), whether it has a final exam and a certificate, how it opens, price and team-seat discounts for paid courses, and what the current visitor can do next (viewer.nextStep: open, register, enroll or buy). Enrolling and paying are done by the person on the course page (url); this tool never does them.

    View tool JSON
    {
      "name": "get_course",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get one course of caprai.dev in full: description, programme (modules and lessons with durations), whether it has a final exam and a certificate, how it opens, price and team-seat discounts for paid courses, and what the current visitor can do next (viewer.nextStep: open, register, enroll or buy). Enrolling and paying are done by the person on the course page (url); this tool never does them.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "description": "The course's URL on caprai.dev, absolute or as a path, e.g. https://caprai.dev/en/courses/ai-for-work.",
            "type": "string",
            "minLength": 1,
            "maxLength": 500
          },
          "slug": {
            "description": "The course's slug (the last segment of its URL), when the URL is not known.",
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          },
          "language": {
            "description": "Language of the returned content: it (Italian, the site's main language), en (English) or es (Spanish). Defaults to the language of the page the agent is on.",
            "type": "string",
            "enum": [
              "it",
              "en",
              "es"
            ]
          }
        }
      },
      "page": "/en/vibe-coding/post/next-js-and-webmcp-the-skill-that-makes-your-site-speak-the-language-of-ai-agents"
    }
    verify_certificateAction

    Check whether a caprai.dev course certificate code (format CD-XXXX-XXXX-XXXX, printed on the certificate) is genuine. Returns valid: true with the course title and the issue date, or valid: false. It never returns the holder's name.

    View tool JSON
    {
      "name": "verify_certificate",
      "kind": "act",
      "impl": "imperative",
      "description": "Check whether a caprai.dev course certificate code (format CD-XXXX-XXXX-XXXX, printed on the certificate) is genuine. Returns valid: true with the course title and the issue date, or valid: false. It never returns the holder's name.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "code": {
            "type": "string",
            "minLength": 1,
            "maxLength": 40,
            "description": "The certificate code, e.g. CD-ACDE-FGHJ-KLMN."
          },
          "language": {
            "description": "Language of the returned content: it (Italian, the site's main language), en (English) or es (Spanish). Defaults to the language of the page the agent is on.",
            "type": "string",
            "enum": [
              "it",
              "en",
              "es"
            ]
          }
        },
        "required": [
          "code"
        ]
      },
      "page": "/en/vibe-coding/post/next-js-and-webmcp-the-skill-that-makes-your-site-speak-the-language-of-ai-agents"
    }

    page: Next js and webmcp the skill that makes your site speak the language of ai agents

    subscribe_newsletterSensitive Action

    Subscribe the visitor's own email address to the caprai.dev newsletter about artificial intelligence. The site then sends a confirmation email (double opt-in): the address joins the list only when its owner clicks the link. Fill it only with the visitor's own address and consent; the visitor submits the form.

    View tool JSON
    {
      "name": "subscribe_newsletter",
      "kind": "transact",
      "impl": "declarative",
      "description": "Subscribe the visitor's own email address to the caprai.dev newsletter about artificial intelligence. The site then sends a confirmation email (double opt-in): the address joins the list only when its owner clicks the link. Fill it only with the visitor's own address and consent; the visitor submits the form.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "email@example.com"
          }
        },
        "required": [
          "email"
        ]
      },
      "page": "/en/vibe-coding/post/next-js-and-webmcp-the-skill-that-makes-your-site-speak-the-language-of-ai-agents"
    }

    page: It

    subscribe_newsletterSensitive Action

    Subscribe the visitor's own email address to the caprai.dev newsletter about artificial intelligence. The site then sends a confirmation email (double opt-in): the address joins the list only when its owner clicks the link. Fill it only with the visitor's own address and consent; the visitor submits the form.

    View tool JSON
    {
      "name": "subscribe_newsletter",
      "kind": "transact",
      "impl": "declarative",
      "description": "Subscribe the visitor's own email address to the caprai.dev newsletter about artificial intelligence. The site then sends a confirmation email (double opt-in): the address joins the list only when its owner clicks the link. Fill it only with the visitor's own address and consent; the visitor submits the form.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "email@esempio.com"
          }
        },
        "required": [
          "email"
        ]
      },
      "page": "/it"
    }

    page: Contatti

    send_contact_messageSensitive Action

    Send a message to Alessandro Caprai, author of caprai.dev (questions about courses, AI training for companies, collaborations). Fill it with the visitor's own name and email address, so that he can reply; the visitor reviews and submits the form.

    View tool JSON
    {
      "name": "send_contact_message",
      "kind": "transact",
      "impl": "declarative",
      "description": "Send a message to Alessandro Caprai, author of caprai.dev (questions about courses, AI training for companies, collaborations). Fill it with the visitor's own name and email address, so that he can reply; the visitor reviews and submits the form.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string"
          },
          "email": {
            "type": "string"
          },
          "message": {
            "type": "string"
          }
        },
        "required": [
          "name",
          "email",
          "message"
        ]
      },
      "page": "/it/contatti"
    }