API and MCP usage

Use MetaOS from your AI assistant over MCP, or from your own code over GraphQL.

MCP

For AI assistants: Claude Code, Claude, Codex, ChatGPT

123 tools

Connect an assistant

GraphQL

For scripts and apps

POST /graphql

Ask the API

MCP

MetaOS is an MCP server. Connect an AI assistant such as Claude, Codex or ChatGPT to it, and the assistant can look up and manage Ogrodje's episodes, people, recording sessions and shows, its Google Docs and its files in Koofr, as you.

  1. Add MetaOS to Claude Code

    In a terminal; --scope user makes it available in all your projects.

    Terminal
    claude mcp add --transport http --scope user ogrodje https://ogrodje.si/mcp
  2. Sign in

    In Claude Code, run /mcp, pick ogrodje and choose Authenticate. Your browser opens MetaOS's sign-in, where you sign in with Discord or Google.

  3. Be on the staff

    MCP is for Ogrodje's staff. Signing in makes you a member; an Ogrodje admin makes your account staff, and until then MetaOS turns the assistant's sign-in down. Once you're staff, sign in again.

  4. Ask

    For example: “Which episodes are in production?” or “Who's on the next recording day?” The assistant picks the tools it needs from the ones below and, unless you've allowed them, asks you before it uses one.

  5. Keep its tools up to date

    MetaOS's tools are at version 1.1.0, and change as MetaOS does. An assistant keeps those it was given, so when it can't find one listed below, or MetaOS turns down how it calls one, it has older ones. Claude Code gets them again in a new session, or in /mcp: pick ogrodje and choose Reconnect.

Other MCP clients that sign in with OAuth, such as MCP Inspector, connect to https://ogrodje.si/mcp.

GraphQL

MetaOS's pages get what they show from its GraphQL API, and your scripts and apps can ask it too.

Endpoint
POST https://ogrodje.si/graphql, with JSON: a query and its variables
Errors
In the answer's body, with a 200
Schema
By introspection, for GraphQL clients, and described field by field in schema.graphqls on GitHub
Limits
15 levels deep and 300 fields a query

Without a token

What's public works for anyone: the released episodes, and the people on them. That's also all that episodes and people give anyone without a token.

The latest three releases
curl -s https://ogrodje.si/graphql \
  -H 'Content-Type: application/json' \
  -d '{"query":"{ releasedEpisodes(limit: 3) { code title airedDate youtubeUrl } }"}'

With a token

The rest is the team's. It takes a staff user's token, with metaos:read, and metaos:write for changes. Scripts have no sign-in of their own yet, so it's one from MetaOS's sign-in, which has both.

Your tokenlasts 5 minutes

Sign in, at the top right, and this is where you copy yours.

Who MetaOS takes you for
curl -s https://ogrodje.si/graphql \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"query":"{ me { username person { name } } }"}'
A comment on S05E08, its text in variables so nothing needs escaping
curl -s https://ogrodje.si/graphql \
  -H 'Content-Type: application/json' \
  -H "Authorization: Bearer $TOKEN" \
  -d '{"query":"mutation ($ref: String!, $body: String!) { commentOnEpisode(ref: $ref, body: $body) { id createdAt } }","variables":{"ref":"S05E08","body":"Hello from the API"}}'

Tools

123

What an assistant can do over MCP, as you, at version 1.1.0. It picks the ones it needs, and asks you first unless you've allowed them.

search
Find episodes, people and sessions by a code, a name or words in their titles and summaries; a code finds its episode on its own

Episodes from idea to release

list_episodes
List episodes, latest first, optionally only those with a given status
get_episode
An episode by its code or ID, with its summaries
create_episode
Add an episode; it starts as an idea, which can do without a code, recommended by you unless you name someone else
set_episode_recommended_by
Set or clear who recommended an episode
update_episode
Change an episode's code, title, alternative titles for A/B tests, summaries or dates
set_episode_status
Move an episode through its lifecycle, from idea to published, one step at a time
set_episode_link
Set or clear its YouTube, Spotify or Apple Podcasts link, or one of its four on Patreon: the full episode or its bonus, as video or audio only; each is in its distribution too
delete_episode
Delete an episode; it can be restored
restore_episode
Bring back a deleted episode, with its people, links, session and show; under a new code if its own is taken

Distribution where an episode went out once it was released: its links, and posts that promote it

