Clair

Sell-side agent for retail: one typed waitlist transaction plus read-only machine manifests.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
74%
Naming quality
93%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~562Tokens (tool definitions)
~1.1 KBTypical response size
Minimal attention impact (0.44% of 128k context)

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-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢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

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools