Seminarkatalog von IT-Schulungen.com: über 3.400 IT-Seminare, Termine, Orte und Preise durchsuchen.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Checks that this MCP server is reachable and reports its version. Use this only to diagnose connection problems. It returns no course data.
This tool takes no arguments.
Checks that this MCP server is reachable and reports its version. Use this only to diagnose connection problems. It returns no course data.
No arguments.
{
"type": "object",
"properties": {}
}Lists the scheduled dates of a seminar, soonest first. Past dates are never returned. Without `from` the window starts today. `from` and `to` are calendar days in German time, and both are included. An empty result means nothing is currently scheduled -- it does not mean the seminar does not exist. Each date carries the cities it runs in; a city of type `virtual` is an online delivery, `place` is on site. Dates that are cancelled, postponed or already over are never returned. `status` is what to lead with when suggesting a date: guaranteed this seminar runs, whatever else happens -- recommend these first, and say so, because it is the customer's strongest reason to pick one date over another planned scheduled and open for enrolment, not yet confirmed to run `direct_booking` appears only on dates that can be booked straight through the portal, with `direct_booking_until` as the last day for it. **Its absence says nothing about availability.** Every date listed here can be enquired about and enrolled in; direct booking is a shortcut, not a condition. Never tell a customer a date is unavailable because this field is missing. `seminar` names the course the dates belong to -- name, duration and its `url` -- so the list can be presented under that heading. It is left out only when the lookup failed; the dates still stand. `begin` and `finish`, per date and per day in `days`, are UTC. The seminars run in local time (Europe/Berlin; Vienna and Zurich are the same zone): convert before quoting a time, so 07:00Z is 09:00 in summer and 08:00 in winter, never "7 Uhr".
| Argument | Type | Description |
|---|---|---|
| to | null | string | Latest start date, "YYYY-MM-DD", included |
| city | null | string | Place name such as "München", or "online" for virtual delivery |
| from | null | string | Earliest start date, "YYYY-MM-DD". Defaults to today |
| page | integer | Page number, starting at 1 |
| limit | integer | Records per page, 1-50, default 20 |
| seminar_guid* | string | Seminar identifier from `seminars_search` |
{
"type": "object",
"required": [
"seminar_guid"
],
"properties": {
"to": {
"type": [
"null",
"string"
],
"default": null,
"description": "Latest start date, \"YYYY-MM-DD\", included"
},
"city": {
"type": [
"null",
"string"
],
"default": null,
"description": "Place name such as \"München\", or \"online\" for virtual delivery"
},
"from": {
"type": [
"null",
"string"
],
"default": null,
"description": "Earliest start date, \"YYYY-MM-DD\". Defaults to today"
},
"page": {
"type": "integer",
"default": 1,
"description": "Page number, starting at 1"
},
"limit": {
"type": "integer",
"default": 20,
"description": "Records per page, 1-50, default 20"
},
"seminar_guid": {
"type": "string",
"description": "Seminar identifier from `seminars_search`"
}
}
}Lists the difficulty levels a seminar can be filtered by. Call this before passing `difficulty` to `seminars_search`; the filter takes an identifier, not a label.
No arguments.
{
"type": "object",
"properties": {}
}Returns one seminar with its description, agenda and prerequisites. The texts are markdown. Prices come along in full, one per delivery form with what is included and what costs extra -- the only place that says so; `seminars_search` carries the amounts alone. `url` is the seminar's page on IT-Schulungen.com and the place to send a customer: this server answers questions, it does not take enquiries or bookings. Hand it on exactly as returned, query string included. If the field is missing, fall back to the portal's own search rather than guessing an address. A seminar carries one price per delivery form, not one price: an open seminar is priced per participant, an in-house seminar and a coaching per day. All amounts are net, plus VAT. Always name which form a price belongs to, and read `calculation_unit` before stating an amount. `offer_type` says how far the price commits: `not-binding-inquiry` is a starting point for an enquiry, not a quote.
| Argument | Type | Description |
|---|---|---|
| guid* | string | Seminar identifier, e.g. "NE-PRDCT-1f2dbdfa-d740-47ac-9921-9f5ac767cc86" |
{
"type": "object",
"required": [
"guid"
],
"properties": {
"guid": {
"type": "string",
"description": "Seminar identifier, e.g. \"NE-PRDCT-1f2dbdfa-d740-47ac-9921-9f5ac767cc86\""
}
}
}Lists the places seminars are held at. The catalogue runs in a fixed set of cities, plus a virtual classroom for online delivery. Use this to answer "where do you teach this?" and to check a place before passing it to `seminar_dates` -- a city that is not in this list has no dates, however the customer spells it.
| Argument | Type | Description |
|---|---|---|
| query | null | string | Part of a place name, e.g. "Frank" |
{
"type": "object",
"properties": {
"query": {
"type": [
"null",
"string"
],
"default": null,
"description": "Part of a place name, e.g. \"Frank\""
}
}
}Searches the topic vocabulary seminars are tagged with. Use this to turn a customer's wording into a filter value for `seminars_search`, and to check whether a product or technology is covered at all. Aliases are searched too, so "K8s" finds "Kubernetes" and "AKS" finds "Azure Kubernetes Services". This is a filter axis, not a catalogue: a hit means the topic exists, not that a seminar on it does. `seminars_search` answers that.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1 |
| type | null | string | One of manufacturer, topic, technology, software, software_version, audience |
| limit | integer | Records per page, 1-50, default 20 |
| query | null | string | Part of a topic name or alias, e.g. "Kubernetes" |
{
"type": "object",
"properties": {
"page": {
"type": "integer",
"default": 1,
"description": "Page number, starting at 1"
},
"type": {
"type": [
"null",
"string"
],
"default": null,
"description": "One of manufacturer, topic, technology, software, software_version, audience"
},
"limit": {
"type": "integer",
"default": 20,
"description": "Records per page, 1-50, default 20"
},
"query": {
"type": [
"null",
"string"
],
"default": null,
"description": "Part of a topic name or alias, e.g. \"Kubernetes\""
}
}
}Finds seminars in the IT-Schulungen.com catalogue. Use this first when a topic is known but the seminar identifier is not. The search is semantic and covers the whole seminar text, so describe the goal in the customer's own words -- "wie sichere ich unsere Container-Umgebung ab" finds Docker and Kubernetes security seminars that share no word with the question. A keyword list works worse than a sentence. Results come back by relevance. Two operators exist: a phrase in double quotes, and a term prefixed with a minus sign to exclude it. Either one turns the search back into a keyword match, so use them only to correct a search that went wide. Each record carries `topics`, the subjects the seminar is tagged with -- use them to say why a seminar fits and to tell close candidates apart. Each record also carries `prices`, one per delivery form: the amount and what it is per, nothing more. What is included and what costs extra -- an exam voucher, catering on site -- comes only from `seminar_get`, so call it before stating what a seminar costs in total; until then say "from". All amounts are net, plus VAT. When the delivery form is not known, lead with the open seminar, priced per participant; name the in-house price per day only when a team or company is asking or there is no open seminar, and coaching or a subscription only when asked. A price without an amount is price on request, and so is a seminar without `prices`. Returns a compact record per seminar, each with `url`: the page on IT-Schulungen.com. Enquiries and bookings do not run through this server, so that link is where a customer has to go -- name it whenever a seminar is recommended, exactly as returned: its query string is part of the link. Call `seminar_get` with a `guid` from this list for the agenda and prerequisites, and `seminar_dates` for scheduled dates.
| Argument | Type | Description |
|---|---|---|
| page | integer | Page number, starting at 1 |
| limit | integer |
| Records per page, 1-50, default 20 |
| query* | string | What the seminar should be about, at least 2 characters |
| topic | null | string | Exact topic name or identifier from `seminar_topics` |
| language | null | string | Two-letter language code (ISO 639-1), e.g. "de" or "en" |
| difficulty | null | string | Difficulty identifier from `seminar_difficulties` |
{
"type": "object",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"default": 1,
"description": "Page number, starting at 1"
},
"limit": {
"type": "integer",
"default": 20,
"description": "Records per page, 1-50, default 20"
},
"query": {
"type": "string",
"description": "What the seminar should be about, at least 2 characters"
},
"topic": {
"type": [
"null",
"string"
],
"default": null,
"description": "Exact topic name or identifier from `seminar_topics`"
},
"language": {
"type": [
"null",
"string"
],
"default": null,
"description": "Two-letter language code (ISO 639-1), e.g. \"de\" or \"en\""
},
"difficulty": {
"type": [
"null",
"string"
],
"default": null,
"description": "Difficulty identifier from `seminar_difficulties`"
}
}
}