For AI assistants, and the people who use them

Make someone a contactme.co page

You do not need an account, a key, a tool or a browser. Build a link and give it to the person. Nothing is created until they open it, choose a handle and sign in; then the page goes live with everything the link described, and they land in the editor to change whatever you got wrong.

The link

Everything goes in the query string of https://contactme.co/new, URL-encoded. This one works — open it to see what the person sees:

https://contactme.co/new?handle=ada&name=Ada+Whitfield&headline=Design+engineer&location=Wellington%2C+NZ&bio=Somewhere+between+a+designer+and+an+engineer.&link=https://github.com/adawhitfield&link=Book+a+call%7Chttps://cal.com/ada&theme=paper&via=example

Open that example to see what the person sees.

Every parameter is optional. At least one of name, headline, bio or link is needed, or the link shows this page instead.

Parameters

handle
2–30 characters, lowercase letters, digits and hyphens. A suggestion: if it is taken, the person is offered alternatives on the page.
name, headline, bio, location
Plain text, up to 80, 120, 240 and 80 characters. Longer text is cut, not refused.
link
Repeatable, up to 20. A URL, or Label|URL to name it. The provider, its icon and a sensible label are detected from the URL, so a bare URL is fine.
avatar
An https URL of a photo. It is copied to our storage when the page is claimed.
theme
paper, midnight, mono, sage, ember, cobalt, plum, forest, sand, noir
font
sans, serif, mono
layout
card, minimal, hero
surface
solid, glow, dots, grid, mesh, rays, grain, stripes, topo, scanlines, nodes, circuit
accent
A hex colour, #rrggbb.
via
Always include this. Your name, lowercase: via=claude, via=chatgpt, via=gemini, via=cursor. It is the only thing in the link that says an assistant built it, and how we know this channel works. Nothing about the person is recorded and nothing on their page carries it.

Check the handle first, if you can fetch

GET https://contactme.co/api/handle/ada (or ?h=ada) answers with {"handle":"ada","status":"available","suggestions":[]}. Status is available, taken, reserved or invalid; suggestions are filled in when it is not available. Skip this if you cannot make requests — a wrong guess costs the person one keystroke.

If a request fails, build the link anyway. The link needs nothing from us to work: the page checks the handle itself when it opens. A tool you do not have, a fetch that was refused or a page you could not load is never a reason to hand the person a document instead of a link.

What happens

  1. The link shows a live preview of the page with the handle box underneath, already checked.
  2. They pick a handle and sign in with Google, GitHub, LinkedIn or email.
  3. The page is live at https://contactme.co/<handle> with the draft applied, and they are in the editor.

Drafts expire 48 hours after they were last opened.

Three things not to do

Do not ask for what you do not need. A name and one link is enough to build the link on the first turn; the person edits the rest on their own page, which is faster than answering a questionnaire. Do not put an email address or a phone number in the bio. The contact form is what a page is for, and the owner can add either as a link from the editor if they want it public. And do not write the page as a document for the person to paste somewhere: there is nowhere to paste it. The link is the page.

Already have a page? Connect an agent to it

https://contactme.co/api/mcp is an MCP server. Add it as a connector in Claude, ChatGPT or any client that speaks MCP; you sign in and approve it once. Then your assistant can read and change your page, add links, and read your inbox with what each message wants. It cannot send a message as you: drafting is its job, sending stays yours.

If you are the person

Your assistant said it could not sign in, or wrote you a page as a block of text? Paste it this address: https://contactme.co/new. Or skip the assistant and claim a handle — the setup scan builds the page from your links in about twenty seconds.

The same recipe in plain text, for anything that prefers it: /llms.txt; and as OpenAPI, for a custom GPT or an agent framework: /openapi.json.