Let ChatGPT or Claude publish pages for you
Connect once and your AI can publish an HTML file as a shareable page, update it later with the same link, add a poll or a form, and read the comments that come back. No keys to copy. It signs in with your FileShare Pro account, and you can disconnect it any time.
- 1Open Settings → Connectors. If there is no Create button, turn on Developer mode under Advanced.
- 2Choose Create, name it FileShare Pro, and use
https://fileproapp.com/mcpas the server URL. Leave authentication on OAuth. - 3Save, sign in when it sends you to FileShare Pro, press Allow. Enable the connector in a chat and ask it to publish something.
- 1Open Settings → Connectors → Add custom connector.
- 2Name it FileShare Pro and paste
https://fileproapp.com/mcp. - 3Press Add, then Connect, sign in, press Allow. Done.
- 1Run
claude mcp add --transport http filesharepro https://fileproapp.com/mcp - 2Type /mcp, pick filesharepro, sign in in the browser, press Allow.
- 3Ask it to publish a file. It hands you the link.
- 1In the tool's MCP settings add a remote or HTTP server.
- 2Use
https://fileproapp.com/mcp. It will open a sign-in. - 3If the tool cannot sign in, create an API token in the app (Connect → Advanced) and send it as a Bearer token.
Forms and polls with no code
Any page you publish can collect responses. Give a form one attribute and the page does the rest; add an element with data-fsp-results to show a poll's tally. Responses are visible only to you and the people on the file, in the document view and as CSV. The world can only submit, one bounded row at a time; a poll exposes counts for the one field you declared, never rows.
<form data-fsp-form="lunch" data-fsp-poll="choice" data-fsp-thanks="Thanks for voting!">
<label><input type="radio" name="choice" value="Pizza"> Pizza</label>
<label><input type="radio" name="choice" value="Tacos"> Tacos</label>
<button>Vote</button>
</form>
<div data-fsp-results="choice" data-fsp-form="lunch"></div>The REST API
Everything the app can do, a script can do. The CLI and both MCP servers are thin wrappers over exactly these endpoints.
Authentication
Create a token in the app under Connect → Advanced and send it as a bearer credential. Tokens start with fsp_ and carry your full account access. The only thing a token cannot do is manage tokens. Connected apps get the same kind of token through OAuth 2.1 (discovery at /.well-known/oauth-authorization-server, dynamic registration, PKCE).
curl https://fileproapp.com/api/me \
-H "Authorization: Bearer fsp_your_token_here"Uploading a file
Three steps: declare the file, PUT the bytes to the presigned URL, confirm. A file that is never confirmed is never served. Optional workspace_id and folder_id put it somewhere on the way in.
# 1. Declare — returns file_id, slug and a presigned upload_url
curl -X POST https://fileproapp.com/api/files \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"file_name": "page.html", "size_bytes": 4096, "content_type": "text/html"}'
# 2. Upload the bytes (no auth header — the URL itself is the credential)
curl -X PUT "$UPLOAD_URL" -H "Content-Type: text/html" --data-binary @page.html
# 3. Confirm — the share link goes live
curl -X POST https://fileproapp.com/api/files/$FILE_ID/complete -H "Authorization: Bearer $TOKEN"Files
/api/filesYour files, workspace files, and files shared with you/api/files/:idOne file, with your role on it/api/filesBegin an upload/api/files/:id/completeFinalize an upload or a replace/api/files/:idTitle, visibility, expiry, password, comments, forms, workspace, folder, tags/api/files/:id/replaceNew content, same link; the old content becomes a version/api/files/:id/statsView timeline for the plan's window/api/files/:id/membersPeople on the file/api/files/:id/membersAdd someone by email, as commenter or editor/api/files/:id/access-requestsWho is waiting to be let in/api/access-requests/:id/approveLet them in (body: role); /decline says no/api/files/:id/submissionsForm responses (add ?format=csv)/api/files/:idDelete; the link 404s immediatelyPATCH accepts visibility (public · expiring · disabled), expires_at, password (empty string removes it), comments_enabled, comments_visibility (approval · open), suggestions_enabled, forms_enabled.
disabled turns the public link off and leaves the file open to the owner and to everyone added under /members. A password is a way in for people who were never added; those who were get in without it. For either, the file list returns a short-lived k — append it to the raw URL to load the page bytes.
The document
/api/doc/:slugEverything the document view shows: comments, suggestions, versions, forks/api/doc/:id/publishApply block changes (or file a suggestion, by role)/api/doc/:id/versions/:n/restoreUndo to a version/api/doc/:id/copyDuplicate privately, or fork/api/doc/:id/pullTake a fork's page as your next version/api/doc/:id/unlockTrade a link password for an access key (k)/api/doc/:id/request-accessAsk the owner to be let in (sign-in required)Comments
/api/comments?file_id=…Thread for a file/api/commentsReply as yourself, or as a guest with a name/api/comments/:id/approvePublish a held guest comment/api/comments/:idRemove a comment on your file/api/reviewEverything held across your filesForms
/api/forms/:fileId/submitPublic, any origin: one row, up to 10 fields, 2 KB/api/forms/:fileId/counts?form=&field=Public tally for a declared poll fieldMedia assets and mini-sites
/api/assetsYour assets, each with a CDN URL/api/assetsBegin an upload (same declare → PUT → complete flow)/api/sitesYour mini-sites/api/sitesCreate one with a starter page/api/sites/:idSave the draft: pages plus shared nav, header and footer/api/sites/:id/publishCompose and publish to a live URLMCP tools
The hosted server at https://fileproapp.com/mcp exposes: upload_file, list_files, get_file, replace_file, delete_file, set_link, move_file, list_workspaces, file_stats, list_comments, review_queue, approve_comment, list_submissions, poll_results, account_info. Content travels as text, up to 10 MB. The fsp CLI runs the same tools locally over stdio (fsp mcp).
Conventions
- Errors are JSON:
{"error": "what went wrong"}with a meaningful status. A 403 with"upgrade": truemeans the plan, not the request. - Writes are rate-limited per account. Back off on 429; the window is about a minute.
- IDs are UUIDs. Share links are
fileproapp.com/v/<slug>; raw content is onr.fileproapp.com. The API answers on fileproapp.com and file-share-pro.com. - The API and connected apps are open to every beta account; after beta they are Basic and up.