ShortyShorty

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/mcp

The 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

Add to ClaudeAdd to CursorAdd to VS CodeAdd to KiroAdd to ReplitAdd to AntigravityAdd to GeminiAdd to CodexAdd to PerplexityAdd to MistralAdd to Grok

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/mcp then /mcp to 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/shorty

Or 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 @Shorty in a chat. (Custom apps are currently limited to personal Google accounts in the US.)
  • Gemini CLI: gemini extensions install https://github.com/DevinoSolutions/mcp-servers then /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.

ScopeGroupWhat it grants
articles:readreadRead your saved summaries and articles
transcriptions:readreadRead your transcriptions and their results
usage:readreadRead your plan, quotas, and usage
articles:writewriteCreate new summaries from YouTube, web pages, or files
transcriptions:writewriteStart new transcriptions and subtitle jobs
jobs:readreadRead the status of jobs you have started
docs:readreadSearch and read Shorty's developer documentation
webhooks:readreadSee the webhook endpoints that receive your job events
webhooks:writewriteAdd and remove webhook endpoints that receive your job events
profile:readreadRead your profile, preferences and sign-in methods
profile:writeaccountUpdate your profile, preferences, notification settings and sign-in methods
billing:readreadSee your plan, renewal date and available plans
billing:writebillingStart a purchase, cancel or refund your subscription
account:exportaccountExport all of your Shorty data
account:deleteaccountDelete this Shorty account
support:readreadRead the support tickets you sent from an agent
support:writesupportSend a message to Shorty support
connections:readreadSee which apps are connected to your account
connections:writeconnectionsDisconnect apps and get connection links
keys:readreadList your API keys
keys:writekeysCreate, roll and revoke API keys
webhooks:deletedestructiveDelete webhook endpoints
webhooks:secretskeysReveal and rotate webhook signing secrets
converter:readreadRead your file-converter jobs
converter:writewriteCancel file-converter jobs
converter:deletedestructiveDelete file-converter jobs and their output
uploads:writewriteGet links to upload files for processing
articles:deletedestructiveDelete your saved summaries
transcriptions:deletedestructiveDelete your transcriptions
jobs:writewriteCancel running jobs
referral:readreadRead 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

