Tool tree
gradeNot graded
page: Every page
contact_davidSensitive Action
Send a short message to David Poblador. Delivered to his personal inbox; he reads messages from agents but may not reply, typically responds within a few days. Use only when the end-user explicitly wants to reach him — do not use for questions you can answer from his site. Users may write in English, Spanish, Catalan, or Swedish; send the message in the user's language.
View tool JSON
{
"name": "contact_david",
"kind": "transact",
"impl": "imperative",
"description": "Send a short message to David Poblador. Delivered to his personal inbox; he reads messages from agents but may not reply, typically responds within a few days. Use only when the end-user explicitly wants to reach him — do not use for questions you can answer from his site. Users may write in English, Spanish, Catalan, or Swedish; send the message in the user's language.",
"inputSchema": {
"type": "object",
"properties": {
"from": {
"type": "string",
"minLength": 2,
"maxLength": 200,
"description": "Name or handle of the person sending the message (not an email address)."
},
"purpose": {
"type": "string",
"maxLength": 200,
"description": "One-line reason for reaching out (e.g. \"Speaking invitation\", \"Collaboration request\")."
},
"message": {
"type": "string",
"minLength": 40,
"maxLength": 4000,
"description": "The message body. Be specific — David prioritises concrete asks over open-ended intros."
},
"reply_to": {
"type": "string",
"format": "email",
"description": "Email address where David can reply. Include this whenever the end-user wants a response — without it David has no way to reply. Omit only when the user is explicitly sending a one-way message."
}
},
"required": [
"from",
"purpose",
"message"
]
},
"page": "/"
}book_intro_call_with_davidSensitive Action
Return the booking URL for a PAID intro.co call with David Poblador. intro.co charges for these consultations; the end-user will be asked to pay on the booking page. Use only when the end-user explicitly wants a live advisory conversation and is prepared to pay. For asynchronous written questions, use contact_david instead.
View tool JSON
{
"name": "book_intro_call_with_david",
"kind": "transact",
"impl": "imperative",
"description": "Return the booking URL for a PAID intro.co call with David Poblador. intro.co charges for these consultations; the end-user will be asked to pay on the booking page. Use only when the end-user explicitly wants a live advisory conversation and is prepared to pay. For asynchronous written questions, use contact_david instead.",
"inputSchema": {
"type": "object",
"properties": {
"topic": {
"type": "string",
"maxLength": 200,
"description": "Optional short description of what the end-user wants to discuss. Not sent to David — included in the tool response so you can present it back to the user."
}
}
},
"page": "/"
}get_about_davidAnswer
Return structured information about David Poblador — his role, affiliation, languages, photo, and the social/professional profiles and domains he publishes on. Use this to answer 'Who is David?', 'What does David do?', or 'Where can I follow David?'. For writings, talks, or projects use list_davids_recent_posts, list_davids_appearances, or list_davids_projects.
View tool JSON
{
"name": "get_about_david",
"kind": "answer",
"impl": "imperative",
"description": "Return structured information about David Poblador — his role, affiliation, languages, photo, and the social/professional profiles and domains he publishes on. Use this to answer 'Who is David?', 'What does David do?', or 'Where can I follow David?'. For writings, talks, or projects use list_davids_recent_posts, list_davids_appearances, or list_davids_projects.",
"inputSchema": {
"type": "object",
"properties": {}
},
"page": "/"
}list_davids_recent_postsAnswer
List recent blog posts by David with title, date, URL, tags, and description. Entries include a markdown_url where available — fetch that to read the full post as clean markdown. Use this for 'What has David written about X?' or 'What are David's latest posts?'.
View tool JSON
{
"name": "list_davids_recent_posts",
"kind": "answer",
"impl": "imperative",
"description": "List recent blog posts by David with title, date, URL, tags, and description. Entries include a markdown_url where available — fetch that to read the full post as clean markdown. Use this for 'What has David written about X?' or 'What are David's latest posts?'.",
"inputSchema": {
"type": "object",
"properties": {
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "How many posts to return (default 10)."
},
"since_year": {
"type": "integer",
"minimum": 2000,
"maximum": 2100,
"description": "Only return posts from this year or later."
}
}
},
"page": "/"
}list_davids_appearancesAnswer
List David's public appearances: talks, podcasts, press interviews, broadcast media, writing, and events. Each entry has a title, outlet, date, language, type, and optional links. Use this for 'Has David spoken about X?', 'What podcasts has David been on?', 'Where has David been quoted?'.
View tool JSON
{
"name": "list_davids_appearances",
"kind": "answer",
"impl": "imperative",
"description": "List David's public appearances: talks, podcasts, press interviews, broadcast media, writing, and events. Each entry has a title, outlet, date, language, type, and optional links. Use this for 'Has David spoken about X?', 'What podcasts has David been on?', 'Where has David been quoted?'.",
"inputSchema": {
"type": "object",
"properties": {
"type": {
"type": "string",
"enum": [
"talk",
"podcast",
"press",
"media",
"writing",
"event"
],
"description": "Filter by appearance type."
},
"lang": {
"type": "string",
"enum": [
"en",
"es",
"ca",
"sv"
],
"description": "Filter by the language the appearance was delivered in."
},
"since_year": {
"type": "integer",
"minimum": 2000,
"maximum": 2100
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 200,
"description": "Default 20."
}
}
},
"page": "/"
}list_davids_projectsAnswer
List projects David has built or maintains — name, description, external link, and status (active, beta, archived). Use this for 'What is David building?' or 'What are David's side projects?'.
View tool JSON
{
"name": "list_davids_projects",
"kind": "answer",
"impl": "imperative",
"description": "List projects David has built or maintains — name, description, external link, and status (active, beta, archived). Use this for 'What is David building?' or 'What are David's side projects?'.",
"inputSchema": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": [
"active",
"beta",
"archived"
],
"description": "Filter by project status."
}
}
},
"page": "/"
}