list_episode_distributions
Where an episode went out: its links, then its posts, each with its page's preview
list_distributions
Where every episode went out, the latest first, e.g. this week, or on LinkedIn
add_episode_distribution
Log a post that promotes an episode, by its URL, e.g. on Discord, LinkedIn or Reddit; MetaOS fetches its preview
update_episode_distribution
Change a post's URL, channel, note, title or when it went out
remove_episode_distribution
Take a post off an episode; one of its links is cleared on the episode too
refresh_distribution_preview
Fetch a post's preview again, e.g. after it changed

People hosts, guests, producers and you

list_people
List all people
create_person
Add a person
set_person_email
Set or clear a person's email; accounts that sign in with it are linked to them
set_person_bio
Set or clear the line about who a person is, e.g. their role and company
set_person_link
Set or clear their homepage, LinkedIn, Twitter/X, Instagram or Facebook
delete_person
Delete a person; they drop off their episodes, and those they recommended, until they are restored
restore_person
Bring back a deleted person, with their roles and the episodes they recommended; with another email, or none, if theirs is taken
list_episode_people
The people on an episode and their roles
assign_person_to_episode
Give a person a role on an episode: host, co-host, guest, producer, consultant, designer, or candidate for someone who could be its guest
remove_person_from_episode
Take a person off an episode: one of their roles, or all of them
confirm_guest
Make a candidate an episode's guest, once they've said yes
list_person_episodes
The episodes a person is on, and their roles
whoami
Who you're signed in as: your account and the person it's linked to; and the version of MetaOS's tools
my_episodes
The episodes you're on, and your roles
list_accounts
The accounts MetaOS has seen and the people they are, or only those not linked to anyone
link_account
Link an account to the person it is, so its comments and changes go by their name, past ones too; only Oto may
unlink_account
Unlink an account from its person, e.g. one linked to the wrong person; only Oto may

Recording sessions days on which episodes are recorded

list_sessions
List all sessions, newest first
create_session
Add a session: its date, name, location and address
update_session
Change a session's date, name, location or address
delete_session
Delete a session; its episodes are kept
restore_session
Bring back a deleted session, with its episodes
list_session_episodes
The episodes of a session
set_episode_session
Move an episode into a session, or out of one

Discussion comments on episodes, ideas and recording sessions, in Markdown, as on GitHub

list_episode_comments
An episode's or idea's comments, oldest first, with who wrote them and when
list_session_comments
A recording session's comments, oldest first
comment_on_episode
Comment on an episode or idea as you, in Markdown
comment_on_session
Comment on a recording session as you, in Markdown
edit_comment
Change the text of one of your comments; it shows as edited
delete_comment
Delete one of your comments; the history keeps that it was there

Shows series of episodes, such as Borderless

list_shows
List all shows
get_show
A show by its name
create_show
Add a show, its episodes in Slovenian unless you give another language
update_show
Rename a show, or change its color or the language its episodes are spoken in
delete_show
Delete a show; its episodes are kept
restore_show
Bring back a deleted show, with its episodes; under a new name if its own is taken
list_show_episodes
The episodes of a show
set_episode_show
Move an episode into a show, or out of one

Google Drive Ogrodje's folder

list_drive_folder
What is in a folder
search_documents
Search Google Docs by the words in their title or text
read_document
Read a Google Doc, as Markdown
list_episode_documents
The Google Docs of an episode and of its recording session
link_episode_document
Link a Google Doc to an episode, e.g. its preparation doc
unlink_episode_document
Unlink a Google Doc from an episode; the doc stays in Drive
list_session_documents
The Google Docs of a recording session
link_session_document
Link a Google Doc to a recording session, e.g. its recording day plan
unlink_session_document
Unlink a Google Doc from a recording session; the doc stays in Drive
match_episode_documents
Link the docs in a folder to episodes by the code in their titles; only reports, unless told to link

Koofr the folders shared with Ogrodje's bot

list_koofr_places
The folders shared with Ogrodje's bot, and whether it may change them
list_koofr_folder
What is in a folder
search_koofr
Search for files and folders by name
read_koofr_file
Read a text file: txt, md, csv, json, srt and the like
upload_koofr_file
Upload a file; one of the same name is only replaced when asked
create_koofr_folder
Create a folder
move_koofr_file
Move or rename a file or folder; what it is linked to stays linked
list_episode_koofr_folders
The Koofr folders of an episode and of its recording session
link_episode_koofr_folder
Link a Koofr folder to an episode, e.g. the one with its recordings
unlink_episode_koofr_folder
Unlink a Koofr folder from an episode; the folder stays in Koofr
list_session_koofr_folders
The Koofr folders of a recording session
link_session_koofr_folder
Link a Koofr folder to a recording session
unlink_session_koofr_folder
Unlink a Koofr folder from a recording session; the folder stays in Koofr

