{"name":"shortify","title":"Shortify","description":"Turn any article, blog post or PDF into a short, readable card story with a cover image, a one-line description and a key takeaway, and search a corpus of them by keyword, meaning or tag.","version":"1.0.0","documentation":"https://shortify.news/mcp","remotes":[{"type":"streamable-http","url":"https://shortify.news/api/public/mcp"}],"protocolVersion":"2025-06-18","protocolVersions":["2025-06-18","2025-03-26","2024-11-05"],"capabilities":{"tools":{"listChanged":false}},"authentication":{"type":"bearer","required":false,"description":"Reading and searching need no credential. Building a new story needs a Shortify access token sent as `Authorization: Bearer <token>`."},"tools":[{"name":"shortify_link","title":"Shortify a link","description":"Turn an article, blog post or PDF URL into a Shortify card story, and return its headline, one-line description, key takeaway, cover image and permanent link, with the whole deck as markdown. A story that already exists is returned as it stands rather than rebuilt. Building a new one needs a Shortify access token and spends a summariser call, so prefer get_story when you only want to look something up.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"The article, blog post or PDF to shortify."},"visibility":{"type":"string","enum":["public","private"],"description":"Private unless you say otherwise, which is the safe default: a public story is a page in the world under the publisher's name."}},"required":["url"],"additionalProperties":false},"outputSchema":{"type":"object","properties":{"title":{"type":"string","description":"The deck's headline."},"description":{"type":["string","null"],"description":"One-line description of the story."},"summary":{"type":["string","null"],"description":"The key takeaway, in a sentence."},"image":{"type":"string","description":"Absolute URL of the cover image."},"url":{"type":"string","description":"Permanent Shortify page for the story."},"publisher":{"type":["string","null"],"description":"The outlet that reported it."},"source_url":{"type":"string","description":"The original article."},"slug":{"type":"string"},"read_time":{"type":"number","description":"Minutes."},"existed":{"type":"boolean","description":"False when this call built it."}},"required":["title","image","url","source_url","slug","read_time","existed"],"additionalProperties":false}},{"name":"search_stories","title":"Search Shortify stories","description":"Search the Shortify corpus and get back the best matches, newest and most relevant first. Matches three ways at once and fuses the rankings: the words themselves, the word the caller meant when it was mistyped, and the meaning, so a search for \"EV\" finds a headline that says electric vehicle. Narrow with tags or publishers, or pass only tags to browse a topic. Builds no stories; a term that has not been searched before costs one small embedding call, and repeats are cached. Returns a short summary per story; follow up with get_story for the full deck.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Keywords, or a plain description of what you are looking for. Either this or tags is required."},"tags":{"type":"array","items":{"type":"string"},"maxItems":6,"description":"Topics or hashtags a story must carry, all of them. Narrows hard: past a handful nothing matches."},"publishers":{"type":"array","items":{"type":"string"},"maxItems":20,"description":"Restrict to these outlets, by name, for example \"BBC News\"."},"limit":{"type":"number","minimum":1,"maximum":24,"description":"How many to return. Ten by default."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"query":{"type":"string","description":"What was searched for."},"count":{"type":"number"},"results":{"type":"array","description":"Best match first.","items":{"type":"object","properties":{"title":{"type":"string"},"description":{"type":["string","null"]},"publisher":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"url":{"type":"string","description":"Permanent Shortify page."},"image":{"type":"string"},"slug":{"type":"string"},"source_url":{"type":"string"},"read_time":{"type":"number"},"published_at":{"type":["string","null"]}},"required":["title","url","image","slug","source_url","read_time"],"additionalProperties":false}}},"required":["query","count","results"],"additionalProperties":false}},{"name":"get_story","title":"Get a Shortify story","description":"Look up a Shortify story that already exists, by its original article URL or by its slug. Builds nothing, spends nothing, and needs no account for a public story. Returns an error result when there is no story for that link yet.","inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"The original article URL."},"slug":{"type":"string","description":"The Shortify slug, if you have it."}},"additionalProperties":false},"outputSchema":{"type":"object","properties":{"title":{"type":"string","description":"The deck's headline."},"description":{"type":["string","null"],"description":"One-line description of the story."},"summary":{"type":["string","null"],"description":"The key takeaway, in a sentence."},"image":{"type":"string","description":"Absolute URL of the cover image."},"url":{"type":"string","description":"Permanent Shortify page for the story."},"publisher":{"type":["string","null"],"description":"The outlet that reported it."},"source_url":{"type":"string","description":"The original article."},"slug":{"type":"string"},"read_time":{"type":"number","description":"Minutes."},"existed":{"type":"boolean","description":"False when this call built it."}},"required":["title","image","url","source_url","slug","read_time","existed"],"additionalProperties":false}}]}