Connector documentation

Last updated November 7, 2026

Linkit is a remote MCP server. It lets an AI app publish what a user worked out in a chat as a web page with its own short link, and manage that user's pages, photos, videos, PDFs and folders. Linkit is operated by Jamie Luu, a sole proprietor in Canada. Linkit runs no AI model of its own; the user's AI writes the page.

Setup

Endpointhttps://app.linkitapp.ai/mcp (MCP over Streamable HTTP)
Sign-inOAuth 2.1 with PKCE (S256) and dynamic client registration. No client ID or secret to set up.
Discoveryhttps://app.linkitapp.ai/.well-known/oauth-protected-resource
Scopesopenid, email
EnvironmentProduction. There is no separate test server; review accounts use production with made-up data.

The user signs in to their Linkit account, or makes one while connecting, and approves the app on Linkit's approval page. An app Linkit doesn't recognise shows a warning there first.

Permissions

Read and write types

ReadRetrieves information and changes nothing.
WriteCreates, changes or deletes something in the user's account or on their pages. Deleted pages and files stay in Recently deleted for 30 days.
Sensitive writeCan't be undone.

Write tools that make something public say so under Side effects. Each tool also carries the MCP annotations readOnlyHint, destructiveHint, openWorldHint and idempotentHint.

Status and retries

Errors

A tool that can't finish returns an MCP error result (isError: true) with {"code", "message"}. A failed sign-in answers HTTP 401. upload_assets saves the photos that worked and lists those that didn't.

CodeMeaningWhat to do
UNAUTHENTICATEDSign-in is missing or has expiredSign in again
INVALID_INPUTA value is missing or not allowedFix the input
NOT_FOUNDThe item doesn't exist in this accountCheck the ID
REVISION_CONFLICTThe item changed since it was readRead it again, then retry
EXPIREDThe link's time has run outPublish again
LIMIT_EXCEEDEDA plan or size limit was reachedRemove something, or upgrade
PRO_REQUIREDThe feature needs Linkit ProTell the user
PUBLISH_NOT_ALLOWEDThis connection isn't allowed to publishConnect from an AI app
INVALID_IMAGE, INVALID_ASSET, INVALID_DOCUMENTA file isn't usableUse a different file
VIDEO_FAILEDA video couldn't be convertedTry a different file
RATE_LIMITEDToo many requestsWait, then retry
TEMPORARILY_UNAVAILABLEA short outage (HTTP 503 with Retry-After)Retry after the wait
INTERNAL_ERRORSomething failed on Linkit's sideRetry, or contact support

Limits

FreePro
Live links at a time350
Storage2 GB10 GB
How long links last7 daysAs long as the user chooses, or forever
Own video length30 seconds60 seconds
PDFs on pagesNoYes

Tools

Some tools depend on the account or plan, so a connection can list fewer than these. get_authoring_guide says exactly what an account can use.

Pages

get_authoring_guide Read

Returns Linkit's design and publishing guide and exactly what this account can use: modern CSS, inline SVG, hosted fonts, interactions without JavaScript and, where enabled, interactive JavaScript with its pinned libraries (such as Three.js and GSAP). Published pages are checked against these rules.

Inputs
None
Side effects
None. Changes nothing.

publish_page Write

Publishes a new public page and returns its short link, page ID and expiry. Takes complete HTML and CSS, or HTML with JavaScript that runs in an isolated frame (interactive mode), with photos referenced as asset://ID from the user's library, a title, a one-sentence description and how long the link stays up. Each deliberate publication gets a new link; a repeated request with the same idempotencyKey returns the original result instead of publishing twice. Linkit makes the link preview itself (title, description and a screenshot of the top of the page). Pages that ask for passwords, codes or payment details, imitate another site's sign-in, or contain obfuscated code are refused.

Inputs
title (required), html (required), idempotencyKey (required), mode, lifetime, shareImage, description, folder
Side effects
Creates a public page. Anyone with the link can open it until it ends or is deleted. Search engines are asked not to list it.

update_page Write

Replaces the content of one of the user's live pages with new complete HTML. The link stays the same and everyone who has it sees the new version. Requires the page's current revision (expectedRevision), so an older draft cannot overwrite a newer edit. Omitted title, mode, share image and description keep their values; an automatic link preview is retaken from the new version. Returns a shareUrl that carries the version (?v=…), so messaging apps show the new preview. The same safety checks as publishing apply.

Inputs
pageId (required), expectedRevision (required), html (required), title, mode, shareImage, description
Side effects
Replaces what everyone with the link sees. The link stays the same.

