# FakeParrot MCP server
---

**Last updated:** September 24, 2026

---

Connect an AI agent to FakeParrot at **`https://fakeparrot.com/mcp`**. It is a
remote MCP server over Streamable HTTP, and it signs in with OAuth or an API key.

## What an agent can do

FakeParrot holds a company's knowledge in a shared wiki and runs its automated
workflows. Through this server, an agent such as Claude, ChatGPT, Cursor or your
own can:

- **Find and read** wiki pages and files: search, list, read, compare versions
  and read comments.
- **Write** to the wiki: create, edit, move and delete pages and folders; edit
  Word, Excel and PowerPoint files in place; post comments.
- **Run workflows**: list saved workflows, start one, and read its run report.
- **Build workflows**: create, change, schedule, turn on and turn off workflows.
- **Check operations**: read workflow and connection health, the team
  directory, and reports from connected systems such as QuickBooks and HubSpot.

Every call acts as the person who connected. The agent can see and change only
what that person can see and change in FakeParrot.

## Who can connect

- Anyone with a FakeParrot account. Accounts use a work email address; personal
  addresses such as Gmail are refused.
- If your company does not use FakeParrot yet, signing in at
  [fakeparrot.com/login](/login) with your work email creates a new, empty
  workspace for it.
- A connection has the same access as the person who approved it. Company admins
  keep every control they have in FakeParrot. A person can revoke a connection
  at any time under **Connections → Agents → Signed in**.

## Server details

- **Server URL:** `https://fakeparrot.com/mcp`
- **Transport:** Streamable HTTP. Send each JSON-RPC message in its own `POST`.
  Replies are plain JSON.
- **Protocol versions:** `2025-06-18`, `2025-03-26` and `2024-11-05`
- **Sign-in:** OAuth 2.1 with PKCE, or an API key
- **MCP Registry name:** `com.fakeparrot/mcp`

Most MCP clients need only the server URL. They find the sign-in details on
their own and open FakeParrot's approval screen in the browser.

## Set up your client

### Claude and Claude Desktop

Open **Settings → Connectors**, choose **Add custom connector**, and paste
`https://fakeparrot.com/mcp`. Claude opens FakeParrot to sign in.

### Claude Code

```bash
claude mcp add --transport http fakeparrot https://fakeparrot.com/mcp
```

Then run `/mcp` in Claude Code and choose **fakeparrot** to sign in.

### ChatGPT

Turn on developer mode under **Settings → Apps → Advanced settings**. Then
create an app with the server URL `https://fakeparrot.com/mcp` and OAuth sign-in.

### Cursor

Add this to `~/.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "fakeparrot": { "url": "https://fakeparrot.com/mcp" }
  }
}
```

### VS Code

Add this to `.vscode/mcp.json`:

```json
{
  "servers": {
    "fakeparrot": { "type": "http", "url": "https://fakeparrot.com/mcp" }
  }
}
```

### Codex

```bash
codex mcp add fakeparrot --url https://fakeparrot.com/mcp
codex mcp login fakeparrot
```

### Scripts and other clients

Create an API key, as described under **Sign in with an API key**, and send it
as `Authorization: Bearer fkp_...`. The **Example requests** section shows a full
session with `curl`.

## Sign in with OAuth

FakeParrot runs a standard OAuth 2.1 authorization server. A client that
supports MCP authorization needs no setup.

1. Call `/mcp` without a token. The server answers `401` with a
   `WWW-Authenticate` header that points to its metadata.
2. Read the metadata:
   - `https://fakeparrot.com/.well-known/oauth-protected-resource`
   - `https://fakeparrot.com/.well-known/oauth-authorization-server`
3. Register a client with `POST https://fakeparrot.com/api/oauth/register`,
   sending `client_name` and `redirect_uris`. You get back a public client ID
   (`fpc_...`) and no client secret. Redirect URIs must use `https`, or
   `http://localhost` and `http://127.0.0.1` for apps on the person's own
   computer.
4. Send the person to `https://fakeparrot.com/auth/oauth/authorize` with
   `response_type=code`, `client_id`, `redirect_uri`, `code_challenge`,
   `code_challenge_method=S256` and `scope`. They sign in and approve the
   connection.
5. Exchange the code at `POST https://fakeparrot.com/api/oauth/token` with
   `grant_type=authorization_code`, `code`, `redirect_uri`, `client_id` and
   `code_verifier`, sent as form fields.