OperationScopeWhat it does
search_articlesarticles:readSearch the current user's Shorty library by free-text query (title, description, URL)
list_recent_articlesarticles:readList the current user's most recently summarized articles
get_articlearticles:readFetch a single article (summary, highlights, body) so you can answer questions about it
list_transcriptionstranscriptions:readList the current user's audio/video transcriptions (newest first) with status and progress
get_transcriptiontranscriptions:readFetch a single transcription (status, language, full transcript text) by its UUID so you can answer questions about it
get_usage_quotausage:readRead 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_statusjobs:readCheck the status of a job you started (summary, transcription, or subtitles) by its jobId
search_docsdocs:readSearch Shorty's developer documentation (API reference, error codes, webhooks, MCP guide) by free-text query
create_youtube_summaryarticles:writeStart an AI summary job for a YouTube URL
create_content_summaryarticles:writeStart an AI summary job for a webpage URL, pasted text, or a file already uploaded to Shorty
create_transcriptiontranscriptions:writeTranscribe a publicly accessible audio/video URL via the GPU service
create_subtitlestranscriptions:writeGenerate subtitles for a public video/audio URL
billing_statusbilling:readThe user's current Shorty plan, trial state, renewal date, whether it renews, and where it is billed (web, App Store or Google Play)
list_plansbilling:readThe plans a user can choose: Shorty Premium and Shorty Pro, monthly and yearly, with list prices in USD
upgrade_planbilling:writeAsk the user — never choose for them
manage_subscriptionbilling:writeManage the user's subscription
get_profileprofile:readThe signed-in user's profile and preferences: name, username, email, avatar, interface settings and whether tips and prompts are shown
update_profileprofile:writeChange first name, last name, username or avatar
update_settingsprofile:writeTurn interface preferences on or off by id (see get_profile.settings), for example auto-paste of copied URLs
update_notification_prefsprofile:writeNotification 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_changeprofile:writeReturns a single-use link to the password page where the user sets or changes their password themselves
export_dataaccount:exportExport the user's Shorty data (summaries, transcriptions, profile)
delete_accountaccount:deleteDelete this Shorty account: signs out every session, revokes API keys, OAuth grants and webhooks, and removes the profile
list_sign_in_methodsprofile:readThe 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_methodprofile:writeRemove one way of signing in to this Shorty account; the last way in is refused
create_support_ticketsupport:writeSend a message to Shorty support on behalf of the user
list_support_ticketssupport:readSupport messages the user sent through this connection, newest first
list_connectionsconnections:readAI apps connected to this Shorty account (Claude, ChatGPT, Cursor, …): provider is the app's client id, with the permissions it was granted
get_connect_linksconnections:writeSingle-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
reverifyconnections:writeCheck whether a connected app (provider = its client id) still holds a live grant and which permissions it has
disconnectconnections:writeDisconnect an app (provider = its client id): deletes its grant and every token it holds, immediately
list_api_keyskeys:readThe user's API keys: name, first characters, last use, expiry and the permissions each holds
create_api_keykeys:writeAsk the user — never choose for them
rotate_api_keykeys:writeReplace a key with a new one that has the same name, permissions and expiry
revoke_api_keykeys:writePermanently delete an API key; anything using it stops working immediately
list_granted_scopesnoneThe permissions this connection holds right now: scopes, the tiers they belong to, and how it authenticated (oauth or api key)
request_scopesnoneAsk the user — never choose for them
delete_articlearticles:deletePermanently delete one of the user's saved summaries (and its summary text)
delete_transcriptiontranscriptions:deletePermanently delete one of the user's transcriptions and its text
edit_summaryarticles:writeReplace a summary's edited text with a rich-text document, or pass doc null to restore the AI-written version
cancel_subtitle_jobjobs:writeCancel a subtitle job that has not finished
get_subtitle_downloadjobs:readA 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_downloadarticles:readA single-use link to the source file or original transcript behind one of the user's summaries
get_transcription_media_downloadtranscriptions:readA single-use link to the audio or video file behind one of the user's transcriptions
get_upload_linkuploads:writeReturns 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_endpointswebhooks:readThe user's outbound webhook endpoints with their URL, event subscriptions and status
create_webhook_endpointwebhooks:writeCreate a webhook endpoint
update_webhook_endpointwebhooks:writeChange a webhook endpoint (URL, description, event types, enabled)
delete_webhook_endpointwebhooks:deleteDelete a webhook endpoint and its delivery history
test_webhook_endpointwebhooks:writeSend a test event to a webhook endpoint
verify_webhook_endpointwebhooks:writeCheck that a webhook endpoint is reachable and answers correctly
rotate_webhook_secretwebhooks:secretsRotate a webhook signing secret; the old secret keeps verifying for 24 hours
reveal_webhook_secretwebhooks:secretsReturn the current signing secret of a webhook endpoint
list_webhook_deliverieswebhooks:readRecent deliveries for a webhook endpoint with status and attempts
resend_webhook_deliverywebhooks:writeResend one delivery to its endpoint
replay_failed_webhook_deliverieswebhooks:writeReplay failed deliveries for an endpoint since a point in time, within the replay window
list_converter_jobsconverter:readThe user's file-converter jobs (newest first) with status and progress, and the plan's queue limit
get_converter_jobconverter:readStatus, progress and output name of one converter job
cancel_converter_jobconverter:writeCancel a running converter job
delete_converter_jobsconverter:deleteDelete converter jobs and their converted files
get_converter_downloadconverter:readA single-use download link for a finished converter job
get_referral_summaryreferral:readThe user's Refer & Earn state: their personal referral link, click, signup and sale counters, and pending, cleared and paid earnings
  • 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_REQUIRED with a confirmToken the 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 next object naming the tool to call, for example request_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.

On this page