VakMeisterVakMeister

For developers and AI agents

Integrations

Connect Vakmeister to the tools you already use. Today any AI assistant can query our public information live over MCP. The API, webhooks and plugins for WordPress and others are on the way.

Partner services for craft businesses

A selection of external partners we intend to connect to Vakmeister. Everything is on the roadmap: nothing is live yet and nothing can be arranged here.

Lease and finance

Hiltermann Lease
Coming soon

Business vehicle leasing for your company

A starting point to explore business leasing of a company vehicle as a sole trader or small business. The application, credit assessment, acceptance, pricing and lease agreement are handled directly by Hiltermann Lease. Vakmeister makes no promise of approval.

Hiltermann Lease

BNP Paribas Leasing Solutions
Coming soon

Lease and equipment finance for your business

For leasing and financing of company vehicles, machinery and tools. The assessment, acceptance, pricing and agreement are arranged directly with the provider. Vakmeister makes no promise of approval.

BNP Paribas Leasing Solutions

Vehicle and fleet branding

KBG Customz
Coming soon

Van branding for sole traders and small SMEs

Design, production and fitting of graphics for your van or company car. In future you will be able to hand over your Vakmeister Brand Kit, so your logo, colours and details are right from the start.

KBG Customz

Autobelettering.nl
Coming soon

Clear vehicle lettering for craft businesses

A simple route from quote to lettering, with prices that are clear up front. Useful for sole traders and small businesses that want to know where they stand quickly.

Autobelettering.nl

Omnimark
Coming soon

Fleet branding for growing teams

Aimed at larger SMEs and Vakmeister Team: from around ten vehicles upwards, with one visual identity across the whole fleet and nationwide execution.

Omnimark

Available

MCP server

Our MCP server gives AI assistants such as ChatGPT, Claude, Cursor and your own agents direct access to our public information: pricing, modules, trades, website themes and the knowledge base. Everything is read-only and needs no key.

Endpoint
https://vakmeister.nl/mcp
Transport
Streamable HTTP (JSON-RPC 2.0)
Protocol
MCP 2025-06-18
Authentication
None. Public, read-only server.

Connecting

Add the server to your MCP client configuration. Works in Claude Desktop, Cursor, ChatGPT connectors and any client that speaks Streamable HTTP.

mcp.json — vakmeister-marketing
{
  "mcpServers": {
    "vakmeister-marketing": {
      "type": "http",
      "url": "https://vakmeister.nl/mcp"
    }
  }
}

Or straight from curl

Always send the header Accept: application/json, text/event-stream. Without it the server rejects the request with a 406.

curl
curl -X POST https://vakmeister.nl/mcp \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Listing all tools

Every client starts with tools/list, which returns the names, titles and descriptions.

Example request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/list",
  "params": {}
}
Example response
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "tools": [
      {
        "name": "get_pricing",
        "title": "Prijzen en pakketten",
        "description": "Actuele pakketten, maandprijzen, opstartkosten, inbegrepen onderdelen en de prijs-FAQ.",
        "annotations": {
          "readOnlyHint": true,
          "idempotentHint": true
        }
      },
      {
        "name": "get_product_modules",
        "title": "Productmodules",
        "description": "Wat het platform doet, per module: website, aanvragen, offertes, planning, facturen en reviews.",
        "annotations": {
          "readOnlyHint": true,
          "idempotentHint": true
        }
      },
      {
        "name": "list_trades",
        "title": "Vakgebieden",
        "description": "Alle vakgebieden met categorie, korte typering en pagina-URL. Filter op categorie of zoekterm.",
        "annotations": {
          "readOnlyHint": true,
          "idempotentHint": true
        }
      },
      {
        "name": "get_trade",
        "title": "Eén vakgebied",
        "description": "Detailinformatie over één vakgebied: typering, herkenbare situaties en de bijbehorende pagina.",
        "annotations": {
          "readOnlyHint": true,
          "idempotentHint": true
        }
      },
      {
        "name": "list_website_themes",
        "title": "Websitethema's",
        "description": "De beschikbare websitethema's met stijl, geschikte vakgebieden en demo-URL.",
        "annotations": {
          "readOnlyHint": true,
          "idempotentHint": true
        }
      },
      {
        "name": "list_knowledge_articles",
        "title": "Kennisbank doorzoeken",
        "description": "Gepubliceerde kennisbankartikelen met titel, samenvatting, categorie en leestijd.",
        "annotations": {
          "readOnlyHint": true,
          "idempotentHint": true
        }
      },
      {
        "name": "search_knowledge",
        "title": "Kennisbank doorzoeken op tekst en tags",
        "description": "Zoekt in de volledige tekst van de kennisbank op zoekterm en tags en geeft gerangschikte treffers met een tekstfragment terug.",
        "annotations": {
          "readOnlyHint": true,
          "idempotentHint": true
        }
      },
      {
        "name": "get_knowledge_article",
        "title": "Kennisbankartikel lezen",
        "description": "De volledige tekst (markdown) van één gepubliceerd artikel.",
        "annotations": {
          "readOnlyHint": true,
          "idempotentHint": true
        }
      }
    ]
  }
}

