---
title: "cf0 developers: API, MCP server and OAuth · cf0"
description: "The cf0 MCP server, the public listings API, OAuth sign-in and the agent discovery files."
canonical: "https://cf0.ai/developers"
---

# cf0 developers: API, MCP server and OAuth · cf0

The cf0 MCP server, the public listings API, OAuth sign-in and the agent discovery files.

Reference

## cf0 MCP server

[https://api.cf0.ai/mcp](https://api.cf0.ai/mcp). Streamable HTTP transport. Users sign in to a cf0 account with OAuth 2.1.

-   `ask_agent`: reads Zero’s work, home drafts and listing requirements. Read only.
-   `save_home_draft`: adds or updates a home draft. It does not publish.
-   `import_listings`: stages homes from the owner’s own ad text as drafts.
-   `answer_agent`: records a decision on the latest version that Zero showed.
-   `give_agent_task`: gives Zero work with one person from the records.

Claude: [https://cf0.ai/claude](https://cf0.ai/claude). ChatGPT: [https://cf0.ai/chatgpt](https://cf0.ai/chatgpt).

Claude Code

`/plugin marketplace add cf0-enterprise/cf0-plugin``/plugin install cf0-zero@cf0`

## cf0 docs MCP server

[https://cf0.ai/docs/mcp](https://cf0.ai/docs/mcp). Streamable HTTP transport, no sign-in. `search_docs` finds sections of the public cf0 pages, and `get_doc` returns one page as markdown. Both only read.

The same search answers NLWeb requests at [https://cf0.ai/ask](https://cf0.ai/ask):

`POST /ask {"query": {"text": "letting fee"}}`

## cf0 public API

REST, JSON, no key. OpenAPI: [https://cf0.ai/openapi.json](https://cf0.ai/openapi.json). Base: [https://cf0.ai/api/public/listings](https://cf0.ai/api/public/listings).

-   `GET /api/public/listings`: search homes to rent. Query: market, city, beds, max\_rent\_minor, available\_by, sort, cursor.
-   `GET /api/public/listings/markets`: the markets where owners list.
-   `GET /api/public/listings/places`: the places with homes to rent.
-   `GET /api/public/listings/homes/{market}/{city}/{home}`: one home.

Rate limit: 120 reads a minute for each IP address, sent in the RateLimit-Policy header. Errors are JSON:

`{"error": "<code>"}`

## Authentication

-   Guide: [https://cf0.ai/auth.md](https://cf0.ai/auth.md)
-   Protected resource metadata: [https://api.cf0.ai/.well-known/oauth-protected-resource](https://api.cf0.ai/.well-known/oauth-protected-resource)
-   Authorization server: [https://clerk.cf0.ai](https://clerk.cf0.ai)
-   Authorization server metadata: [https://clerk.cf0.ai/.well-known/oauth-authorization-server](https://clerk.cf0.ai/.well-known/oauth-authorization-server)

A client registers with a Client ID Metadata Document (CIMD). Sign-in uses the OAuth 2.1 authorization code grant with PKCE (S256). The MCP server accepts tokens from ChatGPT, Claude and Claude Code only.

## Agent discovery files

-   [/llms.txt](/llms.txt)
-   [/developers/llms.txt](/developers/llms.txt)
-   [/index.md](/index.md)
-   [/agents.md](/agents.md)
-   [/.well-known/api-catalog](/.well-known/api-catalog)
-   [/.well-known/ard.json](/.well-known/ard.json)
-   [/.well-known/agent-skills/index.json](/.well-known/agent-skills/index.json)
-   [/sitemap.xml](/sitemap.xml)

Each page under [/homes](/homes) has a Markdown twin: add .md to the path.

## Skills and plugin

-   list-my-home skill: [https://cf0.ai/skills/list-my-home.zip](https://cf0.ai/skills/list-my-home.zip). Guide: [/list/assistant](/list/assistant).
-   Plugin source, AGENTS.md and plugin.json: [https://github.com/cf0-enterprise/cf0-plugin](https://github.com/cf0-enterprise/cf0-plugin)

## Support

Email [luca@cf0.ai](mailto:luca@cf0.ai). Assistant setup: [/support#assistants](/support#assistants).