set_page_lifetime Write

Changes how long one of the user's live links stays up, counted from now: 1h, 5h, 1d, 7d, a custom time such as 3d, or (where the account's plan includes it) longer or forever. The link and content don't change.

Inputs
pageId (required), lifetime (required)
Side effects
Changes when the link stops working. Shortening it can end the link sooner.

list_pages Read

Lists the user's active, expired or deleted pages with their links, expiry, revision and view counts (each person counted once a day; link-preview fetchers and bots are not counted).

Inputs
status, folder, cursor, limit
Side effects
None. Changes nothing.

get_page Read

Returns one of the user's live pages: its HTML, mode, photo IDs, revision, link preview setting (an automatic screenshot or a chosen photo, shareImage) and description.

Inputs
pageId (required)
Side effects
None. Changes nothing.

preview_page Read

Returns screenshots of one of the user's live pages as visitors see it: on a phone, top to bottom in screen-sized pieces, and the first screen on a computer. Reports when the page is wider than the phone.

Inputs
pageId, screens
Side effects
None. Changes nothing.

delete_page Write

Takes one of the user's pages down: its link stops working at once and the page moves to Recently deleted on the Linkit dashboard, where the user can preview or restore it, at the same link, for 30 days.

Inputs
pageId (required)
Side effects
The link stops working at once. The page waits in Recently deleted for 30 days, where the user can restore it.

Visitor data on pages

get_page_data Read

Returns what visitors have saved on one of the user's interactive pages through window.linkit.data (responses, counts, entries, progress…), with its current version. This is content written by the page's visitors.

Inputs
pageId (required)
Side effects
None. Changes nothing.

clear_page_data Sensitive write

Erases what visitors have saved on one of the user's interactive pages: one saved name, or everything when key is omitted. It can't be undone; the page itself doesn't change.

Inputs
pageId (required), key
Side effects
Erases what visitors saved on the page. It can't be undone.

Link folders and templates

save_template Write

Saves a copy of one of the user's live pages as a template, on plans that include templates, so new pages can be made in the same design. The template stays after the link ends. Saving under an existing template's name replaces that template.

Inputs
pageId (required), name, folder
Side effects
Stores a private copy of a page. An existing template with that name is replaced.

list_templates Read

Lists the user's templates by name, with the page each was saved from, when, and its template folder, and the user's template folders with how many templates each holds.

Inputs
None
Side effects
None. Changes nothing.

get_template Read

Returns one of the user's templates: its HTML and mode, as saved from an earlier page. It still contains that page's details, text and photo references.

Inputs
templateId (required)
Side effects
None. Changes nothing.

file_templates Write

Moves templates into one of the user's template folders by name (made when it doesn't exist yet), or out of any folder (folder null). Templates are in one folder at most; the templates themselves don't change.

Inputs
templateIds (required), folder (required)
Side effects
Changes how templates are organised in the account. Nothing public.

Photos, videos and PDFs

upload_asset Write

Copies one photo (PNG, JPEG or WebP, up to 10 MiB) into the user's Linkit library and returns its asset ID, which pages reference as asset://ID. Takes a ChatGPT file attachment (file_id and download_url, while its temporary URL is valid) or base64. The photo is in Linkit storage once the upload succeeds. The same photo uploaded again returns the same ID. New photos appear in the library's Unsorted view.

Inputs
base64, file
Side effects
Adds a file to the user's private library. Nothing public.

upload_assets Write

Copies up to 20 photo attachments into the user's Linkit library at once and returns each one's asset ID, in the order given. Photos that fail are listed separately, by index and with the reason, while the rest still upload. The same photo uploaded again returns the same ID. New photos appear in the library's Unsorted view.

Inputs
files (required)
Side effects
Adds files to the user's private library. Nothing public.

list_photos Read

Lists the photos, videos and PDFs in the user's Linkit library: Unsorted (items not yet filed into a folder by an AI, including ones the user added in the Linkit app, perhaps into a folder of their choice), one folder, or everything, optionally filtered by caption or folder name. Returns each item's asset ID, kind (photo, video or document), size, date, folder, caption, whether it is sorted and how many live pages use it, with small preview images. Pages through results with nextCursor.

Inputs
view, folderId, q, limit, cursor, previews
Side effects
None. Changes nothing.

delete_photos Write

Moves photos or videos from the user's library to Recently deleted, where the user can restore them for 30 days or delete them for good from the Linkit dashboard. Photos used on a live page are not deleted; they are reported back with the reason.

