Clair
Sell-side agent for retail: one typed waitlist transaction plus read-only machine manifests.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"clair": {
"url": "https://www.meetclair.co/api/mcp"
}
}
}Remote endpoints
https://www.meetclair.co/api/mcpstreamable-httpWhat it can do
Tool inventory
Tools (3)
🟢get_signup_schema
Returns the authoritative JSON schema, required fields and privacy terms for the waitlist transaction (exactly what GET /api/signup returns). Read this before joining.
Input Schema
{
"type": "object",
"properties": {}
}🟡join_waitlist(email, consent, agent_name, agent_operator, on_behalf_of)
One typed transaction: joins the named person to the Clair pilot waitlist. consent: true is a recorded claim - assert it only with the person's consent. One submission per person; repeats return already: true. Returns an edit_token binding follow-up details. Identify yourself with agent_name, agent_operator, on_behalf_of.
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "Email of the person joining."
},
"consent": {
"type": "boolean",
"description": "Must be true. Recorded claim of the named person's consent."
},
"agent_name": {
"type": "string",
"description": "Optional self-identification: your name as an agent."
},
"agent_operator": {
"type": "string",
"description": "Optional self-identification: who operates you."
},
"on_behalf_of": {
"type": "string",
"description": "Optional self-identification: who sent you."
}
},
"required": [
"email",
"consent"
]
}🟡update_waitlist(email, consent, edit_token, name, company, ...)
Merges follow-up details into an existing waitlist record. Requires the edit_token returned by join_waitlist - email alone never authorizes a merge. A repeat with nothing new returns already: true. All detail fields optional: name, company, role, context (one line: what they sell), why (the problem they are solving), question (anything they want to ask).
Input Schema
{
"type": "object",
"properties": {
"email": {
"type": "string",
"description": "The email used at join time."
},
"consent": {
"type": "boolean",
"description": "Must be true."
},
"edit_token": {
"type": "string",
"description": "Token returned by join_waitlist."
},
"name": {
"type": "string"
},
"company": {
"type": "string"
},
"role": {
"type": "string"
},
"context": {
"type": "string",
"description": "One line: what they sell."
},
"why": {
"type": "string",
"description": "What brought them here - the problem to solve."
},
"question": {
"type": "string",
"description": "Anything they want to ask Clair."
}
},
"required": [
"email",
"consent",
"edit_token"
]
}Community
Evidence