# Fly in Public docs for AI agents Use these lightweight endpoints instead of scraping HTML pages. ## Docs - [Overview](https://flyinpublic.com/docs.md): What Fly in Public is and who it is for. - [Why it exists](https://flyinpublic.com/docs/why.md): The reason for the daily public marketing habit. - [How it works](https://flyinpublic.com/docs/how-it-works.md): The bird, the altitude, proofs, and the workday rhythm. - [Telegram bot](https://flyinpublic.com/docs/telegram.md): Connect Telegram and post proofs from chat. - [AI skill](https://flyinpublic.com/docs/skills.md): Installable skill and hosted OAuth MCP setup for AI assistants. - [For developers](https://flyinpublic.com/docs/developers.md): Integration paths for the API, MCP, and AI assistants. - [API, Telegram bot, and MCP](https://flyinpublic.com/docs/api.md): HTTP API reference, authentication, Telegram commands, and MCP entry point. - [MCP server](https://flyinpublic.com/docs/mcp.md): Client setup, tool reference, and JSON-RPC examples. - [Full docs bundle](https://flyinpublic.com/llms-full.txt): Combined docs. ## Human pages - [Overview](https://flyinpublic.com/docs) - [Why it exists](https://flyinpublic.com/docs/why) - [How it works](https://flyinpublic.com/docs/how-it-works) - [Telegram bot](https://flyinpublic.com/docs/telegram) - [AI skill](https://flyinpublic.com/docs/skills) - [For developers](https://flyinpublic.com/docs/developers) - [API docs](https://flyinpublic.com/docs/api) - [MCP docs](https://flyinpublic.com/docs/mcp) - [Profile settings](https://flyinpublic.com/settings/profile) --- # Fly in Public Fly in Public is a daily marketing ritual for builders. Put what you built in front of people, learn what resonates, and keep your flight alive. Miss a workday and your bird starts to drop. ## The short version You have a bird. The bird flies as long as you keep making your work visible. A proof is anything public people can open and react to: a post, a video, a landing page, a demo, a changelog, a small offer. Add one each workday and your bird stays up. ## Who it is for - Solo builders and indie makers shipping a product. - Founders who want a public, visible record of doing the work. - Creators and freelancers who want a daily reason to share something small. - Builders who can ship code fast but freeze when it is time to market it. - Anyone vibe-coding an idea who needs the other half: putting it in front of people. - Anyone who has been quietly tinkering and wants a tiny ritual that gets them on stage. You do not need to be a developer. The whole loop works from the web app and from Telegram. ## How it works at a glance 1. Sign up and pick a handle. That becomes your public flight page. 2. Each workday, share something in public: paste the link, add a short note. 3. Your bird gains altitude. Miss a workday and it slowly drops. 4. Keep flying long enough and you climb the leaderboard. ## Where you can post from - The web app: open your flight page and add a proof. - Telegram: send `/start` to [@flyinpublic_bot](https://t.me/flyinpublic_bot), confirm the web link, and post proofs from chat. - AI assistants: install the skill and connect the hosted MCP server. - Scripts and other tools: see the developer docs. ## Use the Telegram bot The bot is the quickest way to keep flying from your phone. Open [@flyinpublic_bot](https://t.me/flyinpublic_bot), send `/start`, tap the confirmation link, and sign in to connect your account. - `/status` checks your altitude, crash timing, and streak. - `/proof ` adds a public proof without opening the app. - `/leaderboard` shows where your flight stands. ## Read next - [Why it exists](https://flyinpublic.com/docs/why) - [How it works](https://flyinpublic.com/docs/how-it-works) - [Telegram bot](https://flyinpublic.com/docs/telegram) - [AI skill](https://flyinpublic.com/docs/skills) - [For developers](https://flyinpublic.com/docs/developers) --- # Why Fly in Public exists I'm [Maxime](https://flyinpublic.com/max), the maker. I love building, and I'm good at it. I used to believe great products would market themselves. They don't. ## The story Nowadays, anyone can vibe-code an idea in a weekend. Standing out is the harder half. We're all figuring that out together. Too many of my projects stalled because I treated marketing like something I could get to later. But marketing is part of the work. It can't be skipped. It only gets better with reps. ## The problem Most builders work in private. They polish in silence, then hope launch day fixes everything. It rarely does. Without steady public attempts, there is no market signal, no feedback to iterate on, and no proof that anyone cares yet. The fix is not a bigger launch. It is a smaller, steadier rhythm: share something in public every workday and learn what resonates. ## Marketing is execution Building the product is only half the job. Putting it where the right people can see it, react to it, and tell their friends about it is the other half. The two should happen in parallel, not in sequence. Fly in Public turns that into a daily habit. One public link a day. Some days that link is the product itself. Some days it is a post, a video, a teardown, a small offer, a behind-the-scenes peek. All of it counts. All of it compounds. ## The bird is the accountability A streak counter is easy to ignore. A bird that drops when you skip a day is harder to forget. The mechanic is silly on purpose: it pulls a serious habit out of "I should do that" and into "I want to do that today". ## You're not flying alone The leaderboard exists. It is fun. But the point is not to win it. The point is to keep flying long enough that one day someone says "I have been following your work" and you realise it has been working the whole time. And while you're at it, you'll see a lot of other builders in the air alongside you, shipping their own small things, climbing slowly. We are all in this together. ## Read next - [How it works](https://flyinpublic.com/docs/how-it-works) - [Overview](https://flyinpublic.com/docs) - [For developers](https://flyinpublic.com/docs/developers) --- # How Fly in Public works Fly in Public is built around one tiny loop: share something in public, your bird climbs. Skip a workday, your bird drops. Here is everything that loop touches. ## Your flight When you sign up and pick a handle, you get a public flight page at `https://flyinpublic.com/your-handle`. That page shows your bird, your recent proofs, and your current altitude. Anyone can visit it. That is the point. ## What counts as a proof A proof is any public link to something you made or shared. Examples: - A post on X, LinkedIn, Bluesky, Threads, Reddit, Hacker News, etc. - A YouTube clip, demo, or walkthrough. - A landing page, blog post, changelog, or release note. - A small offer, signup form, or anything someone could open and react to. It just needs to be reachable by a URL. ## Altitude, in plain English Your bird has an altitude between zero and one hundred. It moves up when you share in public and down when you do not. - Add a proof on a workday: your bird gains altitude. - Skip a workday: your bird loses a noticeable chunk of altitude. - Skip a weekend or rest day: your bird only drifts down a little. - Below thirty altitude: the bird is in danger. Share something to climb back. - At zero: the bird crashes. You can always start a new flight by sharing again. ## Workdays and rest days Fly in Public is built around a Monday-to-Friday rhythm by default. Workdays expect a proof. Weekends do not. Miss a workday and your bird drops fast. Take the weekend off and your bird drifts gently. ## Status, at a glance - Grounded: you have not posted your first proof yet. - Flying: you are sharing consistently. - Danger: altitude is getting low. - Missed: a workday went by without a proof. - Recovered: you shared after a miss. ## Streaks and the leaderboard Your streak is the number of workdays in a row you have posted a proof. The leaderboard ranks active flights so you can see who else is sharing. ## Three ways to post - Web app: open your flight page and add a proof. - Telegram: send `/start` to [@flyinpublic_bot](https://t.me/flyinpublic_bot), confirm the web link, then use `/proof ` in chat. - API, scripts, AI assistants: see the developer docs. ## What people see on your page - Your current altitude and status. - The history of every proof you have posted. - Likes and comments from other people on the platform. ## Read next - [Overview](https://flyinpublic.com/docs) - [Why it exists](https://flyinpublic.com/docs/why) - [Telegram bot](https://flyinpublic.com/docs/telegram) - [For developers](https://flyinpublic.com/docs/developers) --- # Telegram bot Use the Fly in Public Telegram bot when you want to keep flying from your phone. You can check your flight, add a proof from a link, get staged warnings before your bird crashes, see the leaderboard, and manage notifications without opening the web app. Bot: [@flyinpublic_bot](https://t.me/flyinpublic_bot) ## Connect your account 1. Open [@flyinpublic_bot](https://t.me/flyinpublic_bot) in Telegram. 2. Send `/start`. 3. Tap the confirmation link the bot sends back. 4. Sign in to Fly in Public if needed, then confirm the chat connection. 5. Return to Telegram and run `/status`. You can also connect from profile settings. Click "Connect Telegram", then send the one-time code to the bot. Codes and confirmation links expire after 15 minutes. ## Crash warnings Crash warnings are on by default after linking. When your bird is on track to crash, the bot sends staged heads-ups around 6 hours, 2 hours, and 30 minutes before the predicted crash time. Use `/notifications crash on` or `/notifications crash off` to change this. Each stage is sent once for the current crash deadline, then resets after your deadline meaningfully changes. ## Commands - `/start`: get a confirmation link for this chat. - `/start `: connect with a one-time code from settings. - `/whoami`: show the linked account name, handle, email, and profile. - `/status`: check altitude, crash timing, and streak. - `/proof [message]`: add a public proof. - `/leaderboard`: see top flights and your rank. - `/notifications crash on|off`: toggle 6h, 2h, and 30m crash warnings. - `/notifications likes|comments on|off`: turn interaction alerts on or off. - `/unlink`: disconnect this Telegram chat from your Fly in Public account. - `/help`: show the command list. ## Examples ```text /status /whoami /proof https://example.com/launch Shipped the first landing page /notifications crash on ``` ## What happens after linking - The bot only acts on the Fly in Public account you confirmed. - Proof URLs are posted to your current flight. - Crash warnings follow the staged 6h, 2h, and 30m schedule. - Like and comment notifications follow your Telegram notification settings. - You can disconnect any time with `/unlink` or from profile settings. ## Read next - [How it works](https://flyinpublic.com/docs/how-it-works) - [AI skill](https://flyinpublic.com/docs/skills) - [API docs](https://flyinpublic.com/docs/api) --- # Fly in Public skill Use the Fly in Public skill so an AI assistant can check your flight, add proofs from links, summarize your recent momentum, and nudge you before your bird drops. You do not need to understand API keys, MCP, or local servers. When your assistant needs account access, it should connect to `https://flyinpublic.com/mcp` and ask you to sign in to Fly in Public. ## What you can ask - "What's my flight status?" - "Add this launch post as a proof: https://example.com/post" - "Show my recent proofs and suggest what I should share next." - "Did anyone like or comment on my proofs this week?" ## Install from URL Some assistants can create a skill from a URL. Paste this prompt into your assistant: ```text Create or install a local agent skill named "flyinpublic" from this public skill file: https://flyinpublic.com/docs/skills/flyinpublic-skill.md Use the skill whenever I ask about Fly in Public, my proof flight, adding proofs, Telegram setup, or connecting an AI assistant. After installing it, read https://flyinpublic.com/llms.txt and connect the hosted MCP endpoint https://flyinpublic.com/mcp with OAuth sign-in. Do not use browser automation or page scraping to bypass MCP authentication. If OAuth requires opening a URL, show me the URL and remind me to open it on the same machine running this assistant. Do not ask me to create or paste API keys unless the hosted OAuth MCP path is unavailable. ``` Raw skill file: https://flyinpublic.com/docs/skills/flyinpublic-skill.md Download: https://flyinpublic.com/docs/skills/flyinpublic-skill.md?download=1 ## Paste the skill contents If your assistant asks for the skill text instead of a URL, ask it to create a skill named `flyinpublic`, then paste this: ```markdown --- 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:/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: " - "Show my last five proofs and suggest what I should ship next." - "Who interacted with my proofs this week?" ``` ## What the skill gives your assistant - The right Fly in Public docs to read before it answers. - The hosted sign-in connection to use for your account. - Actions for status, proofs, leaderboard, likes, and comments. - A rule to avoid asking you for API keys unless sign-in is unavailable. --- # Fly in Public for developers Fly in Public can be driven from the app, Telegram, scripts, or AI assistants. The docs are split into human-readable pages and Markdown endpoints that AI clients can read directly. ## Start here 1. Create your flight from the app. 2. Add proofs from the web app, Telegram, the REST API, or an MCP-compatible assistant. 3. Use API tokens when a trusted tool needs to check your flight or add proofs without opening the app. ## Choose your path | Need | Use | Link | | --- | --- | --- | | Connect an AI assistant without managing API keys | Fly in Public skill | https://flyinpublic.com/docs/skills | | Query flight status, proofs, leaderboard, or post proofs from a script | REST API | https://flyinpublic.com/docs/api | | Connect Claude, Cursor, OpenClaw, or another MCP client | MCP server | https://flyinpublic.com/docs/mcp | | Give an AI assistant the full docs context | LLM docs | https://flyinpublic.com/llms.txt | | Read everything as one text bundle | Full context | https://flyinpublic.com/llms-full.txt | ## What you can automate - Check whether your current flight is safe, chilling, flying, or crashed. - Post proofs from a CLI, cron job, Telegram workflow, or assistant. - Pull recent proofs and leaderboard position into another workspace. - Let an AI assistant inspect proof activity and help you decide what to share next. ## Agent-friendly docs Every docs page has a Markdown version, plus actions to copy the page or open it in ChatGPT or Claude. Prefer Markdown endpoints for AI clients because they avoid navigation, styling, and hidden UI noise. ## Access tokens Create API tokens from https://flyinpublic.com/settings/profile. Tokens are shown once, start with `fip_`, and can be revoked any time. Treat them like passwords. ## Read next - REST API reference: https://flyinpublic.com/docs/api - Skill setup: https://flyinpublic.com/docs/skills - MCP setup: https://flyinpublic.com/docs/mcp - LLM index: https://flyinpublic.com/llms.txt --- # Fly in Public API, Telegram bot, and MCP Fly in Public lets builders keep a public flight alive by posting proofs of work. These docs are optimized for AI agents and command-line clients. ## Quick start 1. For AI assistants, start with the skill guide: https://flyinpublic.com/docs/skills.md. 2. For Telegram, send `/start` to the hosted bot or connect from profile settings. 3. For scripts and custom clients, open https://flyinpublic.com/settings/profile and create an API token. Copy it immediately; it is only shown once. ## Authentication All `/api/v1/*` endpoints accept either a logged-in session cookie or a bearer token, except token management endpoints, which are session-only. ```http Authorization: Bearer fip_... ``` Tokens belong to one user account. Revoke tokens from profile settings. ## HTTP API Base URL: `https://flyinpublic.com/api/v1` Responses are JSON. ## Versioning | Field | Value | | --- | --- | | API version | `v1` | | Docs version | `2026-05-14` | | Base path | `/api/v1` | | Stability | Additive fields may be added to `v1`; breaking response or behavior changes require a new versioned path such as `/api/v2`. | ### v1 changelog | Date | Change | | --- | --- | | `2026-05-14` | Hosted OAuth MCP added at /mcp, advanced bearer-token MCP retained at /api/mcp, Telegram bot-first linking added with /telegram/connect, and the in-repo Fly in Public skill plus /docs/skills introduced. | ## Endpoints | Method | Path | Description | | --- | --- | --- | | GET | `/api/v1/me` | Viewer profile, project, and Telegram link state. | | GET | `/api/v1/bird/state` | Live flight state: altitude, status, crash deadline. | | GET | `/api/v1/proofs` | Your proofs, most recent first. | | POST | `/api/v1/proofs` | Create a proof. Body: `{ url, message?, proofType?, publishedAt? }`. | | GET | `/api/v1/leaderboard/me` | Your rank and a page of entries. | | GET | `/api/v1/tokens` | List API tokens with prefix, last-used time, and recent daily usage. Session-only. | | POST | `/api/v1/tokens` | Create or revoke a token with `_intent=create&name=...` or `_intent=revoke&id=...`. Session-only. | | POST | `/api/v1/telegram/link` | Generate a Telegram link code. Session-only. | | POST | `/api/v1/telegram/unlink` | Disconnect Telegram. Session-only. | ### Examples ```bash curl -H "Authorization: Bearer $FIP_TOKEN" \ https://flyinpublic.com/api/v1/bird/state curl -X POST \ -H "Authorization: Bearer $FIP_TOKEN" \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com/post","message":"Shipped today!"}' \ https://flyinpublic.com/api/v1/proofs ``` ## Telegram bot Telegram bot: https://t.me/flyinpublic_bot User setup: 1. Open the bot in Telegram and send `/start`. 2. Tap the signed confirmation link the bot sends back. 3. Sign in to Fly in Public if needed, then confirm the chat connection. 4. Return to Telegram and run `/status` or `/proof `. Settings compatibility: open profile settings, click "Connect Telegram", and send the 6-character code to the bot. Links and codes expire after 15 minutes. Commands: - `/start`: get a web confirmation link for this chat. - `/start `: link this chat with a settings-generated code. - `/whoami`: linked account name, handle, email, and profile. - `/status`: altitude, crash deadline, recent streak. - `/proof [message]`: post a new proof. - `/leaderboard`: top flights and your rank. - `/notifications crash on|off`: toggle 6h, 2h, and 30m crash warnings. - `/notifications likes|comments on|off`: toggle interaction alerts. - `/unlink`: disconnect this chat. - `/help`: command list. ## MCP Skill-first setup: https://flyinpublic.com/docs/skills.md Hosted MCP endpoint: `https://flyinpublic.com/mcp` Use OAuth sign-in when your MCP client connects. Advanced bearer-token MCP remains available at `https://flyinpublic.com/api/mcp`. ## LLM docs - Markdown API docs: https://flyinpublic.com/docs/api.md - Markdown skill docs: https://flyinpublic.com/docs/skills.md - Markdown MCP docs: https://flyinpublic.com/docs/mcp.md - LLM index: https://flyinpublic.com/llms.txt - Combined docs: https://flyinpublic.com/llms-full.txt --- # Fly in Public MCP server Fly in Public exposes a Model Context Protocol server so AI assistants can check your flight, list proofs, post new proofs, inspect proof interactions, and look up leaderboard status. Endpoint: `https://flyinpublic.com/mcp` Transport: HTTP / Streamable HTTP Authentication: OAuth sign-in to Fly in Public ## Recommended: install the skill Start with the skill guide: https://flyinpublic.com/docs/skills.md The skill tells compatible agents to use the hosted OAuth MCP endpoint and the lightweight docs before falling back to API tokens. ## Hosted OAuth client config Use this against the deployed Worker once OAuth storage is configured. In production, that is `https://flyinpublic.com/mcp`. ```json { "mcpServers": { "flyinpublic": { "type": "http", "url": "https://flyinpublic.com/mcp" } } } ``` Claude Code CLI: ```bash claude mcp add --transport http flyinpublic https://flyinpublic.com/mcp ``` MCP Inspector: ```bash npx @modelcontextprotocol/inspector \ --transport http \ --url https://flyinpublic.com/mcp ``` Your client should open an OAuth sign-in flow. Sign in to Fly in Public and approve the connection. ## Tools All tools operate on the connected user. No tool accepts a user-id argument. ### bird_status Get your bird's current flight state: altitude, status (flying, danger, missed, recovered, grounded), crash deadline, and recent streak. Inputs: - none ### list_proofs List your most recent proofs (most recent first). Returns id, url, platform, proofType, message, publishedAt. Inputs: - `limit`: integer; default 10 - How many proofs to return (1 to 50). ### add_proof Publish a new proof for the authenticated user's flight. Platform is inferred from the URL if omitted; proofType defaults to 'Post'. Inputs: - `url`: string; required - Public URL of the proof. - `message`: string - Short description of the proof. - `proofType`: string; one of Post, Demo, Landing Page, Video, Changelog, Offer, Blog, Other - Type of proof. - `publishedAt`: string - ISO-8601 publish timestamp. Defaults to now. ### leaderboard_rank Get the authenticated user's current leaderboard rank and total entries. Inputs: - none ### leaderboard_top Get the top N leaderboard entries. Inputs: - `limit`: integer; default 5 - How many entries to return (1 to 25). ### list_recent_likes List the most recent likes on the authenticated user's proofs (since the cutoff). Inputs: - `sinceHours`: integer; default 168 - Lookback window in hours (default 168 = 7 days). - `limit`: integer; default 20 - Max number of results. ### list_recent_comments List the most recent comments on the authenticated user's proofs (since the cutoff). Inputs: - `sinceHours`: integer; default 168 - Lookback window in hours (default 168 = 7 days). - `limit`: integer; default 20 - Max number of results. ## Raw JSON-RPC examples Advanced bearer-token endpoint: ```bash curl -X POST https://flyinpublic.com/api/mcp \ -H "Authorization: Bearer $FIP_TOKEN" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize"}' ``` List tools: ```bash curl -X POST https://flyinpublic.com/api/mcp \ -H "Authorization: Bearer $FIP_TOKEN" \ -H "Content-Type: application/json" \ -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' ``` Call add_proof: ```bash curl -X POST https://flyinpublic.com/api/mcp \ -H "Authorization: Bearer $FIP_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "jsonrpc":"2.0", "id":3, "method":"tools/call", "params":{ "name":"add_proof", "arguments":{ "url":"https://example.com/post", "message":"Shipped today!" } } }' ``` ## Troubleshooting - OAuth sign-in does not open: confirm the client supports remote HTTP MCP with OAuth. If not, use the advanced endpoint. - 401 Unauthorized on `https://flyinpublic.com/api/mcp`: token missing or revoked. Generate a new token. - 404 Not Found: confirm the URL is exactly `https://flyinpublic.com/mcp` or `https://flyinpublic.com/api/mcp` and the request is POST. - no_project tool error: visit the dashboard once to create your flight, then retry. - Proof calls succeed but do not appear: check `publishedAt` is not in the future and the URL is not already attached to another proof on your project.