{
  "video": {
    "id": "3wj6sgbi1YA",
    "title": "Designing CLIs for Agents, Not Humans — Pedro Lopez, Airbyte",
    "duration": 1100,
    "upload_date": null,
    "channel": "AI Engineer",
    "source": "AI Engineer",
    "event_format": ""
  },
  "analysis": {
    "video_id": "3wj6sgbi1YA",
    "title": "Designing CLIs for Agents, Not Humans — Pedro Lopez, Airbyte",
    "one_liner": "Design CLIs for agents: take JSON in and return JSON out, keep a consistent noun-verb command structure, never block on interactive prompts, and ship a skill with the CLI so agents can find it. Keep MCP servers to a few tools that agents explore step by step.",
    "summary": "Pedro Lopez explains how Airbyte built an MCP server and a CLI for its agent product. Both expose the product's 'context store', a search-optimised index of data from connected SaaS tools such as Zendesk and Stripe. Both are thin interfaces over Airbyte's shared platform APIs, using OpenAPI specs as the source of truth so they keep up with a platform that deploys more than 10 times a day. He shares lessons from each interface: for MCP, few tools, OAuth and avoiding elicitation; for the CLI, JSON in and out, consistency, bundled skills and no interactive prompts. He concludes that MCP suits non-technical users and quick reports, while the CLI suits technical users, long-running tasks and long outputs that benefit from Unix pipes.",
    "key_points": [
      "The MCP server and CLI are 'thin unified interfaces' over the platform, not reimplementations. They are mostly presentational and built on OpenAPI specs, so they keep up with a platform that changes more than 10 times a day.",
      "Keep the MCP tool count small. Connector execution goes through two main tools: 'describe', which returns the schema for querying a connector, and 'execute', which reads, writes and deletes records. Agents discover capabilities step by step instead of getting one tool per connector entity or action, and keeping tool descriptions short improves performance.",
      "Use OAuth for MCP. The spec leans heavily on it, and Anthropic's custom connector registration has no way to enter a bearer token. Users also expect long-lived, mobile-app-style sessions, so offline sessions need to be stored and managed separately from the web app's.",
      "Avoid MCP elicitation for credentials. Form-mode elicitation isn't suitable for sensitive data, and the newer URL-mode elicitation isn't widely supported (Claude Desktop said it doesn't support it). Airbyte instead generates its own link to a widget that runs the third-party OAuth flow, for example HubSpot's.",
      "The CLI takes JSON in and returns JSON out. Agents build complex JSON inputs more directly and with less guessing than they manage flags. JSON output also lets agents pipe long responses through tools like jq.",
      "Keep the CLI consistent, for example noun-verb throughout ('connectors list', 'connectors create', 'workspace list'). If agents keep making the same mistake, consider making that mistaken usage your contract.",
      "Ship skills with the CLI, both so agents discover it exists and so they use it well. Keep the main skill small and move per-command detail into reference files, to limit context and let agents load detail only when needed.",
      "On the trade-offs: MCP is implemented unevenly across clients and providers add their own limits, such as Claude's 2 KB limit on server and tool descriptions and limits on how long tools can run. The CLI raises versioning and update problems, and with no limits at all agents can get stuck in loops."
    ],
    "takeaways": [
      "Expose a few generic tools or commands (describe and execute) and let agents discover the rest step by step, rather than one tool per entity or action.",
      "Make agent-facing CLIs non-interactive: take settings through flags, and credentials through environment variables or config files set up in advance, never through prompts that wait for a human.",
      "Use JSON for CLI input and output, and enforce one command grammar across every resource. Treat repeated agent mistakes as a sign the interface should change.",
      "Use OAuth with long-lived sessions for MCP servers, and test which spec features (such as URL-mode elicitation) your target clients actually support before relying on them.",
      "Offer MCP to non-technical users and quick prototypes or one-off reports, and a CLI with bundled skills to technical users with long-running tasks or large outputs."
    ],
    "topics": [
      "mcp",
      "cli design",
      "agents",
      "agent skills",
      "oauth",
      "context management",
      "developer tools"
    ],
    "tools": [
      "Airbyte",
      "MCP",
      "Zendesk",
      "Stripe",
      "GitHub",
      "HubSpot",
      "ChatGPT",
      "Claude",
      "Claude Desktop",
      "Anthropic",
      "OpenAPI",
      "jq"
    ],
    "quotes": [
      {
        "text": "they are thin unified interfaces into our platform, not reimplementations of the platform",
        "at": "03:08",
        "url": "https://www.youtube.com/watch?v=3wj6sgbi1YA&t=188s"
      },
      {
        "text": "Elicitation though is not the way.",
        "at": "08:33",
        "url": "https://www.youtube.com/watch?v=3wj6sgbi1YA&t=513s"
      },
      {
        "text": "if you see agents making the same mistake over and over, um calling the wrong command a bunch of times, consider making that your contract.",
        "at": "13:25",
        "url": "https://www.youtube.com/watch?v=3wj6sgbi1YA&t=805s"
      },
      {
        "text": "how else if you have a CLI installed is an agent going to know that that CLI even exists in the first place",
        "at": "13:56",
        "url": "https://www.youtube.com/watch?v=3wj6sgbi1YA&t=836s"
      }
    ],
    "words": 3473
  },
  "summary_url": "/#3wj6sgbi1YA",
  "transcript": {
    "html": "/transcripts/3wj6sgbi1YA.html",
    "txt": "/transcripts/3wj6sgbi1YA.txt",
    "vtt": "/transcripts/3wj6sgbi1YA.vtt"
  }
}