Connecting AI Assistants (MCP)
Connect Claude and other MCP clients to Shorty over OAuth 2.1 to summarize, transcribe, and search your content.
Connect Shorty to Claude, ChatGPT, or any other AI assistant — it can then search your summaries and create new ones for you, right inside the chat. Shorty runs a remote MCP (Model Context Protocol) server, so assistants like Claude Code and Claude.ai custom connectors can use Shorty on your behalf. You sign in to Shorty once and approve exactly what the assistant may do, and you can cut it off again at any time.
Endpoint
https://aishorty.com/api/mcpThe server speaks streamable HTTP and authenticates with OAuth 2.1 and PKCE, or with a Shorty API key (shk_live_…) sent as a bearer token. Clients register automatically (unauthenticated Dynamic Client Registration), you sign in with your normal Shorty account, and a consent screen shows the permission groups the assistant is requesting before anything is granted. All groups are ticked by default; untick any you do not want the assistant to have. A key carries the permission groups you chose when you created it, and keys are managed in Settings → API keys. Session cookies are rejected on this endpoint.
Marketplaces whose tenant admins cannot register a client themselves (Microsoft 365 Copilot, Gemini Enterprise) get a static confidential client instead: the operator lists it in the OAUTH_STATIC_CLIENTS environment variable (client id, secret, name, exact redirect URIs, token-endpoint auth method) and every deployment upserts it into the same client table at boot. Such a client authenticates with its secret, may skip PKCE unless it asks for offline_access, never expires, and stays registered if it is later removed from the variable.
Connect from any MCP client
The Claude button opens the directory listing; the others install directly or jump to the instructions.
Shorty's MCP server is a hosted Streamable HTTP endpoint with OAuth 2.1 sign-in. There is nothing to install or run: point the client at the endpoint above and sign in to Shorty when the browser opens. Every client that supports remote MCP servers with OAuth works; the ones below are the common ones.
Claude (claude.ai, Claude Desktop, Claude Code)
- claude.ai / Claude Desktop: open Shorty in the Claude connector directory and click Connect, then sign in. Manual alternative: Settings → Connectors → Add custom connector, paste the URL, then sign in.
- Claude Code:
claude mcp add --transport http shorty https://aishorty.com/api/mcpthen/mcpto sign in.
ChatGPT and Codex
- ChatGPT: open Shorty in ChatGPT and click Connect, then sign in. Manual alternative: Settings → Apps & Connectors → Create (developer mode), name it Shorty, paste the URL, authentication OAuth.
- Codex CLI: add to
~/.codex/config.toml:
[mcp_servers.shorty]
url = "https://aishorty.com/api/mcp"Cursor
One click: Add to Cursor. Or in .cursor/mcp.json:
{ "mcpServers": { "shorty": { "url": "https://aishorty.com/api/mcp" } } }VS Code and GitHub Copilot
One click: Add to VS Code. Or run MCP: Add Server → HTTP and paste the URL, which writes to .vscode/mcp.json:
{ "servers": { "shorty": { "type": "http", "url": "https://aishorty.com/api/mcp" } } }Google Antigravity
Install the plugin from the repository (or from the Antigravity Marketplace once listed):
agy plugin install https://github.com/DevinoSolutions/mcp-servers/antigravity-plugins/shortyOr add the server by hand in ~/.gemini/config/mcp_config.json (Antigravity requires the serverUrl key):
{ "mcpServers": { "shorty": { "serverUrl": "https://aishorty.com/api/mcp" } } }Gemini
- Gemini app: Settings → Connected apps → Custom apps → Add a custom app, paste the URL, then mention
@Shortyin a chat. (Custom apps are currently limited to personal Google accounts in the US.) - Gemini CLI:
gemini extensions install https://github.com/DevinoSolutions/mcp-serversthen/mcp auth shorty, or add{ "mcpServers": { "shorty": { "httpUrl": "https://aishorty.com/api/mcp" } } }to~/.gemini/settings.json.
Kiro
One click: Add to Kiro. Or in .kiro/settings/mcp.json:
{ "mcpServers": { "shorty": { "url": "https://aishorty.com/api/mcp" } } }Perplexity, Mistral Le Chat, Grok
- Perplexity (Pro, Max, Enterprise): Settings → Connectors → Custom connector, paste the URL, authentication OAuth.
- Mistral Le Chat (all plans): Intelligence → Connectors → Add Connector → Custom MCP Connector, paste the URL.
- Grok: grok.com → Connectors → New connector → Custom, paste the URL.
Other clients
- Replit: Add to Replit, or Integrations → Add MCP server.
- Devin, Windsurf, Zed, JetBrains Junie, Cline, OpenCode: add a remote (HTTP) MCP server with the URL above; each prompts for the OAuth sign-in on first use. Cline can also install it from the Cline marketplace entry using its
llms-install.md.
Tokens are scoped to what you approve on the consent screen; a tool you did not grant is never shown to the assistant. Revoke access at any time — see Managing connected apps below.
Permission groups and scopes
Scopes are grouped into permission groups (tiers). The consent screen and the API-key form show one switch per group, all on by default, with the individual scopes listed under each. A group you leave off is invisible to the assistant, and a refused call names the group to ask for through request_scopes, which returns a one-time link to approve it.
| Scope | Group | What it grants |
|---|---|---|
articles:read | read | Read your saved summaries and articles |
transcriptions:read | read | Read your transcriptions and their results |
usage:read | read | Read your plan, quotas, and usage |
articles:write | write | Create new summaries from YouTube, web pages, or files |
transcriptions:write | write | Start new transcriptions and subtitle jobs |
jobs:read | read | Read the status of jobs you have started |
docs:read | read | Search and read Shorty's developer documentation |
webhooks:read | read | See the webhook endpoints that receive your job events |
webhooks:write | write | Add and remove webhook endpoints that receive your job events |
profile:read | read | Read your profile, preferences and sign-in methods |
profile:write | account | Update your profile, preferences, notification settings and sign-in methods |
billing:read | read | See your plan, renewal date and available plans |
billing:write | billing | Start a purchase, cancel or refund your subscription |
account:export | account | Export all of your Shorty data |
account:delete | account | Delete this Shorty account |
support:read | read | Read the support tickets you sent from an agent |
support:write | support | Send a message to Shorty support |
connections:read | read | See which apps are connected to your account |
connections:write | connections | Disconnect apps and get connection links |
keys:read | read | List your API keys |
keys:write | keys | Create, roll and revoke API keys |
webhooks:delete | destructive | Delete webhook endpoints |
webhooks:secrets | keys | Reveal and rotate webhook signing secrets |
converter:read | read | Read your file-converter jobs |
converter:write | write | Cancel file-converter jobs |
converter:delete | destructive | Delete file-converter jobs and their output |
uploads:write | write | Get links to upload files for processing |
articles:delete | destructive | Delete your saved summaries |
transcriptions:delete | destructive | Delete your transcriptions |
jobs:write | write | Cancel running jobs |
referral:read | read | Read your referral summary |
Shorty has no teams or workspaces, so there is no team group. Every operation acts on your own account.
Available tools
Shorty's MCP server lists every operation as its own tool on the directory surface and through Code Mode elsewhere. Code Mode lists two tools, search_tools and execute_typescript, instead of one tool per operation. Each operation runs the same scope, consent, quota and audit checks as a direct call, so Code Mode never lets an assistant do more than you approved. Operations are scope-filtered: an operation only appears if you granted its scope. list_granted_scopes and request_scopes appear for every connection.
What the assistant can do
| Operation | Scope | What it does |
|---|---|---|
search_articles | articles:read | Search the current user's Shorty library by free-text query (title, description, URL) |
list_recent_articles | articles:read | List the current user's most recently summarized articles |
get_article | articles:read | Fetch a single article (summary, highlights, body) so you can answer questions about it |
list_transcriptions | transcriptions:read | List the current user's audio/video transcriptions (newest first) with status and progress |
get_transcription | transcriptions:read | Fetch a single transcription (status, language, full transcript text) by its UUID so you can answer questions about it |
get_usage_quota | usage:read | Read the current user's Shorty plan (Free / Premium / Pro), tier limits (upload sizes, realtime minutes, conversion caps), and current cloud-conversion usage against the daily quota |
get_job_status | jobs:read | Check the status of a job you started (summary, transcription, or subtitles) by its jobId |
search_docs | docs:read | Search Shorty's developer documentation (API reference, error codes, webhooks, MCP guide) by free-text query |
create_youtube_summary | articles:write | Start an AI summary job for a YouTube URL |
create_content_summary | articles:write | Start an AI summary job for a webpage URL, pasted text, or a file already uploaded to Shorty |
create_transcription | transcriptions:write | Transcribe a publicly accessible audio/video URL via the GPU service |
create_subtitles | transcriptions:write | Generate subtitles for a public video/audio URL |
billing_status | billing:read | The user's current Shorty plan, trial state, renewal date, whether it renews, and where it is billed (web, App Store or Google Play) |
list_plans | billing:read | The plans a user can choose: Shorty Premium and Shorty Pro, monthly and yearly, with list prices in USD |
upgrade_plan | billing:write | Ask the user — never choose for them |
manage_subscription | billing:write | Manage the user's subscription |
get_profile | profile:read | The signed-in user's profile and preferences: name, username, email, avatar, interface settings and whether tips and prompts are shown |
update_profile | profile:write | Change first name, last name, username or avatar |
update_settings | profile:write | Turn interface preferences on or off by id (see get_profile.settings), for example auto-paste of copied URLs |
update_notification_prefs | profile:write | Notification and prompt preferences: whether Shorty shows tips and prompts, and removing a device push token so that device stops receiving job-finished notifications |
request_password_change | profile:write | Returns a single-use link to the password page where the user sets or changes their password themselves |
export_data | account:export | Export the user's Shorty data (summaries, transcriptions, profile) |
delete_account | account:delete | Delete this Shorty account: signs out every session, revokes API keys, OAuth grants and webhooks, and removes the profile |
list_sign_in_methods | profile:read | The ways the user can sign in to this Shorty account (Google, Apple, email and password), whether each one can be disconnected and why not, and the ones not connected yet |
disconnect_sign_in_method | profile:write | Remove one way of signing in to this Shorty account; the last way in is refused |
create_support_ticket | support:write | Send a message to Shorty support on behalf of the user |
list_support_tickets | support:read | Support messages the user sent through this connection, newest first |
list_connections | connections:read | AI apps connected to this Shorty account (Claude, ChatGPT, Cursor, …): provider is the app's client id, with the permissions it was granted |
get_connect_links | connections:write | Single-use links to connect Shorty to an AI app: Claude and ChatGPT listings and a setup guide per coding agent, plus the MCP server URL for any other client |
reverify | connections:write | Check whether a connected app (provider = its client id) still holds a live grant and which permissions it has |
disconnect | connections:write | Disconnect an app (provider = its client id): deletes its grant and every token it holds, immediately |
list_api_keys | keys:read | The user's API keys: name, first characters, last use, expiry and the permissions each holds |
create_api_key | keys:write | Ask the user — never choose for them |
rotate_api_key | keys:write | Replace a key with a new one that has the same name, permissions and expiry |
revoke_api_key | keys:write | Permanently delete an API key; anything using it stops working immediately |
list_granted_scopes | none | The permissions this connection holds right now: scopes, the tiers they belong to, and how it authenticated (oauth or api key) |
request_scopes | none | Ask the user — never choose for them |
delete_article | articles:delete | Permanently delete one of the user's saved summaries (and its summary text) |
delete_transcription | transcriptions:delete | Permanently delete one of the user's transcriptions and its text |
edit_summary | articles:write | Replace a summary's edited text with a rich-text document, or pass doc null to restore the AI-written version |
cancel_subtitle_job | jobs:write | Cancel a subtitle job that has not finished |
get_subtitle_download | jobs:read | A single-use download link for a finished subtitle job: kind srt, vtt, ass, or burned (the captioned MP4, where the plan includes it) |
get_article_source_download | articles:read | A single-use link to the source file or original transcript behind one of the user's summaries |
get_transcription_media_download | transcriptions:read | A single-use link to the audio or video file behind one of the user's transcriptions |
get_upload_link | uploads:write | Returns a single-use link to the page where the user adds a local file to summarize (a document), transcribe, record live or convert it |
list_webhook_endpoints | webhooks:read | The user's outbound webhook endpoints with their URL, event subscriptions and status |
create_webhook_endpoint | webhooks:write | Create a webhook endpoint |
update_webhook_endpoint | webhooks:write | Change a webhook endpoint (URL, description, event types, enabled) |
delete_webhook_endpoint | webhooks:delete | Delete a webhook endpoint and its delivery history |
test_webhook_endpoint | webhooks:write | Send a test event to a webhook endpoint |
verify_webhook_endpoint | webhooks:write | Check that a webhook endpoint is reachable and answers correctly |
rotate_webhook_secret | webhooks:secrets | Rotate a webhook signing secret; the old secret keeps verifying for 24 hours |
reveal_webhook_secret | webhooks:secrets | Return the current signing secret of a webhook endpoint |
list_webhook_deliveries | webhooks:read | Recent deliveries for a webhook endpoint with status and attempts |
resend_webhook_delivery | webhooks:write | Resend one delivery to its endpoint |
replay_failed_webhook_deliveries | webhooks:write | Replay failed deliveries for an endpoint since a point in time, within the replay window |
list_converter_jobs | converter:read | The user's file-converter jobs (newest first) with status and progress, and the plan's queue limit |
get_converter_job | converter:read | Status, progress and output name of one converter job |
cancel_converter_job | converter:write | Cancel a running converter job |
delete_converter_jobs | converter:delete | Delete converter jobs and their converted files |
get_converter_download | converter:read | A single-use download link for a finished converter job |
get_referral_summary | referral:read | The user's Refer & Earn state: their personal referral link, click, signup and sale counters, and pending, cleared and paid earnings |
Confirmations, choices and links
- Confirmation. Destructive operations (deleting a summary, transcription, account, API key, webhook or converter job, cancelling or refunding a subscription, disconnecting an app, removing a sign-in method) answer
CONFIRMATION_REQUIREDwith aconfirmTokenthe first time. The assistant tells you what will happen and repeats the call with the token. A token is single-use, expires after 10 minutes and is bound to your account, the connection, the tool and the arguments. - Choices. Plan, billing period, API-key permission groups, which item to delete and similar decisions are asked of you, never guessed.
- Links. Upgrading, managing a subscription, downloads, uploads and reconnecting with new permissions return a single-use link that opens signed in as you. Links expire after 15 minutes.
- Refusals. Every refusal carries a
nextobject naming the tool to call, for examplerequest_scopes. - Audit. Every tool call is recorded with the tool, permission group, connection and a hash of the arguments, never the arguments themselves. Deleting your account removes the link between those records and you.
Write operations that start jobs are quota-gated compute jobs (they respect the same plan quotas as the web app and API) and support an optional idempotency key so retries never create duplicate jobs.
Managing connected apps
Open Settings → Connected Apps to review every assistant you have connected, and revoke any of them to cut off its access instantly. Revoking removes both the consent and the app's issued tokens, so the app must ask for your approval again to reconnect.
Connecting an MCP client is subject to Shorty's privacy policy and terms of service.
Free-tier agent usage is metered: 10 summaries per day and 3 transcriptions per month across API keys and MCP. Paid plans are not capped on these counts. Using the Shorty website directly is never limited by these agent quotas.
Delete a webhook endpoint DELETE
Deletes one of the authenticated account’s webhook endpoints and any deliveries still queued for it. A non-existent or foreign id returns 404.
For AI agents
How AI assistants and agents connect to Shorty: the remote MCP server, machine-readable llms.txt / llms-full.txt, Markdown twins of every docs page, the OpenAPI spec, and agent interaction guidelines.