Developer Hub

TubExperto API

Build on top of TubExperto. Connect your apps, automate workflows, and integrate YouTube knowledge into your products using our MCP server and REST API.

MCP Server Reference

TubExperto exposes a Model Context Protocol server via Streamable HTTP. Connect any MCP-compatible AI client with a single endpoint.

Transport: Streamable HTTP (POST, JSON-RPC 2.0)
Endpoint: https://tubexperto.com/api/mcp/stream
ToolDescriptionCredits
list_my_expertsList your subscribed experts/channelsFree
search_my_expertsSearch among your experts by keywordFree
list_expertsBrowse all public experts in the catalogFree
get_expert_infoGet detailed info about a specific expertFree
query_knowledge_baseSearch across ALL experts at once2 cr
query_expertAsk a specific expert a question2 cr
query_expert_panelAsk 2-5 experts simultaneously2 cr
compare_expertsCompare 2-5 experts on a topic (synthesis)2 cr
list_videosList videos from an expert (paginated)Free
get_latest_videosGet most recent videos from a channelFree
get_video_summaryGet video summary with chapters/timestampsFree
suggest_channelsFind new channels to follow by topicFree
recommend_videosGet recommended/trending videosFree

REST API

All MCP tools are also available as standard REST endpoints. The API follows OpenAPI 3.0 and uses JSON request/response bodies.

Base URL

https://tubexperto.com/api

MCP Stream endpoint (JSON-RPC)

POST /api/mcp/stream
Content-Type: application/json
Authorization: Bearer <token>

{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "list_my_experts",
    "arguments": {}
  }
}

Explore and test all endpoints in the interactive API playground, or download the OpenAPI spec.

Authentication

TubExperto uses two token types, both passed as Authorization: Bearer <token>.

API Keys

te_
  • +Persistent, never expire
  • +Ideal for server-to-server integrations
  • +Stored as bcrypt hash, not recoverable after creation
  • Manage at Dashboard → API Keys

Session Tokens

mcpl_
  • +7-day expiry, auto-rotatable
  • +Per-device, for AI client connections
  • +Stored as SHA-256 hash
  • Generate at Dashboard → TubExperto Link
Never expose tokens in client-side code or public repositories. Rotate immediately if compromised.

Quickstart Examples

Connect to TubExperto in under 5 minutes. Replace mcpl_... with your actual token.

$cURL

curl -X POST https://tubexperto.com/api/mcp/stream \
  -H "Authorization: Bearer mcpl_..." \
  -H "Content-Type: application/json" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "list_my_experts",
      "arguments": {}
    }
  }'

PyPython

import requests

TOKEN = "mcpl_..."
BASE_URL = "https://tubexperto.com/api/mcp/stream"

headers = {
    "Authorization": f"Bearer {TOKEN}",
    "Content-Type": "application/json",
}

def call_tool(name: str, arguments: dict = {}):
    payload = {
        "jsonrpc": "2.0",
        "id": 1,
        "method": "tools/call",
        "params": {"name": name, "arguments": arguments},
    }
    response = requests.post(BASE_URL, json=payload, headers=headers)
    response.raise_for_status()
    return response.json()

# List all your experts
experts = call_tool("list_my_experts")
print(experts)

# Ask a question to a specific expert
answer = call_tool("query_expert", {
    "expertId": "your-expert-id",
    "question": "What are the main topics covered in this channel?"
})
print(answer)

JSNode.js

const TOKEN = "mcpl_...";
const BASE_URL = "https://tubexperto.com/api/mcp/stream";

async function callTool(name, arguments_ = {}) {
  const response = await fetch(BASE_URL, {
    method: "POST",
    headers: {
      Authorization: `Bearer ${TOKEN}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      jsonrpc: "2.0",
      id: 1,
      method: "tools/call",
      params: { name, arguments: arguments_ },
    }),
  });

  if (!response.ok) {
    throw new Error(`HTTP ${response.status}: ${await response.text()}`);
  }

  return response.json();
}

// List all your experts
const experts = await callTool("list_my_experts");
console.log(experts);

// Search across all experts at once (costs 2 credits)
const results = await callTool("query_knowledge_base", {
  question: "What are the best JavaScript frameworks for 2025?",
});
console.log(results);

Rate Limits & Credits

Quotas reset monthly. Credits are consumed only by tools marked with a credit cost above. Free-tier read tools never consume credits.

PlanRequests/monthCredits/monthMCP Sessions
Free30*10 (welcome)1
Pro600302
Max2,000803
Team600/seat2505
Enterprise10,000250+999

* Free is actually metered weekly (7 questions, rolling 7-day window); 30/month is the approximate monthly-equivalent shown here for comparison with the other plans.

HTTP 429: Rate Limited

Returned when you exceed your quota (weekly on Free, monthly on other plans). Retry after the Retry-After header value.

HTTP 402: Insufficient Credits

Returned when a credit-costing tool is called with 0 balance. Top up credits in your dashboard.

Ready to build?

Get your API token from the dashboard and start querying your YouTube knowledge base in minutes.