> ## Documentation Index
> Fetch the complete documentation index at: https://docs.postqueen.ai/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> PostQueen's hosted API is https://api.postqueen.ai. The public API base is https://api.postqueen.ai/public/v1 and takes the raw API key in the Authorization header, with no Bearer prefix.
> The MCP server for posting is https://api.postqueen.ai/mcp/YOUR_API_KEY (or /mcp with Authorization: Bearer YOUR_API_KEY). docs.postqueen.ai/mcp only searches these docs and cannot post.
> The API key is under Connections > API Keys in the app, and only workspace admins can see it.

# Devin Desktop

> Connect Devin Desktop to PostQueen with one devin mcp add command, then ask Devin Local to write, schedule and check your posts.

export const AgentStatus = ({status, label, children}) => {
  const look = ({
    tested: {
      color: 'green',
      icon: 'badge-check'
    },
    'partly-tested': {
      color: 'green',
      icon: 'badge-check'
    },
    'vendor-docs': {
      color: 'surface',
      icon: 'book-open'
    },
    'not-possible': {
      color: 'gray',
      icon: 'circle-slash'
    }
  })[status] || ({
    color: 'gray',
    icon: 'circle-question-mark'
  });
  const cut = status === 'partly-tested' ? -1 : (label || '').indexOf(', ');
  const rest = cut > 0 ? label.slice(cut + 2) : '';
  const pill = status === 'partly-tested' ? 'Partly tested' : cut > 0 ? label.slice(0, cut) : label;
  const note = status === 'partly-tested' ? label : cut > 0 ? rest.charAt(0).toUpperCase() + rest.slice(1) + '.' : null;
  return <div className="pq-status not-prose" data-status={status}>
      <Badge color={look.color} shape="pill" size="md" icon={look.icon}>{pill}</Badge>
      {note || children ? <span className="pq-status-note">
          {note}
          {note && children ? ' ' : null}
          {children}
        </span> : null}
    </div>;
};

<AgentStatus status="vendor-docs" label="From the vendor's docs, not tested by PostQueen yet" />

Devin Desktop is Cognition's AI code editor, and Devin Local is its agent. Add PostQueen as an MCP server and Devin Local can write posts about your work, schedule them and report how your published posts did.

## Before you start

* **Plans:** Free, Pro, Max, Teams and Enterprise. Cognition does not confirm MCP on the Free plan. On Enterprise, an admin must enable Devin Local.
* **Platforms:** macOS, Windows 10 or later, and Linux (glibc 2.28 or later).
* **A PostQueen API key.** A workspace admin copies it, or the ready-made address, from **Connections**.

<Info>
  **Where the API key is:** in the app, open **Connections > API Keys**. Only a workspace Admin or Super Admin can reveal or rotate it; other members see it masked. A workspace has one key, and each agent card on **Connections** shows your MCP address with the key already filled in.
</Info>

## Connect Devin Desktop

<Steps>
  <Step title="Add PostQueen">
    Run this in your terminal, with your key in place of `YOUR_API_KEY`:

    ```bash theme={"system"}
    devin mcp add -s user postqueen \
      https://api.postqueen.ai/mcp/YOUR_API_KEY
    ```

    `-s user` saves it for every project. Without it, it is saved for the current project only.
  </Step>

  <Step title="Open a new agent tab">
    In Devin Desktop, open a new agent tab so Devin Local loads the server.
  </Step>
</Steps>

<Accordion title="Prefer to edit the config file?" icon="file-code">
  Add the server to `~/.config/devin/mcp_config.json`, or `%APPDATA%\devin\mcp_config.json` on Windows:

  ```json ~/.config/devin/mcp_config.json theme={"system"}
  {
    "mcpServers": {
      "postqueen": {
        "url": "https://api.postqueen.ai/mcp/YOUR_API_KEY"
      }
    }
  }
  ```
</Accordion>

## Check that it works

Ask Devin Local: "List my PostQueen channels." By default it asks before each tool call; allow the tool, or every PostQueen tool, for the session or permanently. It then answers with the channels you connected.

## Good to know

* **Devin Local asks before every MCP tool call** by default. You can allow one PostQueen tool, or every tool on the server, for the session or permanently.
* **Run `devin mcp list`** to see the servers Devin knows about.
* **Devin Local can run the command for you** if you allow it.
* **Ask for drafts when you want to check first.** A draft waits on your PostQueen calendar, and nothing publishes until you schedule it.
* **What it cannot do over MCP:** delete a post, or change a post's text or time. Do that on the calendar in the app. [The MCP tools](/mcp/tools) lists what it can do.

## Other ways to connect

| Way                    | Address                                      | Status                                 |
| ---------------------- | -------------------------------------------- | -------------------------------------- |
| The key in the address | `https://api.postqueen.ai/mcp/YOUR_API_KEY`  | From Cognition's docs. The route above |
| The Bearer header      | `https://api.postqueen.ai/mcp`               | From Cognition's docs                  |
| Sign in with PostQueen | `https://api.postqueen.ai/mcp-oauth-dynamic` | Not tested yet                         |

<Tabs>
  <Tab title="Bearer header">
    ```bash theme={"system"}
    devin mcp add -s user postqueen https://api.postqueen.ai/mcp \
      -H "Authorization: Bearer YOUR_API_KEY"
    ```
  </Tab>

  <Tab title="Sign in (not tested yet)">
    ```bash theme={"system"}
    devin mcp add -s user postqueen \
      https://api.postqueen.ai/mcp-oauth-dynamic
    devin mcp login postqueen
    ```

    Or press **Authenticate** on PostQueen in Devin Desktop. Devin registers itself and opens the PostQueen sign-in, which a workspace admin approves. The sign-in address has 20 tools, all but `ask_postqueen`. Revoke access in PostQueen under **Connections > Approved Apps**.
  </Tab>
</Tabs>

## Try this first

```text wrap theme={"system"}
List my PostQueen channels. Then write a short Bluesky post about the change in this branch and save it as a draft for tomorrow at 9am.
```

The draft appears on your PostQueen calendar, ready for you to check and schedule. [Prompts to try](/mcp/examples) has more.

## Troubleshooting

| Symptom                                | Fix                                                                                                     |
| -------------------------------------- | ------------------------------------------------------------------------------------------------------- |
| Devin Local does not see PostQueen     | Open a new agent tab. Run `devin mcp list` to check that the server is saved.                           |
| It works in one project only           | It was added without `-s user`. Add it again with `-s user`.                                            |
| Every PostQueen call asks for approval | That is Devin Local's default. Allow the tool, or every PostQueen tool, for the session or permanently. |
| PostQueen shows **Needs auth**         | Press **Authenticate** to sign in again, or use the key address.                                        |
| The key is refused                     | Copy it again from **Connections > API Keys**. Only a workspace Admin or Super Admin can reveal it.     |

More fixes are on [Troubleshooting agents](/agents/troubleshooting).

## Next steps

<CardGroup cols={2}>
  <Card title="Every agent" icon="bot" href="/agents/overview">
    Which agents can post to PostQueen, how each one connects, and what PostQueen has tested.
  </Card>

  <Card title="The MCP tools" icon="wrench" href="/mcp/tools">
    What each of the 21 tools does, and what an agent cannot do.
  </Card>

  <Card title="Prompts and tool calls" icon="messages-square" href="/mcp/examples">
    The order an agent calls the tools in, with prompts that work.
  </Card>

  <Card title="Troubleshooting agents" icon="life-buoy" href="/agents/troubleshooting">
    What to do when a connection or a command fails.
  </Card>
</CardGroup>
