# PitchStation > PitchStation turns any document into a secure, tracked share link that answers back: viewers can ask the document questions (AI Q&A grounded in its content), and the owner gets per-page analytics with an AI readout. It also generates documents (pitch decks, reports, IR letters, brand kits, small-business websites) from prompts, repos, or brochures. PitchStation exposes an MCP server so AI agents (Claude Code, Cline, Continue, any MCP host) can publish and manage tracked share links directly. ## Connect an AI agent (MCP) - Download the MCP server (single Node 18+ file, no dependencies): https://pitchstation.ai/downloads/pitchstation-mcp-server.js - Download the Claude Code skill (SKILL.md): https://pitchstation.ai/downloads/publish-to-pitchstation-SKILL.md - Authentication: a Personal Access Token (pst_...) created by the user at https://pitchstation.ai/tokens.html (shown once; sent as PITCHSTATION_TOKEN env var to the MCP server, or as "Authorization: Bearer " on direct API calls). - Register with an MCP host: command "node /absolute/path/to/pitchstation-mcp-server.js" with env PITCHSTATION_URL=https://pitchstation.ai and PITCHSTATION_TOKEN=. - Install the skill: save SKILL.md to ~/.claude/skills/publish-to-pitchstation/SKILL.md and restart the agent. - Human-readable setup guide with copy-paste commands: https://pitchstation.ai/tutorial.html ## MCP tools - pitchstation_publish: publish HTML/PDF/Office/Markdown content (or a multi-file bundle via files:[]) and get a /s/ tracked URL. Controls: access (link|account|recipient), viewers (account mode: emails/usernames — allowlist + auto-email with the password included when protected), expires_in, max_views, password, watermark, downloads, require_name, allow_forward. - pitchstation_list: list shares owned by the token's user. - pitchstation_replace: update an already-shared document in place (same URL and analytics) — use instead of re-publishing. - pitchstation_revoke: kill a share by slug. - pitchstation_space_create / pitchstation_space_add / pitchstation_space_list: SPACES are branded, tracked collections of existing shares behind one /space/ URL (deal room, client hub, portfolio). Use a space when the document set evolves; use a files:[] bundle for a frozen snapshot. Documents stay live inside a space (replace updates them everywhere); recipient-mode shares cannot join. - pitchstation_invoice_create: create an INVOICE (items in integer cents) and optionally SEND it in the same call — assigns the gap-free number, mints the tracked link, emails the client (password included for external clients; account-locked link when their email matches an account). Chase it at /invoices.html or the /m/invoices/ mobile app. Requires the create.invoice capability. - pitchstation_expense_create: create an EXPENSE PACK (receipts for a trip/project). Upload receipt photos + AI-itemize them in the web app (/expenses.html), producing one approvable tracked link (report + receipt scans as a bundle; approver taps Approve / Request changes on the page). Requires the create.expense capability. ## Direct HTTP API (same capabilities as MCP) - POST https://pitchstation.ai/api/share — create a share. Body: { htmlContent | pdfBase64 | files:[...], title, access, expires_in, password, max_views, ... }. Returns { share: { slug, url, ... } }. - GET https://pitchstation.ai/api/share — list your shares (includes full url per share). - PATCH https://pitchstation.ai/api/share/:slug — edit controls (password, expiry, max_views, require_name, ai_chat_enabled...). - POST https://pitchstation.ai/api/share/:slug/replace — replace content, keep URL + analytics. - DELETE https://pitchstation.ai/api/share/:slug — revoke. - POST https://pitchstation.ai/api/spaces — create a space { title, description?, access?, password?, expires_in?, require_name? }. GET lists yours; POST /api/spaces/:slug/items { shareSlug, section? } adds a document; GET /api/spaces/:slug/analytics returns the visitor × document matrix. - WEBSITE CREATION (requires the create.website capability — publisher/creator roles have it): - POST https://pitchstation.ai/api/website/extract — multipart: field "pdf" (one brochure PDF) or "file" (up to 6 brochure photos) → { content, images (logo/hero candidates), warnings }. AI drafts the content model. - POST https://pitchstation.ai/api/website/generate — { content: { meta: { company_name, ... }, hero, services, faq, contact, ... }, assets: { logo: , hero? } } → { deckId, previewUrl }. Renders a complete one-page site (llms.txt + sitemap + robots included). - GET https://pitchstation.ai/api/website/list — your sites with reviewStatus/round. POST /api/website/:deckId/update — save content + regenerate in place (same links). - POST https://pitchstation.ai/api/website/:deckId/submit-review — { approverEmail?, password?, expiresIn? } → customer review link (approve / request-changes on the page); approverEmail auto-emails the link with the password included. GET /api/website/:deckId/review — status, round, history, reviewUrl. - GET https://pitchstation.ai/api/website/:deckId/bundle — deployable .zip of the site. - INVOICES (requires the create.invoice capability): - POST https://pitchstation.ai/api/invoices — create a draft { client_name, client_email, client_company?, currency, due_date?, terms?, items:[{description, qty, unit_cents}], tax_label?, tax_cents?, discount_cents?, notes? }. Money is integer cents. - POST https://pitchstation.ai/api/invoices/:id/send — assigns the gap-free number, mints the tracked link, and emails the client (password included for external clients; account-scoped when their email matches an account). Returns { number, url, password?, emailedTo }. - POST https://pitchstation.ai/api/invoices/draft — { description } → AI-drafted fields/items (amounts never invented; nulls when unstated). - GET https://pitchstation.ai/api/invoices (+ aging), GET /:id (+ events), PATCH /:id (drafts free; sent = revision on the same link; paid/partial locked — use POST /:id/credit-note), POST /:id/payments { amount_cents?, method?, reference? } (blank amount = full balance; auto-paid + receipt email), POST /:id/void, POST /:id/remind, POST /:id/duplicate. - GET/POST https://pitchstation.ai/api/invoices/settings — numbering prefix + payment profiles (bank/FPS/PayNow/QR/link) rendered in the invoice's "How to pay" section. - POST https://pitchstation.ai/api/invoices/extract-contract (multipart pdf|file) — contract/SOW → client + items + milestone schedule. POST /api/invoices/chat { messages, draft } → { reply, draft } for conversational drafting. POST /api/invoices/:id/recurrence { day_of_month, auto_send } for monthly retainers (GET /recurrences, DELETE /recurrences/:rid). - Client signals (no auth; link-token gated): POST /s/:slug/invoice/paid-claim { reference? } and /s/:slug/invoice/question { note } — claims stay unconfirmed until the owner confirms (POST /api/invoices/:id/payments/:pid/confirm). - Mobile chase app (installable PWA): https://pitchstation.ai/m/invoices/ — overdue-first list, claim confirm, remind, mark-paid, push deep links. GET /api/invoices/attention-count powers its badge; GET /api/invoices/metrics (admin) returns the go/kill readout (loop-closure %, sent→viewed/viewed→paid medians, reminder conversion, mode mix). - All authenticated with "Authorization: Bearer ". ## Key pages - https://pitchstation.ai/ : product landing - https://pitchstation.ai/login.html : sign in / create account (Google sign-in provisions instantly) - https://pitchstation.ai/tokens.html : create Personal Access Tokens (requires sign-in) - https://pitchstation.ai/tutorial.html : full setup tutorial (bundles, MCP, skills) - https://pitchstation.ai/privacy.html and https://pitchstation.ai/terms.html : legal ## Notes for agents - Share URLs look like https://pitchstation.ai/s/?k=. The k token is part of the credential — always give the user the complete URL. - Re-publishing the same document creates a duplicate link and splits analytics; prefer pitchstation_replace. - Payload cap is 10 MB; strip or compress embedded base64 images if you hit HTTP 413.