Developers
Kai developer docs
Kai is an AI executive assistant by Morgen for calendar, email, tasks and meetings. This page covers how an AI client or a script talks to it: the two MCP servers, the public endpoints on hirekai.ai, and the spec that describes them.
Two ways in
- To act on a user's own data (their calendar, email, tasks and meetings), connect Kai's MCP server at
https://api.morgen.so/mcp-kai. The user signs in and approves once. - To read about Kai (features, comparisons, the blog), use the public endpoints on hirekai.ai or the Content MCP at
https://hirekai.ai/mcp. No account, no key.
Kai doesn't have a REST API for account data: everything that touches a user's account goes through the Kai MCP server.
Kai MCP server (user data)
- Address:
https://api.morgen.so/mcp-kai - Transport: Streamable HTTP
- Auth: OAuth 2.1. Your MCP client registers itself and opens Kai's sign-in; the user approves the connection on Kai's consent screen. There's no API key to copy.
- What it can do: read and manage the user's calendars and events, tasks and tags, email (search, read, draft, and send when the user says so), meeting recordings and notes, triage notifications, booking link and Kai Workflows.
Example: Claude Code
claude mcp add --scope user --transport http kai https://api.morgen.so/mcp-kaiSetup steps for Claude, ChatGPT, Gemini, Cursor and VS Code are on Connect Kai over MCP.
Content MCP (public)
https://hirekai.ai/mcp answers questions about Kai over MCP. It's read-only, needs no auth and holds no user data. It runs stateless: every POST is one JSON-RPC message, with no session id.
- Tools:
search_kai,get_feature,get_product_info,list_blog_posts,get_blog_post,compare_kai_with,get_free_tool - Resources: every blog post, feature page and comparison, the knowledge base and the agent skills, as
kai://URIs in markdown - Server card: /.well-known/mcp/server-card.json
Initialize
curl -X POST https://hirekai.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0.0"}}}'Search Kai's content
curl -X POST https://hirekai.ai/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_kai","arguments":{"query":"botless meeting notes","limit":5}}}'Public endpoints
Everything below is on https://hirekai.ai, and the full definitions (parameters, response schemas, examples) are in /openapi.json (OpenAPI 3.1).
| Method | Path | What it does |
|---|---|---|
| GET | /api/health | Check the site is up |
| GET | /llms.txt | Get llms.txt |
| GET | /llms-full.txt | Get the full knowledge base as text |
| GET | /AGENTS.md | Get the agent integration guide |
| GET | /sitemap.md | List every public page (markdown) |
| GET | /sitemap.xml | List every public page (XML) |
| GET | /openapi.json | Get this OpenAPI document |
| GET | /.well-known/api-catalog | Get the API catalog (RFC 9727) |
| GET | /.well-known/agent-skills/index.json | List agent skills |
| GET | /.well-known/mcp/server-card.json | Get the MCP server card |
| GET | /api/md/home | Get the homepage as markdown |
| GET | /{feature}.md | Get a feature page as markdown |
| GET | /compare/{competitor}.md | Get a Kai-vs-competitor comparison as markdown |
| GET | /blog/{slug}.md | Get a blog post as markdown |
| GET | /blog/how-we-grow/{issue}.md | Get a How We Grow issue as markdown |
| GET | /api/md/skills/{name} | Get one agent skill's doc |
| POST | /mcp | Call the Content MCP (JSON-RPC 2.0) |
| GET | /get-started | Send a person to Kai's sign-up |
| POST | /api/contact | Submit the contact form |
Pages as markdown
curl https://hirekai.ai/meetings.md
curl -H "Accept: text/markdown" https://hirekai.ai/Authentication
- The public endpoints and the Content MCP: none.
- The Kai MCP server: OAuth 2.1, run by your MCP client. Access covers the whole Kai account the user approves, so only connect clients the user trusts.
- Sign-up isn't an API call: send a person to /get-started, which opens the Kai app.
Errors
Any /api/* path that doesn't exist answers with a JSON 404, and so does any missing page requested with Accept: application/json:
curl -s https://hirekai.ai/api/does-not-exist
{
"error": "not_found",
"status": 404,
"message": "No resource at /api/does-not-exist.",
"hint": "Check the path against https://hirekai.ai/openapi.json, or browse https://hirekai.ai/sitemap.md for pages.",
"docs": "https://hirekai.ai/developers"
}Ask for markdown and a missing page returns a short markdown 404 with links to the sitemap, llms.txt and this page. The status is always a real 404, never a 200.
curl -i -H "Accept: text/markdown" https://hirekai.ai/some-page-that-does-not-exist404: nothing at that path406on/mcp: the Accept header must list bothapplication/jsonandtext/event-stream429: rate limited (see below), with a JSONerrormessage
Rate limits
/mcp: 60 requests a minute per networksearch_kai: at most 20 results a call- Static files and markdown pages: served from the CDN, no limit you'll hit
Machine-readable files
- /openapi.json: OpenAPI 3.1 spec for the public endpoints
- /.well-known/api-catalog: API catalog (RFC 9727)
- /llms.txt and /llms-full.txt: what Kai is, when to use it, and the full knowledge base
- /AGENTS.md: agent integration guide with example calls
- /.well-known/agent-skills/index.json: agent skills index
- /sitemap.md: every public page
- /api/health: status
Questions or a partnership idea? Use the contact form.
