{
  "source_file": "0930",
  "source_platform": "Substack",
  "author": "SwirlAI Newsletter\nAurimas Griciūnas",
  "title_listed": "State of Context Engineering in 2026",
  "keywords": "上下文工程, Context Window, Token管理, RAG优化, Prompt压缩",
  "domain": "大模型算法",
  "content_type": "状态报告",
  "is_paid_flag": "免费",
  "url": "https://www.newsletter.swirlai.com/p/state-of-context-engineering-in-2026",
  "publish_date": "2026",
  "corpus_stage": "RAG/工程",
  "notes": "2026年上下文工程全景报告：Context Window管理、RAG与Prompt压缩最佳实践",
  "id": "c1da0956c94e",
  "collected_at": "2026-10-01T20:26:43",
  "title": "State of Context Engineering in 2026 - by Aurimas Griciūnas",
  "body_markdown": "👋\nI am\nAurimas\n. I write the SwirlAI Newsletter with the goal of presenting complicated Data related concepts in a simple and easy-to-digest way. My mission is to help You UpSkill and keep You updated on the latest news in AI Engineering, Data Engineering, Machine Learning and overall Data space.\nSwirlAI Newsletter is a reader-supported publication. To receive new posts and support my work, consider becoming a subscriber.\nSubscribe\nContext engineering has gone from a niche concern to the core discipline of AI engineering in under a year. In mid-2025, two posts laid much of the groundwork. Manus shared lessons from rebuilding their agent framework four times (July 2025). Anthropic followed with their guide on effective context engineering for agents (September 2025). That was eight months ago. The patterns they described have since matured and were adopted across platforms.\nI previously wrote about the foundations of context engineering in one of my previous articles:\nBreaking Down Context Engineering\nAurimas Griciūnas\n·\nAugust 30, 2025\nRead full story\nThis piece focuses on what has changed since then, the patterns that have matured, and the tradeoffs you need to understand as an AI engineer.\nWhy Context Engineering Matters More Than Model Capability\nThe core insight is simple. LLMs have a finite attention budget. Every token in the context window competes for that attention. As context grows, precision drops, reasoning weakens, and the model starts missing information it should catch. Research calls this “lost-in-the-middle” and “needle in the haystack“ problems.\nAnthropic frames it well: context engineering means finding the smallest possible set of high-signal tokens that maximise the likelihood of desired outcomes. The discipline covers everything that lands in the context window: system instructions, tool definitions, MCP resources, retrieved documents, conversation history, and accumulated action history.\nThe Context Window\nSeveral patterns have emerged for managing context effectively: progressive disclosure for controlling what loads and when, compression for shrinking accumulated history, routing for directing queries to the right source, evolved retrieval strategies for getting external knowledge on demand, and tool management for controlling the capability surface.\nContext Engineering Patterns\nEach addresses a different dimension of the problem. The rest of this piece breaks them down.\nI ran a live workshop on this topic where I walked through these patterns.\nWatch The Recording\nPattern 1: Progressive Disclosure and Agent Skills\nThe problem\nAn agent that handles customer support, billing, refunds, and onboarding needs instructions for all four domains. Loading all instructions upfront wastes most of the context window on irrelevant guidance. The traditional alternative, spinning up separate specialised sub-agents, adds orchestration complexity, duplicates shared logic, and introduces latency from inter-agent communication. Neither scales well as the number of domains grows.\nWhat the pattern does\nProgressive disclosure loads information in tiers based on relevance. Discovery first (just names and descriptions), activation when relevant (full instructions), execution only during the task (scripts and reference materials).\nAgent Skills are the standard implementation. I covered them in depth in my previous piece:\nAgent Skills: Progressive Disclosure as a System Design Pattern\nAurimas Griciūnas\n·\nMar 11\nRead full story\nThe short version: a skill is a markdown file with YAML frontmatter. The platform reads only the name and description at startup (~80 tokens median per skill). When the model determines a skill is relevant, the full instruction body loads (275 to 8,000 tokens). Supporting scripts and reference materials load only during execution. The format was released by Anthropic in December 2025 and adopted by OpenAI, Google, GitHub, and Cursor within weeks.\nThe most interesting application is agent identity management. Rather than routing queries to separate specialised sub-agents, a single agent assumes different identities on demand. At rest, it has a base identity. When a task activates a skill, the agent adopts that skill’s instructions, constraints, tone, and behavioral patterns. When the task completes, it returns to base. This is what Claude Code already does. It does not spin up a separate “PDF agent” and a “spreadsheet agent.” It is one agent that activates the relevant skill, shifting its identity to match.\nAgent Skills are not only for coding agents. The pattern generalises to customer support, internal operations, research agents, and any system where agents need broad capability with focused execution. Because skills are plain English markdown, domain experts and team leads can configure agent behavior directly, without engineering expertise.\nAn interesting extension: agents that write their own skills. When an agent encounters a task it handles repeatedly, it can extract the pattern into a new skill file. Claude Code supports this through its skill-creator skill. The agent observes its own successful behavior, generalises it, and makes it available for future sessions. The quality of self-authored skills varies, but the direction closes the loop: humans write the initial skills, agents extend the library from experience.\nTradeoffs.\nAccuracy\n: High with a small skill set, but degrades with 100+ as overlapping descriptions cause misactivation.\nLatency\n: Low. Discovery data is pre-loaded, activation adds a file read, not an LLM call.\nToken cost\n: Low at rest (all 17 Anthropic skills cost ~1,700 tokens at discovery), but accumulates during a session. The key unsolved question: when does an activated skill get deactivated? Without explicit pruning logic, multiple activated skills destroy the token advantage over time.\nMaintainability\n: Easy per skill, harder at scale. 50+ skills with non-overlapping descriptions requires governance.\nReliability\n: Moderate. Skill selection errors compound downstream, and the entire approach depends on selection accuracy at the discovery layer.\nSubscribe\nPattern 2: Context Compression\nThe problem\nEvery tool call, every observation, every reasoning step adds to the context. Each tool result can be hundreds or thousands of tokens: API responses, file contents, search results, error traces. Without intervention, the accumulated action history fills the context window and pushes out the system instructions, tool definitions, and early task context that the model actually needs to reason well.\nA good example to showcase this is a simple ReAct agent as displayed in the image below:\nReAct Agent Context Bloat\nConstruct a prompt from system instructions and available tools.\nUser query added to the initial prompt and passed to a LLM triggers the LLM to output either the final answer to the users query or plan additional actions via tool use in the environment.\nIf tool use is chosen, the tools get executed.\nThe results piped back to the initial prompt by appending them to the reasoning and action history.\nThen we repeat the loop for N times or until the users query can be answered.\nEach of the turns adds to the context as conversation history expands. This is extremely troublesome when the tools are retrieving large amounts of context.\nWhat the pattern does\nContext compression shrinks accumulated history while preserving the information the model needs. There are few approaches of how the compressions could be handled:\nKeep only top N turns of interaction, discard the remaining.\nSliding window compression: keep top N turns unchanged, compress the remaining using LLMs.\nLong-term Memory approach: keep top N turns unchanged, move the remaining history to a durable storage and retrieve only relevant actions on-demand.\nConversation and Action History Compression\nThe field has converged on sliding window plus summarisation hybrids as the dominant approach: keep recent turns in full detail, compress older context through LLM-based summarisation.\nManus adds two practical details. First, keep the most recent tool calls in raw format so the model maintains its \"rhythm\" and formatting style. Losing that rhythm leads to subtle degradation. Second, do not compress away error traces. When a tool call fails, leaving the error and stack trace in context helps the model avoid repeating the same mistake. This technique is well-established (libraries like Instructor use it for structured output retries), and it applies broadly to any agent that calls tools.\nTradeoffs.\nAccuracy\n: Moderate. Summarisation preserves the gist but loses details, and any compression is lossy.\nLatency\n: Moderate. Each compression step requires an LLM call. You can amortise this by compressing periodically instead of each new turn.\nToken cost\n: Low in many cases when long running agents are involved.\nMaintainability\n: Requires experimentation: what to keep raw, how many turns before compacting, what detail level in summaries.\nReliability\n: Moderate. Works well for long-horizon tasks, but poorly when critical early details get summarised away.\nLearn these patterns hands-on in my End-to-end AI Engineering Bootcamp (3 days left to register before next cohort starts). Apply code\nLASTCHANCE15\nfor 15% off.\nRegister Here\nPattern 3: Context Routing\nThe problem\nA multi-domain agent has access to multiple knowledge bases, tool sets, and instruction sets. Loading all of them for every query wastes context and degrades accuracy. A billing question does not need the onboarding knowledge base. A technical support query does not need the refund policy.\nWhat the pattern does\nContext routing classifies the query and directs it to the right context source before anything enters the context window. Several approaches have emerged:\nLLM-powered routing\nuses the model itself to classify the query and select the appropriate context source. More accurate than rule-based approaches, but adds latency and cost.\nHierarchical routing\nuses a lead agent to triage queries to specialised sub-agents, each with its own focused context window.\nRule-based routing\nuses keyword matching or pattern detection. Fast and predictable, but rigid and unreliable when queries don’t match expected patterns.\nHybrid routing\ncombines multiple methods.\nTradeoffs.\nAccuracy\n: High for LLM-based routing, moderate for rule-based. LLM routing understands nuance, rule-based misses anything outside expected patterns.\nLatency\n: Varied. LLM routing adds an inference call before the main task. Rule-based is near-instant. Most production systems combine both.\nToken cost\n: Savings come downstream: by loading only relevant context, you reduce tokens for the main inference.\nMaintainability\n: Rule-based routing requires manual updates for new domains. LLM routing adapts automatically but is harder to debug when it misroutes.\nReliability\n: LLM routing can hallucinate routing decisions. Fallback to a human or default agent is necessary.\nPattern 4: Retrieval Evolution\nThe problem\nAgents need knowledge that is not in their training data: company documents, product catalogs, policy updates, real-time data. The naive approach (retrieve similar text, stuff it into the prompt, generate) fails on complex queries. A question like “what themes emerge across this quarter’s customer feedback?” requires connecting information across multiple documents, something vector similarity search cannot do. A question where the first retrieval returns insufficient results needs a second attempt with a reformulated query, something a fixed pipeline cannot do.\nWhat the pattern does\nRAG has matured from fixed pipelines to agent-controlled retrieval loops. Three evolutions stand out.\nI wrote about evolution of RAG architectures in one of my previous articles:\nThe evolution of Modern RAG Architectures.\nAurimas Griciūnas\n·\nApril 7, 2025\nRead full story\nAgentic RAG\nputs retrieval under agent control. Instead of a fixed pipeline (query → vector search → inject → generate), the agent decides its own search strategy, can reformulate queries when results are insufficient, and iterates until confident. The retrieval loop replaces the retrieval pipeline.\nGraph RAG\nadds relational reasoning. Standard vector search finds similar text but cannot connect entities across documents. Graph-based approaches build entity-relationship graphs over the corpus, enabling thematic and relational questions that require connecting information across multiple sources.\nSelf-RAG\ntrains models to decide when to retrieve and to critique their own outputs. The model assesses whether it has enough information before answering, triggers retrieval only when needed, and evaluates the quality of retrieved results before using them.\nThe most advanced work combines all three:\nAgentic RAG +\nTradeoffs.\nAccuracy\n: The strongest dimension. Agent-controlled retrieval can reformulate queries, try multiple strategies, and iterate until confident.\nLatency\n: High. A single question might trigger three to five retrieval cycles.\nToken cost\n: High. Each cycle adds retrieved chunks to context plus the agent’s reasoning about strategy. Cost scales with question complexity.\nMaintainability\n: Moderate. Debugging “why did the agent choose this retrieval strategy?” is harder than debugging a fixed pipeline.\nReliability\n: Needs guardrails. Agentic RAG can over-retrieve on simple questions, so maximum retrieval rounds, confidence thresholds, and fallback to direct generation are essential.\nShare\nPattern 5: Tool and Capability Management\nThe problem\nAgents need tools to interact with the world: APIs, databases, file systems, search engines. Each tool requires a JSON schema definition that the model reads to understand what the tool does and how to call it. A single complex schema (nested objects, enums, parameter descriptions) can consume 500+ tokens. Connect a few MCP servers and you might reach 90+ tool definitions, over 50,000 tokens of schemas before the model starts reasoning. This is not a theoretical concern. OpenAI recommends fewer than 20 tools per agent, with accuracy degrading past 10.\nWhat the pattern does\nMCP (Model Context Protocol) has become the standard for connecting agents to external tools. Originally released by Anthropic in November 2024, it is now governed by the Agentic AI Foundation under the Linux Foundation.\nMCP solves the connection problem. The context cost problem remains unsolved.\nYou can read more about the protocol in one of my articles here:\nEverything you need to know about MCP.\nAurimas Griciūnas\n·\nMarch 15, 2025\nRead full story\nManus found a practical constraint: avoid dynamically adding or removing tools mid-iteration, because tool definitions sit near the front of the context, and any change invalidates the KV-cache for all subsequent actions.\nBeyond raw context cost, tool management introduces several open problems:\nDescription quality.\nThe model selects tools based on descriptions, but most MCP server authors write descriptions for humans, not models. Too vague and the model picks the wrong tool. Too verbose and you waste context on a single schema.\nTool overlap across MCP servers.\nTwo different servers might offer similar capabilities (two search tools, two file readers). Without deduplication or preference logic, the model picks arbitrarily.\nNo versioning for tool contracts.\nWhen an MCP server updates its tool schemas, the agent has no way to know. Stale descriptions in cache cause silent failures.\nSecurity surface scales with tool count.\nEach connected MCP server is an attack surface. Tool outputs can contain prompt injection attempts, and the more tools available, the larger the exposure.\nTradeoffs.\nAccuracy\n: Depends entirely on description quality, which is unsolved.\nLatency\n: Low for discovery, but changing tools mid-iteration invalidates the KV-cache, adding significant latency.\nToken cost\n: The biggest hidden cost in many agent systems. A single complex JSON schema can consume 500+ tokens. 90 tools means 50K+ tokens before any user interaction.\nMaintainability\n: MCP standardises the interface, but not description quality, schema conventions, or versioning.\nReliability\n: Moderate. Again, MCP standardises the interface but not the quality of the underlying tool. Each connected server expands the attack surface.\nPutting It Together\nThese patterns are not alternatives. In a production agent system, you layer them: progressive disclosure and tool management define what can enter the context window, routing and compression manage what stays during execution, retrieval brings in external knowledge on demand, and evaluation measures whether any of it is working. Each layer addresses a different failure mode.\nContext Engineering: Layered Architecture\nWhere to Start\nIf your agents run long tasks, add compression first. Hybrid sliding window (keep the latest N turns raw, summarise older ones) is the most practical starting point, and probe-based evaluation will tell you whether your summaries are preserving what matters.\nIf your agents serve multiple domains, add routing. Even keyword-based rules cut context bloat before you invest in LLM-based classification.\nIf your agents connect to multiple MCP servers, audit the token cost. Count how many tokens your tool schemas consume before any user interaction. That number is usually higher than expected.\nHope you enjoyed this piece and hope to see you in the next one, cheers!\nSubscribe\nPartner with SwirlAI\nShare\nAI Engineering Bootcamp",
  "metadata": {
    "title": "State of Context Engineering in 2026 - by Aurimas Griciūnas",
    "description": "Five patterns for managing what goes into the context window, and when.",
    "keywords": null,
    "author": "Aurimas Griciūnas",
    "og:type": "article",
    "og:title": "State of Context Engineering in 2026",
    "og:description": "Five patterns for managing what goes into the context window, and when.",
    "og:image": "https://substackcdn.com/image/fetch/$s_!82Y5!,w_1200,h_675,c_fill,f_jpg,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fd47b96f2-27c5-4b8b-abb5-12d3494b04f7_5738x3255.png",
    "og:url": "https://www.newsletter.swirlai.com/p/state-of-context-engineering-in-2026",
    "twitter:title": "State of Context Engineering in 2026",
    "twitter:description": "Five patterns for managing what goes into the context window, and when.",
    "twitter:image": "https://substackcdn.com/image/fetch/$s_!G1Xd!,f_auto,q_auto:best,fl_progressive:steep/https%3A%2F%2Fswirlai.substack.com%2Fapi%2Fv1%2Fpost_preview%2F191721101%2Ftwitter.jpg%3Fversion%3D4",
    "twitter:card": "summary_large_image",
    "article:modified_time": "2026-03-22T12:23:22.811Z"
  },
  "paywall": {
    "listed_paid": false,
    "detected": false,
    "marker": "",
    "public_only": false,
    "policy": "付费/会员内容只保留页面公开可见部分，不绕过付费墙"
  },
  "crawl": {
    "success": true,
    "status_code": 200,
    "error": ""
  },
  "code_blocks": [],
  "images": [
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!pyEk!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff8da46-fa9f-4589-89ac-46d5ed749787_836x568.png",
      "bytes": 3673,
      "reused": true,
      "local_path": "attachments/c1da0956c94e/images/039.png",
      "src": "https://substackcdn.com/image/fetch/$s_!pyEk!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F0ff8da46-fa9f-4589-89ac-46d5ed749787_836x568.png",
      "alt": "Breaking Down Context Engineering",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!3s1r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596bbacc-003c-40e5-9df0-dd88ca81da84_4703x2672.png",
      "bytes": 104095,
      "reused": false,
      "local_path": "attachments/c1da0956c94e/images/body-dc1335f14f408c22f3d9.png",
      "src": "https://substackcdn.com/image/fetch/$s_!3s1r!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596bbacc-003c-40e5-9df0-dd88ca81da84_4703x2672.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!YK76!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eaa9d1-5c79-4f1d-ae8b-08db857117ba_5073x2881.png",
      "bytes": 62153,
      "reused": false,
      "local_path": "attachments/c1da0956c94e/images/body-df5e4886b3f800faf595.png",
      "src": "https://substackcdn.com/image/fetch/$s_!YK76!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eaa9d1-5c79-4f1d-ae8b-08db857117ba_5073x2881.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!ufaN!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b195c7-bc33-4bee-be52-984301bfdd43_4157x2209.png",
      "bytes": 4395,
      "reused": false,
      "local_path": "attachments/c1da0956c94e/images/body-6655857a5e27872fe836.png",
      "src": "https://substackcdn.com/image/fetch/$s_!ufaN!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Ff8b195c7-bc33-4bee-be52-984301bfdd43_4157x2209.png",
      "alt": "Agent Skills: Progressive Disclosure as a System Design Pattern",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!Inou!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3d2de0-9c4c-4618-b9a8-e8c7316d9d96_11127x6287.png",
      "bytes": 104699,
      "reused": false,
      "local_path": "attachments/c1da0956c94e/images/body-4fdfad1e58e0cdfc9a04.png",
      "src": "https://substackcdn.com/image/fetch/$s_!Inou!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3d2de0-9c4c-4618-b9a8-e8c7316d9d96_11127x6287.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!3wO3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f7b296-80d1-4f86-925a-8e3eb3df9d56_11127x6287.png",
      "bytes": 205037,
      "reused": false,
      "local_path": "attachments/c1da0956c94e/images/body-d24fca720c8edc47e13a.png",
      "src": "https://substackcdn.com/image/fetch/$s_!3wO3!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f7b296-80d1-4f86-925a-8e3eb3df9d56_11127x6287.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!ltYL!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7430fbad-21da-4918-88cc-3d593254f310_2789x2392.png",
      "bytes": 3513,
      "reused": false,
      "local_path": "attachments/c1da0956c94e/images/body-ab3f9a574474d0c10474.png",
      "src": "https://substackcdn.com/image/fetch/$s_!ltYL!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7430fbad-21da-4918-88cc-3d593254f310_2789x2392.png",
      "alt": "The evolution of Modern RAG Architectures.",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!J6Rx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c39f377-717b-446f-a5c9-5c34916c41c2_6058x4827.png",
      "bytes": 130543,
      "reused": false,
      "local_path": "attachments/c1da0956c94e/images/body-439e76e8e7006cc88ff7.png",
      "src": "https://substackcdn.com/image/fetch/$s_!J6Rx!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c39f377-717b-446f-a5c9-5c34916c41c2_6058x4827.png",
      "alt": "",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!9E4r!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c348e1b-a175-4c65-8ea6-d773f957488e_1934x1554.png",
      "bytes": 3229,
      "reused": false,
      "local_path": "attachments/c1da0956c94e/images/body-e95f20fb0ec2b1d8d347.png",
      "src": "https://substackcdn.com/image/fetch/$s_!9E4r!,w_140,h_140,c_fill,f_auto,q_auto:good,fl_progressive:steep,g_auto/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F9c348e1b-a175-4c65-8ea6-d773f957488e_1934x1554.png",
      "alt": "Everything you need to know about MCP.",
      "downloaded": true
    },
    {
      "status": "ok",
      "url": "https://substackcdn.com/image/fetch/$s_!4JEU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd27321c-34b4-4e96-ad2b-e63dbf286ae4_5738x3255.png",
      "bytes": 110305,
      "reused": false,
      "local_path": "attachments/c1da0956c94e/images/body-71f769c61dc7c0a984d5.png",
      "src": "https://substackcdn.com/image/fetch/$s_!4JEU!,w_1456,c_limit,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd27321c-34b4-4e96-ad2b-e63dbf286ae4_5738x3255.png",
      "alt": "",
      "downloaded": true
    }
  ],
  "audio": [],
  "videos": [],
  "links": [
    {
      "href": "https://www.linkedin.com/in/aurimas-griciunas",
      "label": "Aurimas",
      "type": "a"
    },
    {
      "href": "https://www.newsletter.swirlai.com/p/breaking-down-context-engineering",
      "label": "Breaking Down Context Engineering Aurimas Griciūnas · August 30, 2025 Read full story",
      "type": "a"
    },
    {
      "href": "https://substack.com/profile/14122259-aurimas-griciunas",
      "label": "Aurimas Griciūnas",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!3s1r!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F596bbacc-003c-40e5-9df0-dd88ca81da84_4703x2672.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!YK76!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fc2eaa9d1-5c79-4f1d-ae8b-08db857117ba_5073x2881.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://maven.com/p/0bd8ae/state-of-context-engineering-in-2026",
      "label": "Watch The Recording",
      "type": "a"
    },
    {
      "href": "https://www.newsletter.swirlai.com/p/agent-skills-progressive-disclosure",
      "label": "Agent Skills: Progressive Disclosure as a System Design Pattern Aurimas Griciūnas · Mar 11 Read full story",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!Inou!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3f3d2de0-9c4c-4618-b9a8-e8c7316d9d96_11127x6287.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!3wO3!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F77f7b296-80d1-4f86-925a-8e3eb3df9d56_11127x6287.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://maven.com/swirl-ai/end-to-end-ai-engineering",
      "label": "Register Here",
      "type": "a"
    },
    {
      "href": "https://www.newsletter.swirlai.com/p/the-evolution-of-modern-rag-architectures",
      "label": "The evolution of Modern RAG Architectures. Aurimas Griciūnas · April 7, 2025 Read full story",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!J6Rx!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F7c39f377-717b-446f-a5c9-5c34916c41c2_6058x4827.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://www.newsletter.swirlai.com/p/state-of-context-engineering-in-2026?utm_source=substack&utm_medium=email&utm_content=share&action=share",
      "label": "Share",
      "type": "a"
    },
    {
      "href": "https://www.newsletter.swirlai.com/p/everything-you-need-to-know-about",
      "label": "Everything you need to know about MCP. Aurimas Griciūnas · March 15, 2025 Read full story",
      "type": "a"
    },
    {
      "href": "https://substackcdn.com/image/fetch/$s_!4JEU!,f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2Fbd27321c-34b4-4e96-ad2b-e63dbf286ae4_5738x3255.png",
      "label": "",
      "type": "a"
    },
    {
      "href": "https://www.newsletter.swirlai.com/p/sponsorships",
      "label": "Partner with SwirlAI",
      "type": "a"
    },
    {
      "href": "https://www.newsletter.swirlai.com/p/agent-skills-progressive-disclosure?utm_source=substack&utm_medium=email&utm_content=share&action=share&token=eyJ1c2VyX2lkIjoxNDEyMjI1OSwicG9zdF9pZCI6MTkwNTE2MzA0LCJpYXQiOjE3NzQxODAzNzIsImV4cCI6MTc3Njc3MjM3MiwiaXNzIjoicHViLTExNDQxNzEiLCJzdWIiOiJwb3N0LXJlYWN0aW9uIn0.LLuKZRByXFbkkcoItKP1zncAuVAOtWLxhe3eJ2wlkwc",
      "label": "Share",
      "type": "a"
    },
    {
      "href": "https://swrlai.com/ai-bootcamp",
      "label": "AI Engineering Bootcamp",
      "type": "a"
    }
  ],
  "repair_version": 2,
  "repaired_at": "2026-10-14T10:47:17Z",
  "source_url": "https://www.newsletter.swirlai.com/p/state-of-context-engineering-in-2026",
  "papers": [],
  "actual_video_files": [],
  "body_chars": 17497,
  "expected_body_images": 10,
  "discovery_status": "ok",
  "delivery_status": "ok",
  "missing_reason": "",
  "raw_html": "attachments/c1da0956c94e/pages/source.html",
  "local_html": "attachments/c1da0956c94e/pages/article.html",
  "body_base_path": "attachments/c1da0956c94e/pages/",
  "body_markdown_path": "attachments/c1da0956c94e/pages/article.md"
}