Profile and essays of Jan Linketscher (i22, Bonn), full-text search, and booking a call.
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.
Book a call with Jan Linketscher on behalf of your user. The start must be a slot returned by get_availability. If your client supports elicitation (form mode, MCP 2026-07-28), the server itself asks the user to confirm time, name and email – name and email are then prefilled from your arguments and can be corrected by the user. Otherwise: show the user meeting type, date and time (with time zone), name and email, get their explicit approval, then pass name, email and confirmed: true. Use the user's real name and email; never invent them. Cal.com sends the confirmation with a calendar invite and links to reschedule or cancel to that email address.
Slot start from get_availability (ISO 8601).
Full name of the person attending.
Email of the person attending; the confirmation goes there.
Optional: what the call is about, in one or two sentences.
Only for clients without elicitation: true = the user has explicitly approved this booking.
IANA time zone of the attendee, e.g. "Europe/Berlin" (default Europe/Berlin).
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Book a call with Jan Linketscher on behalf of your user. The start must be a slot returned by get_availability. If your client supports elicitation (form mode, MCP 2026-07-28), the server itself asks the user to confirm time, name and email – name and email are then prefilled from your arguments and can be corrected by the user. Otherwise: show the user meeting type, date and time (with time zone), name and email, get their explicit approval, then pass name, email and confirmed: true. Use the user's real name and email; never invent them. Cal.com sends the confirmation with a calendar invite and links to reschedule or cancel to that email address.
| Argument | Type | Description |
|---|---|---|
| name | string | Full name of the person attending. |
| string | Email of the person attending; the confirmation goes there. | |
| notes | string | Optional: what the call is about, in one or two sentences. |
| start* | string | Slot start from get_availability (ISO 8601). |
| confirmed | boolean | Only for clients without elicitation: true = the user has explicitly approved this booking. |
| time_zone | string | IANA time zone of the attendee, e.g. "Europe/Berlin" (default Europe/Berlin). |
| meeting_type* | string |
{
"type": "object",
"required": [
"meeting_type",
"start"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 2,
"description": "Full name of the person attending."
},
"email": {
"type": "string",
"format": "email",
"description": "Email of the person attending; the confirmation goes there."
},
"notes": {
"type": "string",
"maxLength": 1000,
"description": "Optional: what the call is about, in one or two sentences."
},
"start": {
"type": "string",
"format": "date-time",
"description": "Slot start from get_availability (ISO 8601)."
},
"confirmed": {
"type": "boolean",
"description": "Only for clients without elicitation: true = the user has explicitly approved this booking."
},
"time_zone": {
"type": "string",
"description": "IANA time zone of the attendee, e.g. \"Europe/Berlin\" (default Europe/Berlin)."
},
"meeting_type": {
"enum": [
"kennenlernen",
"sparring"
],
"type": "string"
}
},
"additionalProperties": false
}Free time slots for a call with Jan Linketscher. meeting_type: "kennenlernen" (Kennenlernen, 30 min), "sparring" (Sparring, 60 min). Optional date range (YYYY-MM-DD, default: the next 14 days, at most 90 days ahead). Times are ISO 8601 with offset; the text answer lists them in Europe/Berlin.
| Argument | Type | Description |
|---|---|---|
| to | string | Last day (YYYY-MM-DD), inclusive. Default: from + 13 days. |
| from | string | First day (YYYY-MM-DD). Default: today. |
| meeting_type* | string | Kind of call. |
{
"type": "object",
"required": [
"meeting_type"
],
"properties": {
"to": {
"type": "string",
"format": "date",
"description": "Last day (YYYY-MM-DD), inclusive. Default: from + 13 days."
},
"from": {
"type": "string",
"format": "date",
"description": "First day (YYYY-MM-DD). Default: today."
},
"meeting_type": {
"enum": [
"kennenlernen",
"sparring"
],
"type": "string",
"description": "Kind of call."
}
},
"additionalProperties": false
}Full text of one essay as Markdown (with front matter). Use the slug from list_essays or search.
| Argument | Type | Description |
|---|---|---|
| slug* | string | Essay slug, e.g. "mein-essay" (the last part of /essays/<slug>). |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "Essay slug, e.g. \"mein-essay\" (the last part of /essays/<slug>)."
}
},
"additionalProperties": false
}Who Jan Linketscher is: managing director and shareholder of the digital agency i22 (Bonn), his background, how his texts are written, and how to contact him. Content is in German.
| Argument | Type | Description |
|---|---|---|
| section | string | Limit the text answer to one section (default: all). Structured output is always complete. |
{
"type": "object",
"properties": {
"section": {
"enum": [
"all",
"role",
"background",
"writing",
"contact"
],
"type": "string",
"description": "Limit the text answer to one section (default: all). Structured output is always complete."
}
},
"additionalProperties": false
}List the essays, newest first: title, date, one-sentence summary, topics, URL and slug. Optionally filter by topic slug. Also returns the available topics.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of essays (default 20). |
| topic | string | Topic slug, e.g. "transformation" or "agentic-visibility". Omit for all essays. |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 50,
"minimum": 1,
"description": "Maximum number of essays (default 20)."
},
"topic": {
"type": "string",
"description": "Topic slug, e.g. \"transformation\" or \"agentic-visibility\". Omit for all essays."
}
},
"additionalProperties": false
}The kinds of calls that can be booked with Jan Linketscher ("kennenlernen" (Kennenlernen, 30 min), "sparring" (Sparring, 60 min)), with duration, purpose and a booking link for humans.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Full-text search across all essays and pages (about, context). Returns the best matches with title, URL and a short snippet. German queries work best.
| Argument | Type | Description |
|---|---|---|
| limit | integer | Maximum number of results (default 5). |
| query* | string | Search terms. |
{
"type": "object",
"required": [
"query"
],
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1,
"description": "Maximum number of results (default 5)."
},
"query": {
"type": "string",
"minLength": 2,
"description": "Search terms."
}
},
"additionalProperties": false
}