Podgist MCP
Podgist MCP allows AI agents to search, ask questions about, and order podcast transcripts. It provides access to a library of over 236,000 episodes with speaker labels and timestamps. Agents can list podcasts, search transcripts, ask questions with citations, and order new transcriptions using prepaid API balances.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.podgist.com/mcpWhat you can do with it
- Search transcripts across all shows
- Ask questions answered from podcast transcripts
- Order transcription for untranscribed episodes
- Get podcast details and episode lists
Source and maintenance
Protocol and capabilities
- Server
- podgist 1.1.0
- MCP protocol
- 2025-06-18
- Tools
- 35 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": false
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
35 advertised
list_services — What Podgist offers, and the price of each call
Lists the tools, which need an API key, and the current price per call. Free; no key needed.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}find_podcasts — Find podcasts by name
Public podcasts whose name contains the text, most-transcribed first, with their slug (for the podcast filter of search_transcripts). Free; no key needed. At most 20 results.
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"maxLength": 100,
"minLength": 2
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}search_transcripts — Search every transcript
Full-text search across transcripts: matching episodes with snippets, newest relevance first, 20 a page. Optional podcast slug and date range (YYYY-MM-DD). Needs an API key; billed per search (see list_services).
{
"type": "object",
"required": [
"query"
],
"properties": {
"page": {
"type": "integer",
"maximum": 50,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 500,
"minLength": 1
},
"date_to": {
"type": "string",
"format": "date"
},
"podcast": {
"type": "string",
"description": "A slug from find_podcasts."
},
"date_from": {
"type": "string",
"format": "date"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}ask_question — Ask the transcripts a question
Starts a cited answer drawn only from what was said on podcasts. Returns a job_id; call get_answer with it until status is complete (usually under a minute). Needs an API key; billed per question (see list_services).
{
"type": "object",
"required": [
"question"
],
"properties": {
"question": {
"type": "string",
"maxLength": 500,
"minLength": 3
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": false
}get_answer — Get an answer
The status and, once complete, the answer and its cited passages for a job from ask_question. Needs the API key that asked. Not billed.
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"maxLength": 64,
"minLength": 8
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_transcript — Read one transcript
One episode's transcript, with speaker turns and timestamps, by podcast and episode id (the sid and pid of a search result). Only what the key's account may read. Needs an API key; billed per transcript (see list_services).
{
"type": "object",
"required": [
"podcast_id",
"episode_id"
],
"properties": {
"episode_id": {
"type": "string",
"format": "uuid"
},
"podcast_id": {
"type": "string",
"format": "uuid"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_usage — Balance and usage
The key's account balance and monthly allowance, and its calls and cost per day over the last 30 days. Needs an API key. Not billed.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_podcast — A podcast's page
Description, links, how many episodes are transcribed, the latest episode, and the price to transcribe an episode or subscribe. Free; no key needed.
{
"type": "object",
"required": [
"podcast"
],
"properties": {
"podcast": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A slug or podcast_id from find_podcasts."
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}list_episodes — A podcast's episodes
Episodes newest first, 25 a page: title, date, length, whether transcribed (with its link) and, if not, the price to transcribe it. Page 1 is free with no key; each later page needs a key and is billed at the catalog rate (list_services).
{
"type": "object",
"required": [
"podcast"
],
"properties": {
"page": {
"type": "integer",
"maximum": 400,
"minimum": 1
},
"podcast": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A slug or podcast_id from find_podcasts."
},
"transcribed_only": {
"type": "boolean"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}analyze_feed — Analyze a podcast feed for indexing
Reads a public RSS feed (or Apple/Spotify link) and lists its episodes with which are already on Podgist and the price to transcribe the rest. Free; no key needed; at most 10 a minute.
{
"type": "object",
"required": [
"url"
],
"properties": {
"url": {
"type": "string",
"format": "uri",
"maxLength": 2000
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}list_credit_tiers — AI credit packs
The AI-question credit packs and their prices. Free.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_topics — Topics
This week's topics across podcasts, or one topic by slug. Free.
{
"type": "object",
"required": [],
"properties": {
"topic": {
"type": "string",
"maxLength": 200
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_news — Podgist news
Podgist's own news posts. Free.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}quote_episode — Price one episode
The price for this account to transcribe one episode (or, if transcribed, to read it), held 30 minutes. Needs a key with the "order" scope. Not billed; nothing is bought until order.
{
"type": "object",
"required": [
"podcast",
"episode"
],
"properties": {
"episode": {
"type": "string",
"format": "uuid",
"description": "An episode_id from list_episodes."
},
"podcast": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A slug or podcast_id from find_podcasts."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}quote_index — Price indexing a podcast
The price to transcribe chosen episodes of a feed (episode ids from analyze_feed), with volume pricing. Needs a key with the "order" scope. Not billed until order.
{
"type": "object",
"required": [
"feed_url",
"episode_ids"
],
"properties": {
"feed_url": {
"type": "string",
"format": "uri",
"maxLength": 2000
},
"episode_ids": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 500,
"minItems": 1
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}quote_credits — Price an AI credit pack
A quote for one credit pack (tier from list_credit_tiers).
{
"type": "object",
"required": [
"tier"
],
"properties": {
"tier": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}quote_subscription — Price a subscription term
A prepaid term of one month or year, paid from the balance, that never renews by itself: "podcast" (every transcript of one show), "all" (every transcript) or "professional" (all access plus the API).
{
"type": "object",
"required": [
"product",
"interval"
],
"properties": {
"podcast": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A slug or podcast_id from find_podcasts."
},
"product": {
"enum": [
"podcast",
"all",
"professional"
],
"type": "string"
},
"interval": {
"enum": [
"month",
"year"
],
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}order — Pay a quote from the API balance
Buys what a quote is for, charging its price to the account's prepaid API balance (never a card). At most $50 an order and $200 a day. Episodes that are never transcribed are refunded automatically. Needs the "order" scope.
{
"type": "object",
"required": [
"quote_id",
"idempotency_key"
],
"properties": {
"quote_id": {
"type": "string",
"format": "uuid"
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 8,
"description": "Any unique string; retrying with the same one never pays twice."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_order — An order
One order and each episode's status (waiting, transcribed, refunded). Free.
{
"type": "object",
"required": [
"order_id"
],
"properties": {
"order_id": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}list_orders — Orders
This account's orders paid from the API balance, newest first. Free.
{
"type": "object",
"required": [],
"properties": {
"before": {
"type": "integer",
"minimum": 1
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}get_account — The account
Plan, subscriptions, AI credits, follows, purchases and summary-email settings, as the account page shows them. Free.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}list_follows — Followed podcasts
The podcasts this account follows. Free.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}follow_podcast — Follow a podcast
Follow a podcast (as the Follow button does). Needs the "account" scope. Free.
{
"type": "object",
"required": [
"podcast"
],
"properties": {
"podcast": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A slug or podcast_id from find_podcasts."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}unfollow_podcast — Unfollow a podcast
Stop following a podcast. Needs the "account" scope. Free.
{
"type": "object",
"required": [
"podcast"
],
"properties": {
"podcast": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A slug or podcast_id from find_podcasts."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}set_email_settings — Summary-email settings
Turn the summary email on or off, set daily or weekly and the weekly day, or include one followed podcast (podcast + enabled). Needs the "account" scope. Free.
{
"type": "object",
"required": [],
"properties": {
"start": {
"type": "string"
},
"points": {
"type": "integer",
"minimum": 1
},
"enabled": {
"type": "boolean"
},
"podcast": {
"type": "string",
"maxLength": 200,
"minLength": 1,
"description": "A slug or podcast_id from find_podcasts."
},
"frequency": {
"enum": [
"daily",
"weekly"
],
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_ask_history — Ask history
This account's questions, newest first, site and API alike. Free.
{
"type": "object",
"required": [],
"properties": {
"q": {
"type": "string",
"maxLength": 200
},
"before": {
"type": "string",
"maxLength": 64
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}delete_ask — Delete a question
Remove a question from the Ask history (restore_ask puts it back). Needs the "account" scope.
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"maxLength": 64,
"minLength": 8
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}restore_ask — Restore a question
Put a deleted question back in the Ask history. Needs the "account" scope.
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"maxLength": 64,
"minLength": 8
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}share_ask — Share an answer
The public link to one of this account's answered questions.
{
"type": "object",
"required": [
"job_id"
],
"properties": {
"job_id": {
"type": "string",
"maxLength": 64,
"minLength": 8
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"openWorldHint": false
}checkout_quote — Pay a quote by card instead
A checkout link for a person to pay this quote by card (when the balance or a cap stops order). The quote can then only be paid by that link; asking again returns the same link. Needs the "billing" scope.
{
"type": "object",
"required": [
"quote_id"
],
"properties": {
"quote_id": {
"type": "string",
"format": "uuid"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}start_topup — Add funds (a link for a person)
A checkout link for a person to add funds to the API balance by card; nothing is charged by the agent. Needs the "billing" scope.
{
"type": "object",
"required": [
"amount",
"idempotency_key"
],
"properties": {
"amount": {
"type": "number",
"minimum": 1
},
"idempotency_key": {
"type": "string",
"maxLength": 200,
"minLength": 8,
"description": "Any unique string; retrying with the same one never pays twice."
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}billing_portal_link — Card billing portal
A link for a person to change the card, see invoices or cancel a card subscription. Needs the "billing" scope.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}cancel_subscription — Cancel a card subscription
Cancel the account's card-paid Professional plan at period end (provider "stripe", undo to keep it), or its PayPal subscription (provider "paypal"), exactly as the account page does. Prepaid terms bought with the balance never renew, so need no cancelling. Needs the "billing" scope.
{
"type": "object",
"required": [
"provider"
],
"properties": {
"undo": {
"type": "boolean"
},
"provider": {
"enum": [
"stripe",
"paypal"
],
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}request_password_reset — Password reset email
Email the account's address a password-reset code, as "Forgot password" does; the person sets the new password. Needs the "account" scope.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}revoke_this_key — Revoke this key
Revoke the API key making this call, for good. Other keys are managed only by the person.
{
"type": "object",
"required": [],
"properties": {},
"additionalProperties": false
}{
"readOnlyHint": false,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": true
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1012 ms
- 95th percentile latency
- 1012 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1012 ms · metadata changed · 35 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http podgist-mcp https://api.podgist.com/mcpCodex
codex mcp add podgist-mcp --url https://api.podgist.com/mcpCursor
{
"mcpServers": {
"podgist-mcp": {
"url": "https://api.podgist.com/mcp"
}
}
}Cline
{
"mcpServers": {
"podgist-mcp": {
"type": "streamableHttp",
"url": "https://api.podgist.com/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"podgist-mcp": {
"type": "http",
"url": "https://api.podgist.com/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http podgist-mcp https://api.podgist.com/mcpClaude Desktop
{
"mcpServers": {
"podgist-mcp": {
"url": "https://api.podgist.com/mcp"
}
}
}Windsurf
{
"mcpServers": {
"podgist-mcp": {
"serverUrl": "https://api.podgist.com/mcp"
}
}
}Let your agent find its tools
Find servers like Podgist MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.
Other data and analytics servers
Do you run Podgist MCP?
Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.