Inputs
assetIds (required)
Side effects
Moves files to Recently deleted, restorable for 30 days. A file used on a live page isn't deleted; it's reported back with the reason.

upload_media Write

Copies a video attachment (MP4 or MOV) into the user's library and converts it to a web MP4 (up to 1080p and 60 seconds) with a poster frame, removing location data. Returns its asset://ID and status: processing, ready or failed. A page can show the video while it is still processing; it plays once ready, usually within a couple of minutes.

Inputs
file (required)
Side effects
Adds a video to the user's private library and starts converting it. Nothing public.

get_media Read

Returns an uploaded video's processing status (processing, ready or failed), size and length.

Inputs
mediaId (required)
Side effects
None. Changes nothing.

embed_video_from_url Write

Looks up a YouTube or Vimeo video by its link, with YouTube's and Vimeo's own oEmbed services (https://www.youtube.com/oembed, https://developer.vimeo.com/api/oembed), and checks that it exists and may be shown on other sites. Imports its thumbnail into the user's library (posterAssetId) and returns the player HTML, an iframe for static pages. Pages allow no other video iframes.

Inputs
url (required)
Side effects
Contacts YouTube or Vimeo to look up the video. Nothing public until a page uses it.

import_image_from_url Write

Downloads a photo from a direct HTTPS link to an image file (JPEG, PNG or WebP) with a plain request, checks that it is a real image, and saves a clean copy in the user's library. Returns its asset ID. No outside API is used.

Inputs
url (required)
Side effects
Fetches the image from the given address and saves it to the user's private library.

upload_document Write

Copies a PDF attachment (up to 20 MB and 30 pages) into the user's library. Linkit checks it is a real PDF, turns each page into a photo with its own asset://ID, and keeps a cleaned copy with scripts, attachments and form actions removed. Returns the PDF's asset ID and its pages.

Inputs
file, allowDownload
Side effects
Adds a PDF to the user's private library. Nothing public until a page uses it.

get_document Read

Returns one of the user's PDFs: its file name, page count, whether downloads are allowed, and each page's asset://ID.

Inputs
documentId
Side effects
None. Changes nothing.

set_document_download Write

Turns downloads of one of the user's PDFs on or off. When off, links to the PDF stop downloading at once on every page.

Inputs
documentId, allowDownload
Side effects
Changes whether visitors can download the PDF from pages that link to it.

Saved items (folders)

save_item Write

Creates or updates a folder (a saved item) in the user's library: a short name, optional typed details (fields with a stable key, label, type and value; dates as YYYY-MM-DD), its photos with optional captions, and its parent folder (up to 5 levels; parentId null is the top level). Each photo lives in one folder, so listed photos move here from any other folder. Updates need the folder's current revision (expectedRevision); omitted photos or parent stay as they are. A repeated idempotencyKey returns the earlier result. Published pages don't change.

Inputs
itemId, expectedRevision, idempotencyKey (required), title (required), category, fields (required), parentId, photos
Side effects
Creates or changes a private folder in the library. Nothing public.

list_items Read

Lists the user's folders (saved items), newest first, with photo and subfolder counts, parent and times: the top level (parentId "root") or the folders inside one folder.

Inputs
limit, cursor, category, parentId
Side effects
None. Changes nothing.

get_item Read

Returns one folder: its name, parent, typed details, ordered photos with captions and asset:// references, revision and the current server time.

Inputs
itemId (required)
Side effects
None. Changes nothing.

move_photos Write

Files photos into a folder, or out of any folder with folderId null, with an optional short caption for each (captions by asset ID). Filed photos leave Unsorted and go to the front of the folder; photos already in it stay and take any new captions; other captions are kept. Published pages don't change.

Inputs
assetIds (required), folderId (required), captions
Side effects
Files photos into a folder. New captions replace old ones. Nothing public.

move_folder Write

Moves a folder, with everything in it, into another folder or to the top level (parentId null). Folders nest up to 5 levels. Published pages don't change.

Inputs
itemId (required), parentId (required)
Side effects
Moves a private folder. Nothing public.

delete_item Write

Deletes a folder, given its latest revision (expectedRevision). No photos are deleted: its photos move up to its parent folder (or to Unsorted at the top level) and the folders inside it move up a level. Published pages are unaffected.

Inputs
itemId (required), expectedRevision (required)
Side effects
Deletes the folder. Its photos move up to the parent folder or to Unsorted.

Support and security

Support and security reports: support@linkitapp.ai. See also the privacy policy, terms and security.txt.