Patrick Vieira, platform engineer in London: profile, work, skills, intros 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.
Step 4 of the booking guide (get_booking_guide). Ask to book a time with Patrick Vieira for a person: returns a confirm_url to give them. Nothing is reserved yet, and nothing is emailed: the call is booked, in their name, when they open the link and sign in with Google (within 60 minutes). Don't send their name or email address: those come from their sign-in. Only use this when the person has asked for this meeting at this time. Do not retry on error. Then use get_booking_status. Privacy: until the person signs in, the site keeps only the type, time and note; see https://patrickjv.com/privacy.
A meeting type id from list_meeting_types.
Start time exactly as given by get_availability (ISO 8601 with offset).
Optional: what the meeting is about, in plain text.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Step 4 of the booking guide (get_booking_guide). Ask to book a time with Patrick Vieira for a person: returns a confirm_url to give them. Nothing is reserved yet, and nothing is emailed: the call is booked, in their name, when they open the link and sign in with Google (within 60 minutes). Don't send their name or email address: those come from their sign-in. Only use this when the person has asked for this meeting at this time. Do not retry on error. Then use get_booking_status. Privacy: until the person signs in, the site keeps only the type, time and note; see https://patrickjv.com/privacy.
| Argument | Type | Description |
|---|---|---|
| note | string | Optional: what the meeting is about, in plain text. |
| type* | string | A meeting type id from list_meeting_types. |
| start* | string | Start time exactly as given by get_availability (ISO 8601 with offset). |
{
"type": "object",
"required": [
"type",
"start"
],
"properties": {
"note": {
"type": "string",
"maxLength": 500,
"description": "Optional: what the meeting is about, in plain text."
},
"type": {
"enum": [
"consultation",
"recruiter-intro"
],
"type": "string",
"description": "A meeting type id from list_meeting_types."
},
"start": {
"type": "string",
"maxLength": 40,
"description": "Start time exactly as given by get_availability (ISO 8601 with offset)."
}
},
"additionalProperties": false
}Cancelling, in the booking guide (get_booking_guide). A request the person hasn't signed in on yet is withdrawn at once. A booked call is not cancelled by this call: you get a confirm_url for the person to sign in on and cancel it (or, for a call booked by email, the person is emailed a link). Only use this when the person has asked to cancel. Do not retry on error.
| Argument | Type | Description |
|---|---|---|
| booking_id* | string | The booking_id book_meeting returned. |
{
"type": "object",
"required": [
"booking_id"
],
"properties": {
"booking_id": {
"type": "string",
"pattern": "^[0-9a-f]{32}$",
"description": "The booking_id book_meeting returned."
}
},
"additionalProperties": false
}Step 2 of the booking guide (get_booking_guide). Free start times for a meeting type, from Patrick's live calendar: weekdays 10:00–17:00 London time, at least 24 hours ahead and up to four weeks out. Times are ISO 8601 with the Europe/London offset. Optional from and to (YYYY-MM-DD, London days) narrow the range.
| Argument | Type | Description |
|---|---|---|
| to | string | Optional last day, YYYY-MM-DD. |
| from | string | Optional first day, YYYY-MM-DD. |
| type* | string | A meeting type id from list_meeting_types. |
{
"type": "object",
"required": [
"type"
],
"properties": {
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional last day, YYYY-MM-DD."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional first day, YYYY-MM-DD."
},
"type": {
"enum": [
"consultation",
"recruiter-intro"
],
"type": "string",
"description": "A meeting type id from list_meeting_types."
}
},
"additionalProperties": false
}The booking guide: how to book a call with Patrick Vieira, step by step, and how to cancel one. Read this first; no sign-in needed.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Step 6 of the booking guide (get_booking_guide). The state of a booking by its ID: pending_confirmation, confirmed, declined, expired or cancelled, with a reason where there is one, the time, the meeting type and a next_step saying what to do. Never returns the guest's details.
| Argument | Type | Description |
|---|---|---|
| booking_id* | string | The booking_id book_meeting returned. |
{
"type": "object",
"required": [
"booking_id"
],
"properties": {
"booking_id": {
"type": "string",
"pattern": "^[0-9a-f]{32}$",
"description": "The booking_id book_meeting returned."
}
},
"additionalProperties": false
}Patrick Vieira's public profile (platform engineer, London — not the footballer): name, headline, tagline, location and links.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Quick answers about Patrick Vieira: each question (q) with its answer (a).
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Step 1 of the booking guide (get_booking_guide). The kinds of meeting you can book with Patrick Vieira: id, title, length in minutes and what each is for.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Patrick Vieira's listed skills.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Selected work: title, summary and tags for each item.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Send Patrick Vieira a short introduction by email on behalf of a person. Only use this when the person has asked you to contact him and has approved the message. Strictly rate-limited; at most a couple per sender per day. Do not retry on error. Privacy: the message is forwarded to Patrick's email and not stored by this site; rate-limit counters are hashed and expire daily.
| Argument | Type | Description |
|---|---|---|
| agent | string | Optional: name of the AI agent sending this on the person's behalf. |
| reason* | string | |
| message* | string | The introduction itself, in plain text. |
| from_name* | string | Full name of the person making the introduction. |
| from_email* | string | Email address Patrick should reply to (ASCII). |
| organisation | string | Optional organisation. |
{
"type": "object",
"required": [
"from_name",
"from_email",
"reason",
"message"
],
"properties": {
"agent": {
"type": "string",
"maxLength": 100,
"description": "Optional: name of the AI agent sending this on the person's behalf."
},
"reason": {
"enum": [
"recruiting",
"collaboration",
"speaking",
"other"
],
"type": "string"
},
"message": {
"type": "string",
"maxLength": 2000,
"minLength": 20,
"description": "The introduction itself, in plain text."
},
"from_name": {
"type": "string",
"maxLength": 100,
"minLength": 1,
"description": "Full name of the person making the introduction."
},
"from_email": {
"type": "string",
"maxLength": 254,
"description": "Email address Patrick should reply to (ASCII)."
},
"organisation": {
"type": "string",
"maxLength": 100,
"description": "Optional organisation."
}
},
"additionalProperties": false
}