Tools

Seven tools, all read-only and available in Dutch and English. Below you will find the parameters, an example request and the matching response for each one.

get_pricing

Pricing and plans

Current plans, monthly prices, activation fees, what is included and the pricing FAQ.

ParameterTypeRequiredDescription
locale"nl" | "en"noLanguage of the texts. Defaults to nl.
Example request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_pricing",
    "arguments": {
      "locale": "nl"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ … }"
      }
    ],
    "structuredContent": {
      "currency": "EUR",
      "vat": "prijzen exclusief btw",
      "extraUserMonthly": 9,
      "packages": [
        {
          "id": "basis",
          "name": "Basis",
          "monthly": 29,
          "activation": 99,
          "includedUsers": 1,
          "available": true,
          "tagline": "Alles om online te staan en werk binnen te halen.",
          "features": [
            "Eigen website",
            "Aanvragen",
            "Offertes",
            "Facturen"
          ]
        }
      ],
      "faq": [
        {
          "q": "Zit ik ergens aan vast?",
          "a": "Nee, je zegt maandelijks op."
        }
      ]
    },
    "isError": false
  }
}

get_product_modules

Product modules

What the platform does, per module: website, requests, quotes, scheduling, invoices and reviews.

ParameterTypeRequiredDescription
locale"nl" | "en"noLanguage of the texts. Defaults to nl.
Example request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_product_modules",
    "arguments": {
      "locale": "en"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ … }"
      }
    ],
    "structuredContent": {
      "count": 6,
      "modules": [
        {
          "slug": "website",
          "label": "Website",
          "tagline": "A site that brings in work and passes it on.",
          "url": "https://vakmeister.nl/en/product/website"
        }
      ]
    },
    "isError": false
  }
}

list_trades

Trades

All trades with category, short description and page URL. Filter by category or search term.

ParameterTypeRequiredDescription
locale"nl" | "en"noLanguage of the texts. Defaults to nl.
categorystringnoFilter by category, for example finishing or installation.
querystringnoFree-text search on name or description (max 80 characters).
Example request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "list_trades",
    "arguments": {
      "locale": "nl",
      "query": "schilder"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ … }"
      }
    ],
    "structuredContent": {
      "count": 1,
      "categories": [
        {
          "key": "afbouw",
          "label": "Afbouw"
        }
      ],
      "trades": [
        {
          "slug": "schilder",
          "label": "Schilder",
          "category": "afbouw",
          "categoryLabel": "Afbouw",
          "tagline": "Binnen- en buitenschilderwerk, netjes opgeleverd.",
          "url": "https://vakmeister.nl/branche/schilder"
        }
      ]
    },
    "isError": false
  }
}

get_trade

Single trade

Details for one trade: description, recognisable situations and the matching page.

ParameterTypeRequiredDescription
slugstringyesSlug of the trade, for example schilder or painter.
locale"nl" | "en"noLanguage of the texts. Defaults to nl.
Example request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_trade",
    "arguments": {
      "slug": "schilder",
      "locale": "nl"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ … }"
      }
    ],
    "structuredContent": {
      "slug": "schilder",
      "label": "Schilder",
      "category": "afbouw",
      "tagline": "Binnen- en buitenschilderwerk, netjes opgeleverd.",
      "url": "https://vakmeister.nl/branche/schilder"
    },
    "isError": false
  }
}

list_website_themes

Website themes

The available website themes with style, suitable trades and demo URL.

ParameterTypeRequiredDescription
locale"nl" | "en"noLanguage of the texts. Defaults to nl.
Example request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "list_website_themes",
    "arguments": {
      "locale": "nl"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ … }"
      }
    ],
    "structuredContent": {
      "count": 6,
      "themes": [
        {
          "slug": "vakwerk",
          "name": "Vakwerk",
          "tagline": "Rustig en vertrouwd, met veel ruimte voor projectfoto's.",
          "url": "https://vakmeister.nl/templates"
        }
      ]
    },
    "isError": false
  }
}

list_knowledge_articles

Search the knowledge base

Published knowledge base articles with title, excerpt, category and reading time.

