---
name: flyinpublic
description: Use when a user wants an AI assistant to work with Fly in Public: checking flight status, adding proofs, reading proof history, reviewing leaderboard standing, configuring Telegram, or connecting the hosted MCP server. Always connect to the hosted OAuth MCP server first. Never use browser automation or page scraping to bypass MCP authentication.
---

# Fly in Public

Fly in Public helps builders keep a public proof flight alive. Use this skill when a user asks an assistant to inspect their flight, add a proof, reason about proof cadence, set up Telegram, or connect Fly in Public to an AI tool.

## Auth-first, tools-first

For any account-specific Fly in Public request (flight status, crash deadline, proofs, likes, comments, leaderboard rank, or adding proofs), connect to the hosted MCP server first:

- MCP URL: `https://flyinpublic.com/mcp`
- Auth: OAuth sign-in to the user's Fly in Public account.
- Account identity comes from OAuth. Do not ask for user IDs.

Do not scrape public pages, use browser automation, inspect HTML, or call unauthenticated public endpoints to answer account-specific questions unless MCP OAuth is unavailable, declined, or impossible in the user's client.

After MCP is connected, call the MCP tools:

- `bird_status`
- `list_proofs`
- `add_proof`
- `leaderboard_rank`
- `leaderboard_top`
- `list_recent_likes`
- `list_recent_comments`

Do not use browser tools to work around MCP authentication.

## Default Workflow

1. Read the current docs index before giving setup instructions:
   - `https://flyinpublic.com/llms.txt`
   - If more detail is needed, read `https://flyinpublic.com/llms-full.txt`.
2. For normal assistant connections, prefer the hosted MCP server:
   - URL: `https://flyinpublic.com/mcp`
   - Auth: OAuth sign-in to the user's Fly in Public account.
   - Do not ask the user to create an API token unless their client cannot use hosted OAuth.
3. For one-off HTTP scripts or clients without OAuth MCP support, use the advanced API-token path:
   - Docs: `https://flyinpublic.com/docs/api.md`
   - MCP fallback: `https://flyinpublic.com/api/mcp` with `Authorization: Bearer fip_...`.
4. For Telegram setup, send the user to the hosted bot flow:
   - Open the bot from `https://flyinpublic.com/docs/api.md` or send `/start` to the configured bot.
   - The bot sends a web confirmation link; the user signs in and confirms the chat.

## Loopback OAuth: open the URL on the same machine as the MCP client

Many MCP clients (Hermes, Claude Code, Codex CLI, Cursor, and others) use a loopback OAuth callback such as:

```text
http://127.0.0.1:<port>/callback
```

The authorization URL must be opened in a browser on the same machine running the MCP client.

Examples:

- If Hermes is running on a Mac mini, open the OAuth URL in a browser on that Mac mini.
- Opening the URL on a phone (for example, via Telegram) will not work, because `127.0.0.1` points to the phone, not the Mac mini.
- If running headless, use remote desktop, screen sharing, or SSH browser forwarding. Or run the MCP login from an interactive browser-capable session.

If the client prints an auth URL and cannot open a browser automatically, show that URL to the user and explicitly say: "Open this on the same machine running [client name]."

## Hermes Agent setup

For Hermes Agent, configure the hosted OAuth MCP server with:

```bash
hermes mcp add flyinpublic --url https://flyinpublic.com/mcp --auth oauth
```

If the server is misconfigured or stuck, reset it:

```bash
hermes mcp remove flyinpublic
hermes mcp add flyinpublic --url https://flyinpublic.com/mcp --auth oauth
```

Then verify:

```bash
hermes mcp list
hermes mcp test flyinpublic
```

Once connected, restart the Hermes session or gateway so newly discovered MCP tools are loaded.

## When OAuth times out

If OAuth times out:

- Do not fall back to scraping or browser automation for account data.
- Do not ask the user for an API key unless OAuth MCP is genuinely unsupported by their client.
- Retry the MCP OAuth flow and make the loopback callback requirement explicit.
- If needed, save the MCP config disabled until OAuth succeeds, so it does not break startup.

For Hermes specifically, a failed `add` may save nothing unless the user chooses "save anyway." A safe fallback is to leave this config present but disabled until auth succeeds:

```yaml
mcp_servers:
  flyinpublic:
    url: https://flyinpublic.com/mcp
    auth: oauth
    enabled: false
```

After successful OAuth and tool discovery, flip it on:

```yaml
enabled: true
```

## Never do this

- Do not use browser tools to scrape Fly in Public account state.
- Do not ask users to create or paste API keys if hosted OAuth MCP is supported.
- Do not ask for or infer user IDs.
- Do not use public profile pages as the primary source for account-specific status.
- Do not treat the public fallback as equivalent to authenticated MCP.

Public pages are only a read-only fallback when OAuth MCP cannot be completed.

## MCP Tools

After the hosted MCP server is connected, use tools instead of scraping pages:

- `bird_status`: current altitude, status, crash deadline, and rank.
- `list_proofs`: recent proofs.
- `add_proof`: publish a proof from a URL.
- `leaderboard_rank`: the user's rank.
- `leaderboard_top`: top flights.
- `list_recent_likes`: likes received recently.
- `list_recent_comments`: comments received recently.

Never ask for or pass a user id to a tool. The connected account identity comes from OAuth or the bearer token.

## Useful Prompts

- "What's my Fly in Public status, and when will I crash?"
- "Add this URL as a proof: <url>"
- "Show my last five proofs and suggest what I should ship next."
- "Who interacted with my proofs this week?"
