{"id":1228,"date":"2026-03-19T09:32:31","date_gmt":"2026-03-19T16:32:31","guid":{"rendered":"https:\/\/www.kenwalger.com\/blog\/?p=1228"},"modified":"2026-03-10T10:09:16","modified_gmt":"2026-03-10T17:09:16","slug":"mcp-multi-agent-orchestration-forensics","status":"publish","type":"post","link":"https:\/\/www.kenwalger.com\/blog\/ai\/mcp-multi-agent-orchestration-forensics\/","title":{"rendered":"The Forensic Team: Architecting Multi-Agent Handoffs with MCP"},"content":{"rendered":"<h3>Why One LLM Isn&#8217;t Enough\u2014And How to Build a Specialized Agentic Workforce<\/h3>\n<p>In my <a href=\"https:\/\/www.kenwalger.com\/blog\/ai\/mcp-usb-c-moment-ai-architecture\/\">last post<\/a>, we explored the &#8220;Zero-Glue&#8221; architecture of the Model Context Protocol (MCP). We established that standardizing how AI &#8220;talks&#8221; to data via an MCP Server is the &#8220;USB-C moment&#8221; for AI infrastructure.<\/p>\n<p>But once you have the pipes, how do you build the engine?<\/p>\n<p>In 2026, the answer is no longer &#8220;one giant system prompt.&#8221; Instead, it\u2019s <em>Functional Specialization<\/em>. Today, we\u2019re building a <strong>Multi-Agent Forensic Team:<\/strong> a group of specialized Python agents that use our TypeScript MCP Server to perform deep-dive archival audits.<\/p>\n<h2>The &#8220;Context Fatigue&#8221; Problem<\/h2>\n<p>Early agent architectures relied on a single LLM handling everything:<\/p>\n<ul>\n<li>retrieve data<\/li>\n<li>reason about it<\/li>\n<li>run tools<\/li>\n<li>write the final output<\/li>\n<\/ul>\n<p>Even with large context windows, this approach quickly hits a <strong>reasoning ceiling<\/strong>.<\/p>\n<p>A single agent juggling too many tools often suffers from:<\/p>\n<ol>\n<li><strong>Tool Confusion<\/strong><br \/>\nChoosing the wrong function when multiple tools are available.<\/li>\n<li><strong>Logic Drift<\/strong><br \/>\nLosing track of the objective during multi-step reasoning.<\/li>\n<li><strong>Latency and Cost<\/strong><br \/>\nSequential reasoning loops increase response time and token usage.<\/li>\n<\/ol>\n<p>The solution is <strong>functional specialization<\/strong>.<\/p>\n<p>Instead of one overloaded agent, we build a <strong>team of focused agents coordinated by a supervisor<\/strong>.<\/p>\n<p>Before diving into the multi-agent design, it helps to understand where the agents live in the MCP stack.<\/p>\n<p><em>Figure 1. The MCP architecture stack: agents reason about tasks while MCP standardizes access to tools, resources, and enterprise data.<\/em><\/p>\n<figure id=\"attachment_1226\" aria-describedby=\"caption-attachment-1226\" style=\"width: 191px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1226\" data-permalink=\"https:\/\/www.kenwalger.com\/blog\/ai\/mcp-usb-c-moment-ai-architecture\/attachment\/mcp-ai-architecture-stack-diagram\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-ai-architecture-stack-diagram-scaled.png?fit=479%2C2560&amp;ssl=1\" data-orig-size=\"479,2560\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"mcp-ai-architecture-stack-diagram\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;The MCP architecture stack: agents reason about tasks while MCP standardizes access to tools, resources, and enterprise data.&lt;\/p&gt;\n\" data-large-file=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-ai-architecture-stack-diagram-scaled.png?fit=191%2C1024&amp;ssl=1\" class=\"size-large wp-image-1226\" src=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-ai-architecture-stack-diagram.png?resize=191%2C1024&#038;ssl=1\" alt=\"Layered architecture diagram of an MCP-based AI system showing applications, agent orchestration, the Model Context Protocol layer, tools and resources, and underlying data systems.\" width=\"191\" height=\"1024\" srcset=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-ai-architecture-stack-diagram-scaled.png?resize=191%2C1024&amp;ssl=1 191w, https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-ai-architecture-stack-diagram-scaled.png?resize=56%2C300&amp;ssl=1 56w, https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-ai-architecture-stack-diagram-scaled.png?zoom=2&amp;resize=191%2C1024&amp;ssl=1 382w\" sizes=\"auto, (max-width: 191px) 85vw, 191px\" \/><figcaption id=\"caption-attachment-1226\" class=\"wp-caption-text\">The MCP architecture stack: agents reason about tasks while MCP standardizes access to tools, resources, and enterprise data.<\/figcaption><\/figure>\n<h2>The Architecture: A Polyglot Powerhouse<\/h2>\n<p>One of MCP\u2019s strengths is that it <strong>decouples tools from orchestration<\/strong>.<\/p>\n<p>This allows each layer of the system to use the language best suited for the job.<\/p>\n<p>In our case:<\/p>\n<ul>\n<li><strong>The &#8220;Hands&#8221; (TypeScript)<\/strong><br \/>\nOur MCP server handles data access and tool execution with strong typing.<\/li>\n<li><strong>The &#8220;Brain&#8221; (Python)<\/strong><br \/>\nA Python orchestrator manages reasoning and agent coordination using frameworks like LangGraph or PydanticAI.<\/li>\n<\/ul>\n<p>Because both layers communicate through MCP, <strong>the language boundary disappears<\/strong>.<\/p>\n<p><strong>Multi-Agent MCP Architecture<\/strong><\/p>\n<figure id=\"attachment_1231\" aria-describedby=\"caption-attachment-1231\" style=\"width: 840px\" class=\"wp-caption aligncenter\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" data-attachment-id=\"1231\" data-permalink=\"https:\/\/www.kenwalger.com\/blog\/ai\/mcp-multi-agent-orchestration-forensics\/attachment\/mcp-multi-agent-architecture-supervisor-pattern\/\" data-orig-file=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?fit=2029%2C444&amp;ssl=1\" data-orig-size=\"2029,444\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"mcp-multi-agent-architecture-supervisor-pattern\" data-image-description=\"\" data-image-caption=\"&lt;p&gt;Multi-agent MCP architecture: a Python supervisor coordinates specialized agents that access tools through a shared MCP server.&lt;\/p&gt;\n\" data-large-file=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?fit=840%2C184&amp;ssl=1\" class=\"size-large wp-image-1231\" src=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?resize=840%2C184&#038;ssl=1\" alt=\"Diagram showing a multi-agent architecture using the Model Context Protocol (MCP) with a Python supervisor agent coordinating Librarian and Analyst agents that access tools through a TypeScript MCP server connected to an archive database.\" width=\"840\" height=\"184\" srcset=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?resize=1024%2C224&amp;ssl=1 1024w, https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?resize=300%2C66&amp;ssl=1 300w, https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?resize=768%2C168&amp;ssl=1 768w, https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?resize=1536%2C336&amp;ssl=1 1536w, https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?resize=1200%2C263&amp;ssl=1 1200w, https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?w=2029&amp;ssl=1 2029w, https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/uploads\/2026\/03\/mcp-multi-agent-architecture-supervisor-pattern.png?w=1680&amp;ssl=1 1680w\" sizes=\"auto, (max-width: 709px) 85vw, (max-width: 909px) 67vw, (max-width: 1362px) 62vw, 840px\" \/><figcaption id=\"caption-attachment-1231\" class=\"wp-caption-text\">Multi-agent MCP architecture: a Python supervisor coordinates specialized agents that access tools through a shared MCP server.<\/figcaption><\/figure>\n<p>Each agent communicates with tools through the MCP server, not directly with the data source.<\/p>\n<h3>The Forensic Team Roles:<\/h3>\n<table>\n<thead>\n<tr>\n<th>Role<\/th>\n<th>Agent Identity<\/th>\n<th>Primary Responsibility<\/th>\n<th>MCP Tools Used<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Supervisor<\/strong><\/td>\n<td><strong>The Orchestrator<\/strong><\/td>\n<td>Receives request, manages state, and handles handoffs.<\/td>\n<td><code>list_tools<\/code>, <code>list_resources<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>Librarian<\/strong><\/td>\n<td><strong>The Researcher<\/strong><\/td>\n<td>Gathers historical facts and archival metadata<\/td>\n<td><code>find_book_in_master_bibliography<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>Analyst<\/strong><\/td>\n<td><strong>The Forensic Tech<\/strong><\/td>\n<td>Compares observed data against metadata to find flaws<\/td>\n<td><code>audit_artifact_consistency<\/code><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h2>How It Works: Glue-Free Agent Handoffs<\/h2>\n<p>The beauty of MCP is the <em>Transport Layer<\/em>. Our Python client connects to the TypeScript server via <code>stdio<\/code>. It doesn&#8217;t care that the server is written in Node.js; it only cares about the protocol.<\/p>\n<ol>\n<li><strong>Spawning the Sub-process<\/strong><br \/>\nIn our <code>orchestrator.py<\/code>, we define how to &#8220;wake up&#8221; the TypeScript server. Notice how we point Python directly at the Node.js build:<\/li>\n<\/ol>\n<pre><code class=\"language-python\">def get_server_params() -&gt; StdioServerParameters:\n    # This is the bridge: Python spawning a Node.js process\n    return StdioServerParameters(\n        command=\"node\",\n        args=[str(SERVER_ENTRY)], # Points to our TS \/build\/index.js\n        cwd=str(PROJECT_ROOT),\n    )\n<\/code><\/pre>\n<ol>\n<li><strong>The Functional Handoff<\/strong><br \/>\nBecause MCP tools expose strict schemas, the agents can pass structured results between each other without custom translation layers.<\/li>\n<\/ol>\n<p>The Supervisor doesn&#8217;t manually parse JSON or remap fields.<\/p>\n<p>Instead it simply chains the outputs:<\/p>\n<pre><code class=\"language-python\"># 1. Librarian: pull book details\nlibrarian_result = await librarian_agent(session, title, author)\n\n# 2. Analyst: audit for discrepancies (using Librarian's data)\nanalyst_result = await analyst_agent(\n    session, book_page_id, book_standard, observed\n)\n<\/code><\/pre>\n<h3>Why This Wins in the Enterprise:<\/h3>\n<p><strong>Auditability<\/strong><\/p>\n<p>You can track exactly what each agent saw and what conclusions it produced.<\/p>\n<p><strong>Security<\/strong><\/p>\n<p>Agent permissions can be scoped by tool access.<br \/>\nThe Librarian may only read archives, while the Analyst writes forensic reports.<\/p>\n<p><strong>Maintainability<\/strong><\/p>\n<p>Each agent owns a single responsibility.<br \/>\nIf the forensic logic changes, only the Analyst agent needs to be updated.<\/p>\n<h2>Scaling to the &#8220;AI Mesh&#8221;<\/h2>\n<p>By using MCP as the backbone, you\u2019ve built more than an app; you\u2019ve built a System of Intelligence. Any new tool you add to your TypeScript server is instantly &#8220;discoverable&#8221; by your Python team. You are no longer writing &#8220;Glue Code&#8221;; you are orchestrating a digital workforce.<\/p>\n<p>The MCP server becomes the shared capability layer for your entire AI system.<\/p>\n<p>\ud83d\udcda The &#8220;Zero-Glue&#8221; Series<br \/>\n&#8211; Post 1: <a href=\"https:\/\/www.kenwalger.com\/blog\/ai\/mcp-usb-c-moment-ai-architecture\/\">The End of Glue Code: Why MCP is the USB-C Moment for AI<\/a><br \/>\n&#8211; Post 2: The Forensic Team: Architecting Multi-Agent Handoffs &#8211; <em>You are here<\/em><br \/>\n&#8211; Post 3: From Cloud to Laptop: Running MCP Agents with SLMs &#8211; <em>Coming Soon<\/em><br \/>\n&#8211; Post 4: Enterprise Governance: Scaling MCP with Oracle 26ai &#8211; <em>Coming Soon<\/em><\/p>\n<h3>Explore the Code:<\/h3>\n<p>The full multi-agent orchestrator is now live in the <code>\/examples<\/code> folder of the repo:<br \/>\n\ud83d\udc49 MCP Forensic Analyzer &#8211; <a href=\"https:\/\/github.com\/kenwalger\/mcp-forensic-analyzer\/tree\/main\/examples\">Multi-Agent Example<\/a><\/p>\n<h3>Up Next in the Series:<\/h3>\n<p>Next week, we go small. We\u2019re moving the &#8220;Forensic Team&#8221; out of the cloud and onto your laptop. We\u2019ll explore Edge AI and how to run this entire stack using Small Language Models (SLMs) like Phi-4\u2014no $10,000 GPU required.<\/p>\n<a class=\"synved-social-button synved-social-button-share synved-social-size-48 synved-social-resolution-single synved-social-provider-facebook nolightbox\" data-provider=\"facebook\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Facebook\" href=\"https:\/\/www.facebook.com\/sharer.php?u=https%3A%2F%2Fwww.kenwalger.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1228&#038;t=The%20Forensic%20Team%3A%20Architecting%20Multi-Agent%20Handoffs%20with%20MCP&#038;s=100&#038;p&#091;url&#093;=https%3A%2F%2Fwww.kenwalger.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1228&#038;p&#091;images&#093;&#091;0&#093;=https%3A%2F%2Fwww.kenwalger.com%2Fblog%2Fwp-content%2Fuploads%2F2026%2F03%2Fmcp-ai-architecture-stack-diagram-191x1024.png&#038;p&#091;title&#093;=The%20Forensic%20Team%3A%20Architecting%20Multi-Agent%20Handoffs%20with%20MCP\" style=\"font-size: 0px;width:48px;height:48px;margin:0;margin-bottom:5px;margin-right:5px\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" alt=\"Facebook\" title=\"Share on Facebook\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"48\" height=\"48\" style=\"display: inline;width:48px;height:48px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/96x96\/facebook.png?resize=48%2C48&#038;ssl=1\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-48 synved-social-resolution-single synved-social-provider-twitter nolightbox\" data-provider=\"twitter\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Twitter\" href=\"https:\/\/twitter.com\/intent\/tweet?url=https%3A%2F%2Fwww.kenwalger.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1228&#038;text=Hey%20check%20this%20out\" style=\"font-size: 0px;width:48px;height:48px;margin:0;margin-bottom:5px;margin-right:5px\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" alt=\"twitter\" title=\"Share on Twitter\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"48\" height=\"48\" style=\"display: inline;width:48px;height:48px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/96x96\/twitter.png?resize=48%2C48&#038;ssl=1\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-48 synved-social-resolution-single synved-social-provider-reddit nolightbox\" data-provider=\"reddit\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Reddit\" href=\"https:\/\/www.reddit.com\/submit?url=https%3A%2F%2Fwww.kenwalger.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1228&#038;title=The%20Forensic%20Team%3A%20Architecting%20Multi-Agent%20Handoffs%20with%20MCP\" style=\"font-size: 0px;width:48px;height:48px;margin:0;margin-bottom:5px;margin-right:5px\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" alt=\"reddit\" title=\"Share on Reddit\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"48\" height=\"48\" style=\"display: inline;width:48px;height:48px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/96x96\/reddit.png?resize=48%2C48&#038;ssl=1\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-48 synved-social-resolution-single synved-social-provider-linkedin nolightbox\" data-provider=\"linkedin\" target=\"_blank\" rel=\"nofollow\" title=\"Share on Linkedin\" href=\"https:\/\/www.linkedin.com\/shareArticle?mini=true&#038;url=https%3A%2F%2Fwww.kenwalger.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1228&#038;title=The%20Forensic%20Team%3A%20Architecting%20Multi-Agent%20Handoffs%20with%20MCP\" style=\"font-size: 0px;width:48px;height:48px;margin:0;margin-bottom:5px;margin-right:5px\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" alt=\"linkedin\" title=\"Share on Linkedin\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"48\" height=\"48\" style=\"display: inline;width:48px;height:48px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/96x96\/linkedin.png?resize=48%2C48&#038;ssl=1\" \/><\/a><a class=\"synved-social-button synved-social-button-share synved-social-size-48 synved-social-resolution-single synved-social-provider-mail nolightbox\" data-provider=\"mail\" rel=\"nofollow\" title=\"Share by email\" href=\"mailto:?subject=The%20Forensic%20Team%3A%20Architecting%20Multi-Agent%20Handoffs%20with%20MCP&#038;body=Hey%20check%20this%20out:%20https%3A%2F%2Fwww.kenwalger.com%2Fblog%2Fwp-json%2Fwp%2Fv2%2Fposts%2F1228\" style=\"font-size: 0px;width:48px;height:48px;margin:0;margin-bottom:5px\"><img data-recalc-dims=\"1\" loading=\"lazy\" decoding=\"async\" alt=\"mail\" title=\"Share by email\" class=\"synved-share-image synved-social-image synved-social-image-share\" width=\"48\" height=\"48\" style=\"display: inline;width:48px;height:48px;margin: 0;padding: 0;border: none;box-shadow: none\" src=\"https:\/\/i0.wp.com\/www.kenwalger.com\/blog\/wp-content\/plugins\/social-media-feather\/synved-social\/image\/social\/regular\/96x96\/mail.png?resize=48%2C48&#038;ssl=1\" \/><\/a>","protected":false},"excerpt":{"rendered":"<p>Why One LLM Isn&#8217;t Enough\u2014And How to Build a Specialized Agentic Workforce In my last post, we explored the &#8220;Zero-Glue&#8221; architecture of the Model Context Protocol (MCP). We established that standardizing how AI &#8220;talks&#8221; to data via an MCP Server is the &#8220;USB-C moment&#8221; for AI infrastructure. But once you have the pipes, how do &hellip; <a href=\"https:\/\/www.kenwalger.com\/blog\/ai\/mcp-multi-agent-orchestration-forensics\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;The Forensic Team: Architecting Multi-Agent Handoffs with MCP&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"pmpro_default_level":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[1669,1670],"tags":[1681,1680,1679,78,1683,1684],"yst_prominent_words":[],"class_list":["post-1228","post","type-post","status-publish","format-standard","hentry","category-ai","category-mcp","tag-ai-agents","tag-mcp","tag-multi-agent-systems","tag-python","tag-software-architecture","tag-typscript","pmpro-has-access"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/p8lx70-jO","jetpack-related-posts":[],"_links":{"self":[{"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/posts\/1228","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/comments?post=1228"}],"version-history":[{"count":3,"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/posts\/1228\/revisions"}],"predecessor-version":[{"id":1232,"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/posts\/1228\/revisions\/1232"}],"wp:attachment":[{"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/media?parent=1228"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/categories?post=1228"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/tags?post=1228"},{"taxonomy":"yst_prominent_words","embeddable":true,"href":"https:\/\/www.kenwalger.com\/blog\/wp-json\/wp\/v2\/yst_prominent_words?post=1228"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}