ParameterTypeRequiredDescription
locale"nl" | "en"noLanguage of the texts. Defaults to nl.
querystringnoSearch term on title or excerpt.
limitnumbernoMaximum number of results.
Example request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "list_knowledge_articles",
    "arguments": {
      "locale": "nl",
      "query": "offerte",
      "limit": 2
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ … }"
      }
    ],
    "structuredContent": {
      "count": 2,
      "articles": [
        {
          "slug": "offerte-maken-als-schilder",
          "title": "Zo maak je een offerte die wél wordt getekend",
          "excerpt": "Vijf onderdelen die het verschil maken bij particuliere klanten.",
          "category": "offertes",
          "readMinutes": 6,
          "publishedAt": "2026-04-18",
          "url": "https://vakmeister.nl/kennisbank/offerte-maken-als-schilder"
        }
      ]
    },
    "isError": false
  }
}

search_knowledge

Search knowledge by text and tags

Searches the full text of the knowledge base by term and tags and returns ranked hits with a matching snippet.

ParameterTypeRequiredDescription
locale"nl" | "en"noLanguage of the texts. Defaults to nl.
querystringnoSearch term; matched against title, excerpt and full text.
tagsstring[]noTags or category slugs; an article matches on at least one tag.
limitnumbernoMaximum number of results (1-25, default 10).
Example request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "search_knowledge",
    "arguments": {
      "locale": "nl",
      "query": "website",
      "tags": [
        "websites"
      ],
      "limit": 2
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ … }"
      }
    ],
    "structuredContent": {
      "query": "website",
      "tags": [
        "websites"
      ],
      "count": 1,
      "availableTags": [
        "administratie",
        "meer-klanten",
        "offertes",
        "planning",
        "websites"
      ],
      "results": [
        {
          "slug": "wat-kost-een-website-vakbedrijf",
          "title": "Wat kost een goede website voor een vakbedrijf?",
          "excerpt": "Waar je geld aan uitgeeft bij een website en waar je op moet letten.",
          "category": "websites",
          "tags": [
            "websites"
          ],
          "readMinutes": 5,
          "publishedAt": "2026-08-20",
          "url": "https://vakmeister.nl/kennisbank/wat-kost-een-website-vakbedrijf",
          "score": 15,
          "matchedIn": [
            "tag",
            "title",
            "excerpt",
            "body"
          ],
          "snippet": "… een website voor een vakbedrijf kost meestal …"
        }
      ]
    },
    "isError": false
  }
}

get_knowledge_article

Read a knowledge base article

The full text (markdown) of one published article.

ParameterTypeRequiredDescription
slugstringyesSlug of the article.
locale"nl" | "en"noLanguage of the texts. Defaults to nl.
Example request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "get_knowledge_article",
    "arguments": {
      "slug": "offerte-maken-als-schilder",
      "locale": "nl"
    }
  }
}
Example response
{
  "jsonrpc": "2.0",
  "id": 2,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "{ … }"
      }
    ],
    "structuredContent": {
      "slug": "offerte-maken-als-schilder",
      "title": "Zo maak je een offerte die wél wordt getekend",
      "category": "offertes",
      "readMinutes": 6,
      "body": "## Waarom offertes blijven liggen\n\nEen offerte die …",
      "url": "https://vakmeister.nl/kennisbank/offerte-maken-als-schilder"
    },
    "isError": false
  }
}

Errors

A tool that finds nothing returns a normal response with isError: true and a readable message. Invalid input returns a JSON-RPC error.

Example response
{
  "jsonrpc": "2.0",
  "id": 3,
  "result": {
    "content": [
      {
        "type": "text",
        "text": "No published article found with slug unknown (en)."
      }
    ],
    "isError": true
  }
}

Ground rules

  • All tools are read-only. Nothing inside Vakmeister is changed.
  • No customer data, no lead data, no internal information. Only what is on the site as well.
  • Answers arrive as JSON in structuredContent and as text in content.
  • Assume fair use. We may throttle temporarily under extreme traffic.
  • Changes are announced on this page; tools are never removed without notice.

Coming soon

What we are working on. Want to think along or join early? Let us know and we will add you to the first group.

In development

Vakmeister API

A REST API with per-company tokens for customers, requests, quotes and invoices, so your own systems can read and write along.

Coming soon

WordPress plugin

Already on WordPress? The plugin puts the Vakmeister request form on your own site and delivers requests straight into your account.

Coming soon

Webhooks

Let your own software react the moment a request comes in, a quote is signed or an invoice is paid.

Planned

Accounting integrations

Push invoices into your accounting package without typing twice. We are working on the packages craft businesses use most.

Want to integrate with Vakmeister?

Tell us what you want to build. We will help with the MCP tools you need and keep you posted on the API and the plugins.

Start right away, nothing to install. Cancel monthly.

Rather ask something first?