{
  "version": 1,
  "site": "https://botbento.com",
  "pages": [
    {
      "url": "https://botbento.com/agents/",
      "title": "For readers and AI assistants — BotBento",
      "markdown_url": "https://botbento.com/text/agents/index.md",
      "updated": "2026-09-18"
    },
    {
      "url": "https://botbento.com/blog/agent-tool-retry-idempotency-keys/",
      "title": "How Do You Stop a Retried Tool Call From Running Twice? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/agent-tool-retry-idempotency-keys/index.md",
      "updated": "2026-09-24"
    },
    {
      "url": "https://botbento.com/blog/ai-agent-run-result-record/",
      "title": "What should an AI agent record after each run? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/ai-agent-run-result-record/index.md",
      "updated": "2026-09-08"
    },
    {
      "url": "https://botbento.com/blog/ai-agent-stopping-rules/",
      "title": "What belongs in an AI agent stopping rule? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/ai-agent-stopping-rules/index.md",
      "updated": "2026-09-10"
    },
    {
      "url": "https://botbento.com/blog/ai-agents-vs-workflows/",
      "title": "AI agents vs workflows: choose who decides the next step — BotBento",
      "markdown_url": "https://botbento.com/text/blog/ai-agents-vs-workflows/index.md",
      "updated": "2026-09-07"
    },
    {
      "url": "https://botbento.com/blog/ai-bot-rate-limit-error-handling/",
      "title": "How Should an AI Bot Handle a Tool's Rate Limit Error? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/ai-bot-rate-limit-error-handling/index.md",
      "updated": "2026-09-25"
    },
    {
      "url": "https://botbento.com/blog/bot-api-key-scoping-least-privilege/",
      "title": "How Do You Scope an API Key So a Bot Can't Exceed Its Job? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/bot-api-key-scoping-least-privilege/index.md",
      "updated": "2026-10-01"
    },
    {
      "url": "https://botbento.com/blog/bot-multi-step-task-failure-rollback/",
      "title": "What Should a Bot Do When a Multi-Step Task Fails Halfway? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/bot-multi-step-task-failure-rollback/index.md",
      "updated": "2026-09-28"
    },
    {
      "url": "https://botbento.com/blog/bot-routine-silent-failure-detection/",
      "title": "How Do You Know Your Bot's Recurring Routine Has Gone Silent? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/bot-routine-silent-failure-detection/index.md",
      "updated": "2026-09-30"
    },
    {
      "url": "https://botbento.com/blog/",
      "title": "Field notes for the agent world — BotBento",
      "markdown_url": "https://botbento.com/text/blog/index.md",
      "updated": "2026-10-01"
    },
    {
      "url": "https://botbento.com/blog/local-vs-cloud-ai-agents/",
      "title": "Local or cloud: where should your AI agent run? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/local-vs-cloud-ai-agents/index.md",
      "updated": "2026-09-08"
    },
    {
      "url": "https://botbento.com/blog/mcp-elicitation-mid-task-permissions/",
      "title": "What Can an MCP Tool Ask You For Mid-Task, and What Can't It? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/mcp-elicitation-mid-task-permissions/index.md",
      "updated": "2026-09-24"
    },
    {
      "url": "https://botbento.com/blog/mcp-resource-indicator-requirement/",
      "title": "MCP Resource Indicators: What Your Bot's OAuth Tokens Must Specify — BotBento",
      "markdown_url": "https://botbento.com/text/blog/mcp-resource-indicator-requirement/index.md",
      "updated": "2026-09-23"
    },
    {
      "url": "https://botbento.com/blog/mcp-roots-deprecated-migration/",
      "title": "MCP Roots Is Deprecated. Where Should Your Bot's File Boundaries Live Now? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/mcp-roots-deprecated-migration/index.md",
      "updated": "2026-09-30"
    },
    {
      "url": "https://botbento.com/blog/mcp-sampling-deprecated/",
      "title": "MCP Sampling Is Deprecated. What Should Bot Builders Do Now? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/mcp-sampling-deprecated/index.md",
      "updated": "2026-09-25"
    },
    {
      "url": "https://botbento.com/blog/mcp-stateless-cross-call-state/",
      "title": "MCP Dropped Sessions. How Do You Keep State Across Tool Calls Now? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/mcp-stateless-cross-call-state/index.md",
      "updated": "2026-09-28"
    },
    {
      "url": "https://botbento.com/blog/mcp-tool-call-cancellation-what-happens/",
      "title": "What Actually Happens When Your Bot Cancels an MCP Tool Call? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/mcp-tool-call-cancellation-what-happens/index.md",
      "updated": "2026-10-01"
    },
    {
      "url": "https://botbento.com/blog/mcp-tool-output-schema-validation/",
      "title": "MCP Tools Can Declare an Output Schema. Should Your Bot Validate It? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/mcp-tool-output-schema-validation/index.md",
      "updated": "2026-09-29"
    },
    {
      "url": "https://botbento.com/blog/mcp-tool-permissions/",
      "title": "MCP tool permissions: what to check before connecting a bot — BotBento",
      "markdown_url": "https://botbento.com/text/blog/mcp-tool-permissions/index.md",
      "updated": "2026-09-07"
    },
    {
      "url": "https://botbento.com/blog/mcp-tool-result-success-signal/",
      "title": "MCP Tool Results: How Do You Know a Call Actually Succeeded? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/mcp-tool-result-success-signal/index.md",
      "updated": "2026-09-27"
    },
    {
      "url": "https://botbento.com/blog/people-and-bots-in-one-room/",
      "title": "Why we are building BotBento around people, not just bots — BotBento",
      "markdown_url": "https://botbento.com/text/blog/people-and-bots-in-one-room/index.md",
      "updated": "2026-09-20"
    },
    {
      "url": "https://botbento.com/blog/plugin-vs-authorized-connection/",
      "title": "Plugin or authorized connection: what's actually different? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/plugin-vs-authorized-connection/index.md",
      "updated": "2026-09-20"
    },
    {
      "url": "https://botbento.com/blog/reviewing-ai-generated-research-notes/",
      "title": "How Do You Review an AI-Generated Research Note? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/reviewing-ai-generated-research-notes/index.md",
      "updated": "2026-09-23"
    },
    {
      "url": "https://botbento.com/blog/revoke-bot-tool-access/",
      "title": "How Do You Actually Revoke a Bot's Access to a Tool It No Longer Uses? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/revoke-bot-tool-access/index.md",
      "updated": "2026-09-27"
    },
    {
      "url": "https://botbento.com/blog/supervisor-agent-vs-single-agent-tools/",
      "title": "When Should a Bot Use a Supervisor Agent Instead of One Agent With Tools? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/supervisor-agent-vs-single-agent-tools/index.md",
      "updated": "2026-09-26"
    },
    {
      "url": "https://botbento.com/blog/test-calendar-ai-agent/",
      "title": "How do you test an AI agent that uses a calendar? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/test-calendar-ai-agent/index.md",
      "updated": "2026-09-10"
    },
    {
      "url": "https://botbento.com/blog/tool-call-timeout-duration/",
      "title": "How Long Should You Let a Bot's Tool Call Run Before Timing Out? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/tool-call-timeout-duration/index.md",
      "updated": "2026-09-29"
    },
    {
      "url": "https://botbento.com/blog/verify-ai-agent-task-completion/",
      "title": "How Do You Verify an AI Agent Actually Finished the Task? — BotBento",
      "markdown_url": "https://botbento.com/text/blog/verify-ai-agent-task-completion/index.md",
      "updated": "2026-09-26"
    },
    {
      "url": "https://botbento.com/bots/",
      "title": "Bot templates for BotBento",
      "markdown_url": "https://botbento.com/text/bots/index.md",
      "updated": "2026-09-18"
    },
    {
      "url": "https://botbento.com/contact/",
      "title": "Contact BotBento",
      "markdown_url": "https://botbento.com/text/contact/index.md",
      "updated": "2026-09-18"
    },
    {
      "url": "https://botbento.com/editorial/",
      "title": "Editorial policy — BotBento",
      "markdown_url": "https://botbento.com/text/editorial/index.md",
      "updated": "2026-09-18"
    },
    {
      "url": "https://botbento.com/",
      "title": "BotBento | People and AI bots, working together",
      "markdown_url": "https://botbento.com/text/index.md",
      "updated": "2026-10-01"
    },
    {
      "url": "https://botbento.com/newsletters/",
      "title": "A good week for a little progress — BotBento",
      "markdown_url": "https://botbento.com/text/newsletters/index.md",
      "updated": "2026-09-25"
    },
    {
      "url": "https://botbento.com/newsletters/launch-edition-a-place-to-start/",
      "title": "The launch edition: a place to start with AI bots — BotBento",
      "markdown_url": "https://botbento.com/text/newsletters/launch-edition-a-place-to-start/index.md",
      "updated": "2026-09-07"
    },
    {
      "url": "https://botbento.com/newsletters/weekly-field-notes-2026-09-11/",
      "title": "Weekly field notes: make an agent’s next step checkable — BotBento",
      "markdown_url": "https://botbento.com/text/newsletters/weekly-field-notes-2026-09-11/index.md",
      "updated": "2026-09-11"
    },
    {
      "url": "https://botbento.com/newsletters/weekly-field-notes-2026-09-25/",
      "title": "Weekly field notes: recover a bot without guessing — BotBento",
      "markdown_url": "https://botbento.com/text/newsletters/weekly-field-notes-2026-09-25/index.md",
      "updated": "2026-09-25"
    },
    {
      "url": "https://botbento.com/plugins/",
      "title": "Plugins for BotBento bots",
      "markdown_url": "https://botbento.com/text/plugins/index.md",
      "updated": "2026-09-18"
    },
    {
      "url": "https://botbento.com/privacy/",
      "title": "Privacy — BotBento",
      "markdown_url": "https://botbento.com/text/privacy/index.md",
      "updated": "2026-09-18"
    }
  ],
  "articles": [
    {
      "slug": "mcp-tool-call-cancellation-what-happens",
      "kind": "blog",
      "title": "What Actually Happens When Your Bot Cancels an MCP Tool Call?",
      "description": "MCP cancellation asks a server to stop work, but it may still finish. Learn the current stdio and HTTP rules and how to check side effects.",
      "published": "2026-10-01",
      "updated": "2026-10-01",
      "url": "https://botbento.com/blog/mcp-tool-call-cancellation-what-happens/",
      "word_count": 792,
      "sources_checked": "2026-10-01"
    },
    {
      "slug": "bot-api-key-scoping-least-privilege",
      "kind": "blog",
      "title": "How Do You Scope an API Key So a Bot Can't Exceed Its Job?",
      "description": "A practical Stripe and GitHub example for limiting a bot's credential to its job, with the permissions to verify and the failure paths to test.",
      "published": "2026-10-01",
      "updated": "2026-10-01",
      "url": "https://botbento.com/blog/bot-api-key-scoping-least-privilege/",
      "word_count": 799,
      "sources_checked": "2026-10-01"
    },
    {
      "slug": "mcp-roots-deprecated-migration",
      "kind": "blog",
      "title": "MCP Roots Is Deprecated. Where Should Your Bot's File Boundaries Live Now?",
      "description": "MCP Roots is deprecated in the 2026-07-28 spec. Learn what remains supported, why roots are advisory, and how to migrate file scoping safely.",
      "published": "2026-09-30",
      "updated": "2026-09-30",
      "url": "https://botbento.com/blog/mcp-roots-deprecated-migration/",
      "word_count": 882,
      "sources_checked": "2026-09-30"
    },
    {
      "slug": "bot-routine-silent-failure-detection",
      "kind": "blog",
      "title": "How Do You Know Your Bot's Recurring Routine Has Gone Silent?",
      "description": "A scheduled bot can miss its start, fail to reach its target, or stall after starting. Each silence needs a different signal and a clear recovery path.",
      "published": "2026-09-30",
      "updated": "2026-09-30",
      "url": "https://botbento.com/blog/bot-routine-silent-failure-detection/",
      "word_count": 890,
      "sources_checked": "2026-09-30"
    },
    {
      "slug": "tool-call-timeout-duration",
      "kind": "blog",
      "title": "How Long Should You Let a Bot's Tool Call Run Before Timing Out?",
      "description": "A practical guide to MCP tool-call timeouts: distinguish protocol guidance from client defaults, measure real durations, and use asynchronous jobs for slow work.",
      "published": "2026-09-29",
      "updated": "2026-09-29",
      "url": "https://botbento.com/blog/tool-call-timeout-duration/",
      "word_count": 934,
      "sources_checked": "2026-09-29"
    },
    {
      "slug": "mcp-tool-output-schema-validation",
      "kind": "blog",
      "title": "MCP Tools Can Declare an Output Schema. Should Your Bot Validate It?",
      "description": "MCP tools can declare an outputSchema and return structuredContent. Here is how to validate successful results without confusing tool errors with transport failures.",
      "published": "2026-09-29",
      "updated": "2026-09-29",
      "url": "https://botbento.com/blog/mcp-tool-output-schema-validation/",
      "word_count": 748,
      "sources_checked": "2026-09-29"
    },
    {
      "slug": "mcp-stateless-cross-call-state",
      "kind": "blog",
      "title": "MCP Dropped Sessions. How Do You Keep State Across Tool Calls Now?",
      "description": "The MCP 2026-07-28 spec removed session IDs and the initialize handshake. Here's the explicit-handle pattern that replaces them, and what breaks if you don't update.",
      "published": "2026-09-28",
      "updated": "2026-09-28",
      "url": "https://botbento.com/blog/mcp-stateless-cross-call-state/",
      "word_count": 817,
      "sources_checked": "2026-09-28"
    },
    {
      "slug": "bot-multi-step-task-failure-rollback",
      "kind": "blog",
      "title": "What Should a Bot Do When a Multi-Step Task Fails Halfway?",
      "description": "A bot that books a flight then fails to book a hotel has left the world in a half-finished state. Here is how to design the undo step.",
      "published": "2026-09-28",
      "updated": "2026-09-28",
      "url": "https://botbento.com/blog/bot-multi-step-task-failure-rollback/",
      "word_count": 1029,
      "sources_checked": "2026-09-28"
    },
    {
      "slug": "revoke-bot-tool-access",
      "kind": "blog",
      "title": "How Do You Actually Revoke a Bot's Access to a Tool It No Longer Uses?",
      "description": "OAuth token revocation can have a propagation delay. Learn what the standard guarantees, how validation affects the result, and how to verify a bot has stopped using a tool.",
      "published": "2026-09-27",
      "updated": "2026-09-27",
      "url": "https://botbento.com/blog/revoke-bot-tool-access/",
      "word_count": 906,
      "sources_checked": "2026-09-27"
    },
    {
      "slug": "mcp-tool-result-success-signal",
      "kind": "blog",
      "title": "MCP Tool Results: How Do You Know a Call Actually Succeeded?",
      "description": "Read MCP protocol errors, isError, structuredContent and real-world readback separately before telling a user a tool action succeeded.",
      "published": "2026-09-27",
      "updated": "2026-09-27",
      "url": "https://botbento.com/blog/mcp-tool-result-success-signal/",
      "word_count": 911,
      "sources_checked": "2026-09-27"
    },
    {
      "slug": "verify-ai-agent-task-completion",
      "kind": "blog",
      "title": "How Do You Verify an AI Agent Actually Finished the Task?",
      "description": "A bot saying 'done' is not proof. Here is how to check completion independently, with a worked example and what evidence to keep.",
      "published": "2026-09-26",
      "updated": "2026-09-26",
      "url": "https://botbento.com/blog/verify-ai-agent-task-completion/",
      "word_count": 707,
      "sources_checked": "2026-09-26"
    },
    {
      "slug": "supervisor-agent-vs-single-agent-tools",
      "kind": "blog",
      "title": "When Should a Bot Use a Supervisor Agent Instead of One Agent With Tools?",
      "description": "A concrete rule for choosing between one agent with many tools and a supervisor that delegates to specialist agents, with a worked example.",
      "published": "2026-09-26",
      "updated": "2026-09-26",
      "url": "https://botbento.com/blog/supervisor-agent-vs-single-agent-tools/",
      "word_count": 712,
      "sources_checked": "2026-09-26"
    },
    {
      "slug": "weekly-field-notes-2026-09-25",
      "kind": "newsletters",
      "title": "Weekly field notes: recover a bot without guessing",
      "description": "This week’s BotBento field notes cover MCP deprecations, rate-limit recovery, and how to make a retry safe before an agent acts again.",
      "published": "2026-09-25",
      "updated": "2026-09-25",
      "url": "https://botbento.com/newsletters/weekly-field-notes-2026-09-25/",
      "word_count": 386,
      "sources_checked": "2026-09-25"
    },
    {
      "slug": "mcp-sampling-deprecated",
      "kind": "blog",
      "title": "MCP Sampling Is Deprecated. What Should Bot Builders Do Now?",
      "description": "MCP's sampling feature, which let servers ask your client to run an LLM call, is now deprecated. Here is what that means for bots built on it.",
      "published": "2026-09-25",
      "updated": "2026-09-25",
      "url": "https://botbento.com/blog/mcp-sampling-deprecated/",
      "word_count": 784,
      "sources_checked": "2026-09-25"
    },
    {
      "slug": "ai-bot-rate-limit-error-handling",
      "kind": "blog",
      "title": "How Should an AI Bot Handle a Tool's Rate Limit Error?",
      "description": "Learn how an AI bot should classify rate limits, honor Retry-After, retry safely with jitter and a cap, and report an unfinished tool action.",
      "published": "2026-09-25",
      "updated": "2026-09-25",
      "url": "https://botbento.com/blog/ai-bot-rate-limit-error-handling/",
      "word_count": 739,
      "sources_checked": "2026-09-25"
    },
    {
      "slug": "mcp-elicitation-mid-task-permissions",
      "kind": "blog",
      "title": "What Can an MCP Tool Ask You For Mid-Task, and What Can't It?",
      "description": "MCP elicitation lets a connected tool pause and ask a question mid-task. Here's what the spec allows it to request, and what it must route elsewhere.",
      "published": "2026-09-24",
      "updated": "2026-09-24",
      "url": "https://botbento.com/blog/mcp-elicitation-mid-task-permissions/",
      "word_count": 838,
      "sources_checked": "2026-09-24"
    },
    {
      "slug": "agent-tool-retry-idempotency-keys",
      "kind": "blog",
      "title": "How Do You Stop a Retried Tool Call From Running Twice?",
      "description": "A timed-out tool call can secretly succeed. See why MCP's idempotentHint doesn't protect you, and what an idempotency key actually does.",
      "published": "2026-09-24",
      "updated": "2026-09-24",
      "url": "https://botbento.com/blog/agent-tool-retry-idempotency-keys/",
      "word_count": 930,
      "sources_checked": "2026-09-24"
    },
    {
      "slug": "reviewing-ai-generated-research-notes",
      "kind": "blog",
      "title": "How Do You Review an AI-Generated Research Note?",
      "description": "A practical checklist for checking source ownership, dates, contradictions and unresolved questions in AI-drafted research notes before you rely on them.",
      "published": "2026-09-23",
      "updated": "2026-09-23",
      "url": "https://botbento.com/blog/reviewing-ai-generated-research-notes/",
      "word_count": 700,
      "sources_checked": "2026-09-23"
    },
    {
      "slug": "mcp-resource-indicator-requirement",
      "kind": "blog",
      "title": "MCP Resource Indicators: What Your Bot's OAuth Tokens Must Specify",
      "description": "MCP's HTTP authorization spec requires OAuth resource indicators. Learn what they protect, where implementation can fail, and what to check before connecting a bot.",
      "published": "2026-09-23",
      "updated": "2026-09-23",
      "url": "https://botbento.com/blog/mcp-resource-indicator-requirement/",
      "word_count": 907,
      "sources_checked": "2026-09-23"
    },
    {
      "slug": "plugin-vs-authorized-connection",
      "kind": "blog",
      "title": "Plugin or authorized connection: what's actually different?",
      "description": "Installing a tool on a bot and letting it act on your data are two separate steps. Here is where the line sits, with a worked example.",
      "published": "2026-09-20",
      "updated": "2026-09-20",
      "url": "https://botbento.com/blog/plugin-vs-authorized-connection/",
      "word_count": 1073,
      "sources_checked": "2026-09-20"
    },
    {
      "slug": "people-and-bots-in-one-room",
      "kind": "blog",
      "title": "Why we are building BotBento around people, not just bots",
      "description": "Grok Bot's group chats hold bots only. BotBento is built so people and bots share one room under one permission model. Here is the reasoning and the honest status.",
      "published": "2026-09-20",
      "updated": "2026-09-20",
      "url": "https://botbento.com/blog/people-and-bots-in-one-room/",
      "word_count": 813,
      "sources_checked": "2026-09-20"
    },
    {
      "slug": "weekly-field-notes-2026-09-11",
      "kind": "newsletters",
      "title": "Weekly field notes: make an agent’s next step checkable",
      "description": "This week’s BotBento field notes cover run records, local versus cloud placement and a practical checklist for deciding what an agent should do next.",
      "published": "2026-09-11",
      "updated": "2026-09-11",
      "url": "https://botbento.com/newsletters/weekly-field-notes-2026-09-11/",
      "word_count": 336,
      "sources_checked": "2026-09-11"
    },
    {
      "slug": "test-calendar-ai-agent",
      "kind": "blog",
      "title": "How do you test an AI agent that uses a calendar?",
      "description": "Test a calendar AI agent with a disposable event, explicit time zone, denied write and revoked connection. Check the saved result before trusting its reply.",
      "published": "2026-09-10",
      "updated": "2026-09-10",
      "url": "https://botbento.com/blog/test-calendar-ai-agent/",
      "word_count": 989,
      "sources_checked": "2026-09-10"
    },
    {
      "slug": "ai-agent-stopping-rules",
      "kind": "blog",
      "title": "What belongs in an AI agent stopping rule?",
      "description": "Define when an AI agent should finish, pause or stop at a limit, with an illustrative research task and practical checks for loops and unresolved work.",
      "published": "2026-09-10",
      "updated": "2026-09-10",
      "url": "https://botbento.com/blog/ai-agent-stopping-rules/",
      "word_count": 876,
      "sources_checked": "2026-09-10"
    },
    {
      "slug": "local-vs-cloud-ai-agents",
      "kind": "blog",
      "title": "Local or cloud: where should your AI agent run?",
      "description": "Choose where an AI agent runs by separating its model, tools and scheduler. Compare local, cloud and hybrid setups with a practical decision checklist.",
      "published": "2026-09-08",
      "updated": "2026-09-08",
      "url": "https://botbento.com/blog/local-vs-cloud-ai-agents/",
      "word_count": 1014,
      "sources_checked": "2026-09-08"
    },
    {
      "slug": "ai-agent-run-result-record",
      "kind": "blog",
      "title": "What should an AI agent record after each run?",
      "description": "Design a useful AI agent run record with evidence, partial results, retry decisions and clear next steps, using an illustrative research routine.",
      "published": "2026-09-08",
      "updated": "2026-09-08",
      "url": "https://botbento.com/blog/ai-agent-run-result-record/",
      "word_count": 971,
      "sources_checked": "2026-09-08"
    },
    {
      "slug": "mcp-tool-permissions",
      "kind": "blog",
      "title": "MCP tool permissions: what to check before connecting a bot",
      "description": "Understand MCP servers, authorization and tool approval with an illustrative calendar example and a practical connection review checklist.",
      "published": "2026-09-07",
      "updated": "2026-09-07",
      "url": "https://botbento.com/blog/mcp-tool-permissions/",
      "word_count": 999,
      "sources_checked": "2026-09-07"
    },
    {
      "slug": "launch-edition-a-place-to-start",
      "kind": "newsletters",
      "title": "The launch edition: a place to start with AI bots",
      "description": "The first BotBento newsletter introduces two practical guides, a small exercise for your next bot and the current early-access product status.",
      "published": "2026-09-07",
      "updated": "2026-09-07",
      "url": "https://botbento.com/newsletters/launch-edition-a-place-to-start/",
      "word_count": 366,
      "sources_checked": "2026-09-07"
    },
    {
      "slug": "ai-agents-vs-workflows",
      "kind": "blog",
      "title": "AI agents vs workflows: choose who decides the next step",
      "description": "A practical way to choose between an AI agent and a fixed workflow, with a weekly research example, stopping rules and an evaluation checklist.",
      "published": "2026-09-07",
      "updated": "2026-09-07",
      "url": "https://botbento.com/blog/ai-agents-vs-workflows/",
      "word_count": 977,
      "sources_checked": "2026-09-07"
    }
  ]
}
