Tool tree
gradeNot graded
get_profileAnswer
Patrick Vieira's public profile (platform engineer, London — not the footballer): name, headline, tagline, location and links.
View tool JSON
{
"name": "get_profile",
"kind": "answer",
"impl": "imperative",
"description": "Patrick Vieira's public profile (platform engineer, London — not the footballer): name, headline, tagline, location and links.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}list_workAnswer
Selected work: title, summary and tags for each item.
View tool JSON
{
"name": "list_work",
"kind": "answer",
"impl": "imperative",
"description": "Selected work: title, summary and tags for each item.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}list_skillsAnswer
Patrick Vieira's listed skills.
View tool JSON
{
"name": "list_skills",
"kind": "answer",
"impl": "imperative",
"description": "Patrick Vieira's listed skills.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}list_faqAnswer
Quick answers about Patrick Vieira: each question (q) with its answer (a).
View tool JSON
{
"name": "list_faq",
"kind": "answer",
"impl": "imperative",
"description": "Quick answers about Patrick Vieira: each question (q) with its answer (a).",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}request_introSensitive Action
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. In this browser, the person is also asked to confirm the exact message before anything is sent.
View tool JSON
{
"name": "request_intro",
"kind": "transact",
"impl": "imperative",
"description": "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. In this browser, the person is also asked to confirm the exact message before anything is sent.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"from_name",
"from_email",
"reason",
"message"
],
"properties": {
"from_name": {
"type": "string",
"minLength": 1,
"maxLength": 100,
"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."
},
"reason": {
"type": "string",
"enum": [
"recruiting",
"collaboration",
"speaking",
"other"
]
},
"message": {
"type": "string",
"minLength": 20,
"maxLength": 2000,
"description": "The introduction itself, in plain text."
},
"agent": {
"type": "string",
"maxLength": 100,
"description": "Optional: name of the AI agent sending this on the person's behalf."
}
}
},
"page": "/"
}get_booking_guideAnswer
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.
View tool JSON
{
"name": "get_booking_guide",
"kind": "answer",
"impl": "imperative",
"description": "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.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}list_meeting_typesAnswer
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.
View tool JSON
{
"name": "list_meeting_types",
"kind": "answer",
"impl": "imperative",
"description": "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.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
},
"page": "/"
}get_availabilityAnswer
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.
View tool JSON
{
"name": "get_availability",
"kind": "answer",
"impl": "imperative",
"description": "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.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"type"
],
"properties": {
"type": {
"type": "string",
"enum": [
"consultation",
"recruiter-intro"
],
"description": "A meeting type id from list_meeting_types."
},
"from": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional first day, YYYY-MM-DD."
},
"to": {
"type": "string",
"pattern": "^\\d{4}-\\d{2}-\\d{2}$",
"description": "Optional last day, YYYY-MM-DD."
}
}
},
"page": "/"
}book_meetingSensitive Action
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.
View tool JSON
{
"name": "book_meeting",
"kind": "transact",
"impl": "imperative",
"description": "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.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"type",
"start"
],
"properties": {
"type": {
"type": "string",
"enum": [
"consultation",
"recruiter-intro"
],
"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)."
},
"note": {
"type": "string",
"maxLength": 500,
"description": "Optional: what the meeting is about, in plain text."
}
}
},
"page": "/"
}get_booking_statusAnswer
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.
View tool JSON
{
"name": "get_booking_status",
"kind": "answer",
"impl": "imperative",
"description": "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.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"booking_id"
],
"properties": {
"booking_id": {
"type": "string",
"pattern": "^[0-9a-f]{32}$",
"description": "The booking_id book_meeting returned."
}
}
},
"page": "/"
}cancel_bookingSensitive Action
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.
View tool JSON
{
"name": "cancel_booking",
"kind": "transact",
"impl": "imperative",
"description": "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.",
"inputSchema": {
"type": "object",
"additionalProperties": false,
"required": [
"booking_id"
],
"properties": {
"booking_id": {
"type": "string",
"pattern": "^[0-9a-f]{32}$",
"description": "The booking_id book_meeting returned."
}
}
},
"page": "/"
}