This site speaks MCP
My portfolio now exposes tools to AI agents: WebMCP in the browser, a remote MCP endpoint for Claude and Cursor, and a contact flow where the human always clicks Send. Notes on what I built and why.
Reading
As of this week, this website has two kinds of users: people, and the AI agents people send here on their behalf. Both are now served on purpose.
If you browse with an agent that supports WebMCP (Chrome is trialing it natively, extensions and polyfills cover the rest), every page on this site registers twelve tools with the browser. An agent can pull my profile, my availability, my case studies, my writing, and my resume as structured data instead of scraping the page. It can navigate the site, start the resume download, and interview the same chat persona you see on the home page.
If you are not in a browser at all, the same content is one config line away: any MCP client (Claude, Cursor, and friends) can connect to https://www.khalidibnehasan.com/api/mcp over streamable HTTP. No auth, no key, read-only.
What I decided along the way
The interesting part was not the plumbing. It was deciding what an agent should be allowed to do on a personal site.
Reads are free. Everything the tools return is already public, and every response carries attribution so an agent quoting me can say where the words came from.
Actions keep a human in the loop. The contact tool fills the form, scrolls it into view, highlights it, and stops. It cannot press Send. The anti-bot layers on the form (honeypot, time trap, BotID) stay exactly as they were, because the point is not to help agents impersonate people. It is to remove the boring transcription work while a person still owns the decision to reach out.
The site stays identical for everyone else. The tools live in one invisible component. No banners, no chrome, no penalty for visiting the old-fashioned way.
Why bother
A growing share of first contact with your work is now mediated by a model: a recruiter's assistant summarizing candidates, a founder asking Claude who can help with an AI adoption problem, a browser agent booking calls. You can let those agents guess at your HTML, or you can hand them a clean interface and decide the boundaries yourself. I would rather decide.
I write about building with AI in education and product work at Keyin College, and this site is where I try those ideas at personal scale. If you want the longer story behind this build, the essay version is on my Substack, and if your organization is thinking about what agent-ready means for its own software, my contact form is one tool call away. A human will still click Send.