Rules to know:

- PKCE with `S256` is required.
- Leave out `scope` to ask for all six permissions listed below.
- Add `offline_access` to `scope` to receive a refresh token. Renew with
  `grant_type=refresh_token`, `refresh_token` and `client_id`. Each renewal
  returns a new refresh token.
- An access token stops working after 30 days without use. It also stops when
  the person leaves the company or revokes the connection.

## Sign in with an API key

Use an API key for scripts and for clients without OAuth support.

1. In FakeParrot, open **Connections → Agents → MCP**.
2. Create a key, choose its permissions, and copy it. FakeParrot shows the key
   only once.
3. Send it on every request: `Authorization: Bearer fkp_...`

A key works until you revoke it. Create one key per app so you can revoke each
one on its own.

## Permissions

| Scope | What it allows |
|---|---|
| `wiki:read` | Search, list and read wiki pages and files, compare versions, and read comments. |
| `wiki:write` | Create, edit, move and delete pages and folders; edit Word, Excel and PowerPoint files in place; post comments. Includes `wiki:read`. |
| `workflows:read` | List workflows and read their setup, history and run reports. |
| `workflows:run` | Start a saved workflow. Includes `workflows:read`. |
| `workflows:write` | Create, change, schedule, turn on and turn off workflows. Includes `workflows:read`. |
| `ops:read` | Read workflow and connection health, the team directory, and reports from connected systems such as QuickBooks and HubSpot. |

`tools/list` returns only the tools a connection can use. A tool needs its
scope, and a few also need the person's role in FakeParrot. Call `tools/list`
for the complete, current set.

## Tools

| Group | Scope | Main tools |
|---|---|---|
| Find and read | `wiki:read` | `search_wiki`, `list_wiki`, `read_page`, `compare_page_versions`, `read_page_comments` |
| Write | `wiki:write` | `save_page`, `append_to_page`, `edit_page_by_id`, `move_page`, `create_folder`, `delete_page`, `revise_file_by_id`, `post_page_comment` |
| Workflows | `workflows:read` | `list_workflows`, `get_workflow`, `get_workflow_run` |
| Run workflows | `workflows:run` | `run_workflow` |
| Build workflows | `workflows:write` | `create_workflow`, `revise_workflow`, `set_workflow_schedule`, `activate_workflow`, `deactivate_workflow` |
| Operations | `ops:read` | `get_workflow_fleet_health`, `get_connection_fleet_health`, `lookup_person`, `get_team_directory` |

`save_page` without a path files the page in the person's private Inbox, not
in the shared company wiki. `delete_page` can be undone from the FakeParrot web
app.

## Example prompts

- "Search FakeParrot for our parental leave policy and summarize it."
- "Save these meeting notes to FakeParrot under Sales / Customer calls."
- "Run the weekly pipeline report workflow in FakeParrot and tell me when it
  finishes."
- "Who is on the finance team, according to FakeParrot?"
- "Which of our FakeParrot connections need attention?"

## Example requests

Start a session:

```bash
curl https://fakeparrot.com/mcp \
  -H "Authorization: Bearer $FAKEPARROT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-06-18","capabilities":{},"clientInfo":{"name":"my-agent","version":"1.0"}}}'
```

The reply carries an `Mcp-Session-Id` header. Send it back on later requests so
FakeParrot groups the session's work together:

```bash
curl https://fakeparrot.com/mcp \
  -H "Authorization: Bearer $FAKEPARROT_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Mcp-Session-Id: <id from initialize>" \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_wiki","arguments":{"query":"expense policy"}}}'
```

## Protocol details

- Supported methods: `initialize`, `ping`, `tools/list` and `tools/call`.
- Send one message per request. Batches are refused. Notifications get `202`.
- `GET /mcp` returns `405`, because the server never opens a stream.
- `DELETE /mcp` with an `Mcp-Session-Id` header ends that session.
- A missing or invalid token gets `401`. A tool the connection may not use
  returns a tool error that names the missing permission.

## Privacy and support

FakeParrot handles the data behind these tools under its
[Privacy Policy](/privacy), [AI Data Policy](/legal/ai-data-policy) and
[Security Overview](/legal/security). For help, email
[support@fakeparrot.com](mailto:support@fakeparrot.com). Report security issues
to [security@fakeparrot.com](mailto:security@fakeparrot.com).
