{
  "$schema": "https://a2a-protocol.org/schemas/v1/agent-card.json",
  "id": "org.tubetotranscript.agent",
  "name": "TubeToTranscript Intelligence Agent",
  "version": "1.0.0",
  "description": "YouTube caption reading, multi-video batch extraction, transcript search, and transcript-based study-note formatting.",
  "url": "https://www.tubetotranscript.com",
  "documentationUrl": "https://www.tubetotranscript.com/docs",
  "provider": {
    "name": "TubeToTranscript",
    "url": "https://www.tubetotranscript.com",
    "contact": "support@tubetotranscript.com"
  },
  "supportedInterfaces": [
    {
      "id": "rest-v1",
      "protocol": "HTTP+REST",
      "url": "https://www.tubetotranscript.com/api/v1",
      "description": "REST API endpoints for single and batch caption extraction; playlist and channel endpoints require an optional upstream provider."
    },
    {
      "id": "mcp-http",
      "protocol": "ModelContextProtocol/1.0",
      "url": "https://www.tubetotranscript.com/mcp",
      "description": "Remote Model Context Protocol (MCP) server over Streamable HTTP; tool calls need an API key"
    },
    {
      "id": "mcp-stdio",
      "protocol": "ModelContextProtocol/1.0",
      "url": "https://www.npmjs.com/package/tubetotranscript-mcp",
      "description": "Local MCP server (npx -y tubetotranscript-mcp) for Claude Desktop, Cursor, and IDE agents; no API key"
    },
    {
      "id": "a2a-rest",
      "protocol": "A2A/1.0",
      "url": "https://www.tubetotranscript.com/api/v1",
      "description": "Agent-to-Agent HTTP JSON interface"
    }
  ],
  "capabilities": [
    {
      "id": "transcript-extraction",
      "name": "Single Video Transcription",
      "description": "Extracts official, auto-generated, and multi-language captions with millisecond timestamps."
    },
    {
      "id": "batch-transcription",
      "name": "Concurrent Batch Processing",
      "description": "Processes multiple YouTube video URLs concurrently and returns structured transcripts."
    },
    {
      "id": "playlist-ingestion",
      "name": "Playlist Transcriber",
      "description": "Enumerates videos in public YouTube playlists when the optional upstream provider is configured."
    },
    {
      "id": "channel-search",
      "name": "Channel Dialogue Search",
      "description": "Performs keyword caption search when the optional channel provider is configured."
    }
  ],
  "skills": [
    {
      "id": "get-youtube-transcript",
      "name": "Get YouTube Transcript",
      "description": "Fetches full transcript text, language metadata, and timestamp segments for a given YouTube video URL or ID.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "url": {
            "type": "string",
            "description": "YouTube Video URL or 11-character video ID"
          },
          "language": {
            "type": "string",
            "description": "Optional ISO language code (e.g. \"en\", \"es\", \"ur\")"
          }
        },
        "required": [
          "url"
        ]
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "videoId": {
            "type": "string"
          },
          "language": {
            "type": "string"
          },
          "length_seconds": {
            "type": "integer"
          },
          "metadata": {
            "type": "object"
          },
          "transcript": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "text": {
                  "type": "string"
                },
                "start": {
                  "type": "number"
                },
                "duration": {
                  "type": "number"
                }
              }
            }
          }
        }
      }
    },
    {
      "id": "batch-transcribe",
      "name": "Batch Transcribe Videos",
      "description": "Transcribes multiple YouTube URLs simultaneously in a single API call.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Array of YouTube video URLs"
          }
        },
        "required": [
          "urls"
        ]
      }
    },
    {
      "id": "search-channel-speech",
      "name": "Search Channel Speech",
      "description": "Searches spoken words and citations across a YouTube creator channel.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "channel": {
            "type": "string",
            "description": "Channel handle or name"
          },
          "query": {
            "type": "string",
            "description": "Dialogue keyword to search"
          }
        },
        "required": [
          "channel",
          "query"
        ]
      }
    }
  ]
}