Dropbox the folders shared with Ogrodje's bot, like Artwork

list_dropbox_places
The folders shared with Ogrodje's bot, and whether it may change them
list_dropbox_folder
What is in a folder
search_dropbox
Search for files and folders by name
read_dropbox_file
Read a text file: txt, md, csv, json, srt and the like
view_dropbox_image
Look at a picture, e.g. artwork for an episode
upload_dropbox_file
Upload a file; one of the same name is only replaced when asked
create_dropbox_folder
Create a folder
move_dropbox_file
Move or rename a file or folder
list_episode_dropbox_folders
The Dropbox folders of an episode and of its recording session
link_episode_dropbox_folder
Link a Dropbox folder to an episode, e.g. the one with its artwork
unlink_episode_dropbox_folder
Unlink a Dropbox folder from an episode; the folder stays in Dropbox
list_session_dropbox_folders
The Dropbox folders of a recording session
link_session_dropbox_folder
Link a Dropbox folder to a recording session
unlink_session_dropbox_folder
Unlink a Dropbox folder from a recording session; the folder stays in Dropbox

Patreon Ogrodje's Patreon: drafts and an episode's audio or video, which a person publishes in Patreon

list_patreon_tiers
The tiers, cheapest first, with their prices and patrons
list_patreon_members
The members, patrons first: their status, tiers, pledge, what they gave in all and their last charge
list_patreon_posts
The published posts, newest first, or those with words in their titles
list_patreon_drafts
The drafts, scheduled ones too, last edited first, with where to edit them
get_patreon_post
A post, published or a draft, with its text and who may see it
get_patreon_post_media
Download links for a post's audio (the MP3 as uploaded) or video (its best MP4), for a day or so
create_patreon_draft
Make a draft post, for everyone, every patron or some tiers; only the team sees it
update_patreon_post
Change a post's title, text or who may see it
set_patreon_post_media
Upload one of an episode's files in MetaOS to a draft, as a podcast or video post
set_patreon_post_image
Set a post's thumbnail, one of the episode's pictures in MetaOS
prepare_patreon_post
Check a draft is ready for a person to publish in Patreon: its title, and its audio or video processed
delete_patreon_post
Delete a post, e.g. a draft that isn't needed
get_patreon_job
How a change in Patreon is going, e.g. an upload: done, failed and why, or waiting its turn or to try again

Pictures thumbnails, covers and avatars for everyone to see, at media.ogrodje.si

set_episode_image
Make a picture from Dropbox or Koofr an episode's thumbnail, thumbnail B or C (for its alternative titles) or web picture, 1920 × 1080, or its cover, 3000 × 3000
remove_episode_image
Take one of its pictures off an episode
list_episode_images
An episode's thumbnails, web picture and cover, with their URLs
set_person_avatar
Make a picture from Hygraph, Dropbox or Koofr a person's avatar
remove_person_avatar
Take a person's avatar off them
get_person_avatar
A person's avatar, with its URLs

Video and audio an episode's full video and audio and its bonuses, uploaded on its page, for the team only

list_episode_media
An episode's video and audio files, with what's in each (length, codecs, resolution) and a link that downloads it for an hour
update_episode_media
Change a file's title, or what it is, e.g. a bonus video that's the full video
remove_episode_media
Take a video or audio file off its episode, and delete it

Transcripts what's said in an episode's video and audio, by Google's Speech-to-Text or Soniox, in a durable workflow

transcribe_episode
Transcribe an episode's full audio or video, or another of its files, with Google's Speech-to-Text or Soniox; it waits its turn when the provider is busy
list_transcriptions
Transcriptions, the latest first: queued, on, done, failed or cancelled, by provider or episode
get_transcription
One transcription by its ID, as it is now, to watch it till it's done
cancel_transcription
Stop a transcription that's on, and the provider's with it
get_episode_transcript
An episode's transcripts, by each provider, with timestamps and speakers where told apart, and how its transcriptions that are on are going
remove_transcript
Remove one of an episode's transcripts, and what it says

History who changed what, and when, and bringing back what was deleted

get_history
Every change to an episode, person, session or show, its discussion too, with when and by whom
list_recent_changes
The latest changes to everything
list_deleted
The deleted episodes, people, sessions and shows, with when and by whom, to restore
restore_link
Bring back a removed role, Google Doc, Koofr or Dropbox folder, from the change that removed it