Contents
  1. Part I — Software proposals
    1. When generated language becomes input
      1. Four states worth naming
    2. What a schema promises
      1. Constraint and claim
  2. Part II — Continuing foundations
    1. Grammars, interfaces, and constrained generation
      1. Selected turning points
  3. Part III — Structured values
    1. Parsing is a sequence of claims
      1. Small failures at different layers
    2. How constrained decoding blocks malformed continuations
    3. Coverage, latency, and incomplete output
      1. Four independent operational questions
    4. Structure is not domain correctness
      1. Checker and supported claim
  4. Part IV — Operation requests
    1. Tool definitions shape available choices
      1. Overlapping tools
    2. Choose a call—or do not call
      1. Valid dispositions
    3. A call is an envelope, not an effect
      1. Minimal correlation loop
  5. Part V — Controlled effects
    1. Authorization belongs at the protected operation
    2. Execute through a controlled dispatcher
      1. Result meanings
  6. Part VI — Failure and recovery
    1. Failures need distinct meanings
      1. Failure and response
    2. Recover when the effect is unknown
  7. Part VII — Boundary evidence
    1. Test each claim separately
      1. Claim-to-check map
  8. Part VIII — Interoperability
    1. Where MCP meets the local action boundary
  9. Check understanding
  10. Open questions
  11. Selected talks
  12. References
  13. Talk library
← All topics

Structured Outputs and Tool Calling

When a person reads a model response, the person can interpret ambiguity, notice implausible details, and decide whether to act. Software cannot rely on that informal judgment. It needs explicit representations and gates. A model emission therefore begins as an untrusted proposal. A schema can constrain its shape; parsing and validation can reject malformed or inadmissible values; authorization can decide whether a proposed action is permitted; a controlled dispatcher can execute it; and an authoritative observation can establish what actually happened. These are separate claims. Reliable systems preserve the separation instead of treating “valid JSON,” “tool call accepted,” and “task completed” as synonyms.

Part I — Software proposals

When generated language becomes input

A model response crosses a consequential boundary when software, rather than a person, consumes it. Ordinary prose can suggest, “Create an issue titled Login failure.” A machine-readable response can represent the same intent as an operation name plus arguments. That representation enables automated checks, but it does not give the model authority to execute anything. In the demonstrated function-calling loop, the model expresses an intended operation and arguments; application code performs the operation and returns its result to the model. Software contracts supply the broader idea: an interface states obligations, but code at the boundary must establish them at runtime.

Four states worth naming

  • Proposed recordCandidate data, such as an extracted invoice or classification. It has not yet been accepted as correct application data.
  • Proposed actionA request naming an operation and its arguments. It describes what the model wants the application to consider doing.
  • Accepted operationA proposal that has passed the application’s structural, semantic, state, and authorization checks.
  • Observed effectEvidence from the relevant external boundary that execution produced, failed to produce, or may have produced the intended state change.

These states prevent a fluent response from laundering uncertainty. A sentence saying “The message was sent” is merely generated text. A tool result saying “accepted” proves only what that component’s contract defines. If the user cares whether a message rendered in a client, a provider receipt or edge observation must establish that later fact. The evidence chain is proposal, policy decision, execution attempt, and external confirmation—not one undifferentiated success flag.

From model response to observed effect

A typed representation enables checks, but proposal, acceptance, execution, and observation remain separate states.

One model response may remain prose for human interpretation or become a typed proposal. The software path parses and validates candidate data, independently authorizes an operation, dispatches it, and observes the external boundary. An observed effect is not the same object as the original proposal.
Read the diagram as text
  • Model response. Generated content that is not trusted merely because it is fluent.
  • Prose. A person interprets meaning and decides whether to act.
  • Typed proposal. Candidate record or action request; it has not executed.
  • Validate. Establish completion, parsing, schema, and domain claims.
  • Authorize. Decide whether this actor may perform this operation on this resource.
  • Execute. Dispatch a recognized implementation across the effect boundary.
  • Observed effect. Evidence from authoritative state or the user-visible boundary.
  • Model responseProse: text for interpretation.
  • Model responseTyped proposal: structured representation.
  • Typed proposalValidate: candidate data.
  • ValidateAuthorize: accepted arguments.
  • AuthorizeExecute: policy allows.
  • ExecuteObserved effect: external observation.

What a schema promises

A schema is a machine-readable description of permitted data structure. JSON Schema can constrain object properties, required fields, primitive types, arrays, enumerated values, numeric bounds, and whether undeclared properties are allowed. The details matter. Listing a property does not make it required. additionalProperties is allowed by default unless constrained. A missing property differs from a present property whose value is null. A root $schema declaration identifies the dialect whose keyword meanings apply, although a generation engine may still implement only a subset of that dialect.

Constraint and claim

Schema elementWhat it establishesWhat it does not establish
type: "integer"The value has the validator’s integer representation.The number is factually correct or sensible for the domain.
required: ["project_id"]The named field must be present.The referenced project exists or is accessible.
enum: ["low", "high"]Only a listed value is accepted.The chosen value matches the source or user intent.
additionalProperties: falseUnknown object fields are rejected.Known fields are sufficient for the operation.
description or defaultDocumentation or a hint is attached to the schema.The description is enforced or a missing value is inserted.
items plus length rulesArray members and permitted length are constrained.The members are complete, unique in the domain, or correctly ordered.

Suppose a valid record is {"project_id":"P-17","priority":"high"}. The schema can prove that both fields are present and have permitted representations. It cannot prove that P-17 exists, that the caller may modify it, or that “high” reflects the request. Structured-output APIs themselves warn that schema-conforming values can still contain mistakes, and applications must separately handle refusals and incomplete responses. Structure is a precondition for dependable consumption, not a certificate of truth or permission.

Part II — Continuing foundations

Grammars, interfaces, and constrained generation

Modern structured output combines several older engineering lines. Formal-language work made valid symbol sequences explicit. Interface contracts separated operation descriptions from implementations. Schema languages described admissible data. Later neural systems incorporated grammatical structure into generation, and model APIs exposed function-shaped records that applications could dispatch. These lines coexist because they answer different questions: what strings belong to a language, what values an interface accepts, what operation is being requested, and who actually performs it.

Foundations of structured generation and tool calling

  1. 1963Revised ALGOL 60 reportSpecified valid program structure with recursive metalinguistic formulas.Sources & context

    Contributors: Peter Naur and the ALGOL committee

    What changed: Made a programming language’s permitted symbol sequences explicit independently of executing the programs they described.

  2. February 1984Cedar RPCGenerated client and server stubs from typed procedure interfaces.Sources & context

    Contributors: Andrew Birrell and Bruce Nelson

    What changed: Reduced bespoke communication code while preserving the reality that remote components can fail independently.

  3. December 5, 2009Early JSON Schema Internet-DraftProposed JSON-based contracts for validation, documentation, properties, arrays, bounds, and enumerated values.Sources & context

    Contributors: Kris Zyp

    What changed: Established an early standards proposal for describing admissible JSON data separately from each instance.

  4. 2017Yin and Neubig syntax-directed generationGenerated abstract syntax trees through grammar-production actions.Sources & context

    Contributors: Pengcheng Yin and Graham Neubig

    What changed: Encoded syntax in the available generation actions instead of requiring the model to learn the entire grammar from examples.

  5. November 2021PICARDRejected inadmissible SQL continuations through incremental parsing during decoding.Sources & context

    Contributors: Torsten Scholak, Nathan Schucher, and Dzmitry Bahdanau

    What changed: Showed how inference-time parsing could constrain ordinary generated text and incorporate database-schema checks.

  6. February 2023ToolformerTrained a model to decide whether, when, and how to call a bounded set of APIs.Sources & context

    Contributors: Timo Schick and colleagues

    What changed: Combined model-selected API calls with returned results across calculator, search, translation, calendar, and question-answering tools.

  7. June 13, 2023OpenAI function callingExposed JSON Schema function descriptions and model-selected argument objects.Sources & context

    Contributors: OpenAI

    What changed: Applied function-shaped output to both proposed external operations and structured data extraction.

  8. July 2023Efficient guided generationIndexed recognizer states to acceptable vocabulary tokens for regex-guided generation.Sources & context

    Contributors: Brandon Willard and Rémi Louf

    What changed: Moved repeated token-validity work outside sampling and reduced per-step lookup work in the analyzed construction.

Notice how formal syntax, typed interfaces, machine-readable schemas, grammar-guided generation, and model-selected calls contributed separate controls rather than one continuous replacement chain. Spacing is not to scale.

Selected turning points

DateDevelopmentContribution
1963Revised ALGOL 60 reportUsed recursive metalinguistic formulas to specify which symbol sequences form programs.
February 1984Birrell and Nelson’s Cedar RPC systemGenerated client and server stubs from interfaces naming procedures and argument/result types, while acknowledging independent network failures.
December 5, 2009Early JSON Schema Internet-DraftProposed JSON-based contracts for validation, documentation, properties, arrays, bounds, and enumerated values.
2017Yin and Neubig’s syntax-directed code generationGenerated abstract syntax trees through grammar-production actions instead of learning all syntax only from examples.
November 2021PICARDRejected inadmissible SQL continuations through incremental parsing during decoding.
February 2023ToolformerTrained a model to decide whether, when, and how to call a bounded set of APIs and incorporate their results.
June 13, 2023OpenAI function calling announcementLet developers provide JSON Schema function descriptions and receive model-selected argument objects for extraction or external operations.
July 2023Efficient guided generationIndexed recognizer states to acceptable vocabulary tokens for regex-guided generation.

The chronology is not a claim that one publication caused the next or that newer mechanisms replaced earlier ones. Constrained generation still needs a parser or recognizer. A schema-shaped function request still needs application dispatch. RPC-style interfaces still face remote failure. None of these mechanisms decides whether the requested action is semantically appropriate or authorized.

Part III — Structured values

Parsing is a sequence of claims

“It looks like JSON” compresses several independent questions. First, did the provider finish the response rather than stop at a length limit or refusal? Second, did transport decoding yield the intended bytes or text? Third, did the parser consume exactly one complete JSON document under the application’s chosen policy? Fourth, does the resulting value satisfy the schema? Only then can domain validation ask whether the value is usable. Validate external values develops this general boundary; model output adds the risk that a plausible-looking value was probabilistically generated.

Acceptance gates for generated data

Completion, parsing, schema conformance, and application validity fail for different reasons and justify different responses.

A response must be complete before its decoded representation can be parsed as one unambiguous JSON document. Schema validation follows parsing, and application validation follows structural acceptance.
Read the diagram as text
  • Provider response. Content plus refusal, completion, or truncation status.
  • Completion check. Reject refusal, token exhaustion, or unfinished output.
  • Whole-document parse. Consume exactly one JSON document under explicit duplicate, suffix, and number policies.
  • Schema validation. Check the declared structural contract.
  • Application validation. Check invariants, references, state, and other domain rules.
  • Accepted record. Candidate data admitted to the next application boundary.
  • Rejected result. Preserve the failed claim and safe corrective information.
  • Provider responseCompletion check: status and content.
  • Completion checkWhole-document parse: complete.
  • Completion checkRejected result: refused or incomplete.
  • Whole-document parseSchema validation: one parsed value.
  • Whole-document parseRejected result: syntax or policy failure.
  • Schema validationApplication validation: structure accepted.
  • Schema validationRejected result: schema rejected.
  • Application validationAccepted record: domain accepted.
  • Application validationRejected result: domain rejected.

Small failures at different layers

Emission or conditionFirst failed claimWhy policy matters
Response ends after {"id":"P-CompletionA partial parser may retain earlier fields, but that does not make the original response complete.
{"n":1} trailing textWhole-document parsingSome parsers can decode the first value and report where it ended; callers must reject an unconsumed suffix when the contract requires one document.
{"role":"viewer","role":"admin"}Unambiguous object interpretationJSON implementations may reject duplicate names, retain one value, or expose both.
{"count":"7"}Schema or strict runtime validationA permissive validator may coerce a numeric string; that transformation must be an explicit interface policy.
{"project_id":"P-404"}Domain validationThe shape can be valid while the referenced entity does not exist.

Repair and coercion are transformations, not neutral cleanup. Guessing a missing quotation mark, discarding a suffix, selecting the last duplicate member, or converting strings to numbers can change meaning. A safe system preserves the raw emission for diagnosis, records the transformation policy, and rejects ambiguity when downstream consequences exceed what the repair can justify. TypeScript annotations alone do not help at this boundary because ordinary annotations are erased from emitted JavaScript; incoming data still needs runtime checks.

How constrained decoding blocks malformed continuations

Autoregressive generation chooses one token after another. Constrained decoding adds a recognizer for the permitted output language. Given the generated prefix, the recognizer determines which vocabulary tokens can still lead to a valid completion. Invalid candidates are masked before selection; the chosen token then advances the recognizer state. OpenAI has described compiling supported JSON Schema into a context-free grammar and caching an artifact used to determine valid continuations. Outlines describes the same central idea as testing candidate tokens and masking those that would violate the requested structure.

The recognizer cannot simply count braces. JSON strings can contain escaped quotation marks and brace characters that do not close an object. A tokenizer token can also span grammar boundaries or split a UTF-8 character, so implementations may need to match its bytes through several parser transitions. XGrammar describes a byte-level pushdown automaton with live stack state, cached context-independent masks, and additional checks for context-dependent tokens. The representation details belong in Tokenization; the consequence here is that token validity depends on both the prefix and the tokenizer.

Prefix state changes the allowed next piece

Example

Candidate validity depends on both the candidate text or byte piece and the recognizer state created by the prefix.

1 / 3 · Object opened

The current state is after the opening brace. Every stable candidate is classified: the id field piece is allowed and selected; the colon, closing brace, and escaped quote are masked.

This toy recognizer does not assume any particular model tokenizer. Each step shows one current state, the same illustrative candidate pieces, and an explicit allowed or masked decision for every candidate. The selected allowed piece leads to the next state; earlier states are omitted from later steps rather than remaining active.
Read the diagram as text
  • Toy object schema. Requires one string field named id.
  • Candidate piece: "id". Illustrative text or byte piece, not a claim about one tokenizer vocabulary entry.
  • Candidate piece: :. Illustrative separator piece.
  • Candidate piece: }. Illustrative object-closing piece.
  • Candidate piece: \". Illustrative bytes for an escaped quotation mark inside a JSON string.
  • Current state: after {. The required property name must begin here.
  • Next state: after field name. Reached by selecting the allowed id field piece.
  • Current state: after field name. The recognizer now expects the name/value separator.
  • Next state: before string value. Reached by selecting the allowed colon piece.
  • Current state: inside string value. Escape-aware string rules now determine candidate validity.
  • Next state: still inside string. An escaped quotation mark adds content without ending the string.
  • Toy object schemaCurrent state: after {: constrains.
  • Current state: after {Candidate piece: "id": allowed and selected.
  • Current state: after {Candidate piece: :: masked.
  • Current state: after {Candidate piece: }: masked: required field missing.
  • Current state: after {Candidate piece: \": masked.
  • Candidate piece: "id"Next state: after field name: advance.
  • Current state: after field nameCandidate piece: "id": masked.
  • Current state: after field nameCandidate piece: :: allowed and selected.
  • Current state: after field nameCandidate piece: }: masked.
  • Current state: after field nameCandidate piece: \": masked.
  • Candidate piece: :Next state: before string value: advance.
  • Current state: inside string valueCandidate piece: "id": masked: unescaped quote.
  • Current state: inside string valueCandidate piece: :: allowed string content.
  • Current state: inside string valueCandidate piece: }: allowed string content.
  • Current state: inside string valueCandidate piece: \": allowed and selected.
  • Candidate piece: \"Next state: still inside string: advance without closing.
  1. Object opened. The current state is after the opening brace. Every stable candidate is classified: the id field piece is allowed and selected; the colon, closing brace, and escaped quote are masked. Active: Toy object schema, Candidate piece: "id", Candidate piece: :, Candidate piece: }, Candidate piece: \", Current state: after {, Next state: after field name. New: Toy object schema, Candidate piece: "id", Candidate piece: :, Candidate piece: }, Candidate piece: \", Current state: after {, Next state: after field name.
  2. Property named. The current state now expects a separator. The colon is allowed and selected; all other displayed candidates are masked. Selecting the colon advances to the value position. Active: Toy object schema, Candidate piece: "id", Candidate piece: :, Candidate piece: }, Candidate piece: \", Current state: after field name, Next state: before string value. New: Current state: after field name, Next state: before string value.
  3. Inside the string. The current state is inside a JSON string. Colon and closing-brace pieces are permitted as string content, an unescaped quoted id piece is masked, and the escaped quote is allowed and selected. Its escape keeps the recognizer inside the string. Active: Toy object schema, Candidate piece: "id", Candidate piece: :, Candidate piece: }, Candidate piece: \", Current state: inside string value, Next state: still inside string. New: Current state: inside string value, Next state: still inside string.

Masking guarantees only membership in the language implemented by the recognizer. It does not guarantee that a generated identifier exists, an extracted amount matches a document, or a requested operation is permitted. It can also alter content probabilities. Ordinary grammar-constrained decoding renormalizes among currently admissible tokens; that distribution is not generally identical to the model’s distribution conditioned on eventually producing a complete valid string, because exact conditioning would also account for each candidate’s probability of future grammatical completion.

Coverage, latency, and incomplete output

A schema can be valid JSON Schema yet unusable by a particular structured-output engine. Providers commonly support subsets; large or deeply nested schemas may be rejected, and converters can silently skip unsupported features. A production contract must therefore pin the provider, model or runtime, schema dialect, converter, and supported feature set. Inspect warnings and test the language actually enforced rather than assuming that a valid application schema was translated exactly.

Four independent operational questions

QuestionEvidence neededCommon mistake
Will the API accept the schema?A versioned feature-coverage test against the actual endpoint.Treating general JSON Schema validity as provider support.
Does the engine enforce the intended language?Positive and negative conformance cases, including unsupported keywords and nesting.Inferring exact language equivalence from a few compliant samples.
Will execution meet latency and capacity needs?Compilation, cache, per-token, batching, and memory measurements on the target stack.Repeating an implementation-specific “zero overhead” claim universally.
Is a streamed prefix safe to consume?Explicit partial-state semantics and a final completion signal.Treating a parsed partial object as a final authorized record.
Does task quality remain acceptable?Representative semantic evaluation separate from format compliance.Assuming fewer malformed outputs means better answers.

Published results illustrate why these dimensions stay separate. JSONSchemaBench evaluates schema acceptance, feature coverage, compliance, efficiency, and task quality independently; finite compliant samples cannot prove that an engine implements exactly the schema’s accepted language. A 2025 study across its selected models and tasks found that format constraints and semantic task quality could move differently, with effects varying by model and task. Treat such findings as reasons to measure your own workload, not as a universal penalty or benefit.

Structure is not domain correctness

Once a record passes structural validation, semantic validation asks whether its values are acceptable in the application’s domain and current state. Checks can include cross-field invariants, membership in a controlled set, referential integrity, units, temporal order, and preconditions. A receipt model can require numeric line items, yet still need to verify that quantity times unit price reconciles with totals. A scheduling request can contain valid timestamps while placing the end before the start. A project identifier can match its pattern while naming no current project.

Checker and supported claim

CheckerCan establishCannot establish alone
Schema validatorFields, representations, and declared local constraints.Existence, freshness, permission, or intent.
Deterministic domain validatorSpecified relationships such as start < end or totals reconciling under defined rounding rules.Facts for which it has no authoritative data or rules.
Authoritative lookupCurrent existence, version, membership, or provider state.That the user intended this entity or operation.
Authorization policyWhether this actor may perform this operation on this resource now.Whether the proposed values accurately express the user’s goal.
Intent or factual assessmentEvidence that a proposal corresponds to the request or source.A universal proof when the property itself lacks a complete specification.

Put known constraints into field descriptions before generation when that helps the model choose correctly, but retain validators afterward. In a Pydantic demonstration, a hidden date constraint caused an initial validation failure; returning the error enabled a corrected retry, while the speaker recommended stating the century requirement in the field description up front. The two controls are complementary: descriptions guide generation, and validators enforce specified acceptance rules.

No validator is stronger than its oracle. A deterministic rule is excellent for an invariant that code can fully state. It cannot generally decide whether an unrestricted answer is “safe,” whether an ambiguous request meant one customer rather than another, or whether a source supports a claim. Checks and their limits explains how to state what each oracle observes and what remains open.

Part IV — Operation requests

Tool definitions shape available choices

A tool definition is a model-visible description of an application operation. It normally includes a stable name, purpose, input schema, and—where supported—a result contract. The description should explain when to use the tool, when not to use it, prerequisites, specialized terms, resource relationships, and important effects. Parameter names and descriptions should state units and meaning; enums should expose the actual finite choices. The executable implementation and authorization policy remain separate.

Overlapping tools

Weak definitionBetter distinctionRemaining question
search: Search for information.search_web: Use for public, current webpages; do not use for private account data.Will the model obey the distinction on representative requests?
query: Run a query.query_orders: Read the current tenant’s order index using the documented filter grammar; load syntax guidance first.Can arguments still misuse the query language?
One tool per backend endpoint.One task-oriented lookup returning the contextual fields required by the workflow.Does the broader tool expose excessive data or hide useful control?

Tool granularity is an interface decision, not a mechanical reflection of backend APIs. Too many overlapping declarations can make selection harder; overly broad tools can expose unnecessary authority or return bloated results. Start with distinct task-level purposes, then use evaluations to justify routing, grouping, or progressive disclosure. Descriptions improve the model’s decision context, but they are instructions—not enforcement and not permission.

Choose a call—or do not call

Immediate tool selection is a disposition decision. The system may answer directly, ask for missing information, state that its tools cannot satisfy the request, or propose an eligible operation. Selection is separate from argument formation: choosing create_issue correctly does not mean the supplied repository, title, and labels are correct. It is also narrower than sequential planning; Choose a useful next action covers prerequisites and consequences across a longer trajectory.

Valid dispositions

ConditionDispositionReason
The answer is available without an external operation.Answer directly.A tool call would add cost and failure modes without adding needed evidence or effects.
A required argument is missing and cannot be safely inferred.Clarify.Guessing would create an under-specified action request.
Available tools cannot perform the requested capability.Decline or explain the boundary.A related tool is not an adequate substitute.
One permitted external lookup or effect is necessary and arguments are available.Propose the named call.The request can now be validated and authorized.
Several independent lookups are needed and the interface supports multiple calls.Propose separately identified calls.Independence must be established by the application, not inferred from co-occurrence.

Some APIs expose automatic, required, prohibited, or allowlisted tool modes. These modes alter the model’s available output space; they do not prove that a call is useful or permitted. Requiring a call can be appropriate inside a tightly bounded extraction interface, but it removes direct-answer and no-call options. Evaluate the exact mode together with missing-argument and unavailable-capability cases.

A call is an envelope, not an effect

A tool call needs an identity that survives dispatch and result return. This matters when one response requests several operations, including repeated calls to the same tool with different arguments. In the demonstrated parallel-call loop, each returned result retains the corresponding tool-call ID, allowing the model to distinguish the observations without relying on function name or completion order.

Minimal correlation loop

Illustrative pseudocode

Python-like pseudocode
calls = model_response.tool_calls

for call in calls:
    require call.name in allowed_tools
    args = validate(call.arguments)
    require authorize(actor, call.name, args)

    result = allowed_tools[call.name](args)
    observations.append({ call_id: call.id, result })

next_response = model(history + calls + observations)

Several calls in one model turn are not necessarily independent. The weather demonstration grouped two retrievals into one step, then waited for both results before requesting dependent arithmetic in the next step. Application code must preserve that dependency order; state-changing calls may need still stricter serialization or transactional controls.

Part V — Controlled effects

Authorization belongs at the protected operation

Authentication establishes an actor’s identity. Authorization decides whether that actor may perform a particular operation on a particular resource under current policy. A schema-valid request supplies only some decision inputs. Policy may also consider the authenticated subject, delegated task scope, resource ownership, environment, current state, and consequence. Attribute-based access control formalizes this as evaluation of subject, object, operation, and sometimes environmental attributes against policy.

Enforce authorization where the protected operation occurs, on every request. An IDOR—Insecure Direct Object Reference—illustrates why a valid token is insufficient: an application can authenticate the caller yet expose another user’s record when lookup-by-ID omits object-level authorization. In the reported agent attack, a visible user ID enabled traversal into personal records because the downstream tool checked admission but not ownership. Enforce current authority develops complete mediation and fail-safe defaults.

Permission is independent of valid arguments

A schema-valid proposal reaches the protected service only after policy evaluates actor, operation, resource, delegated scope, and current conditions.

The model supplies a schema-valid action request. Authentication identifies the actor, while policy evaluates the exact operation, target resource, delegated scope, current state, and any required transaction approval. Denial ends at the policy boundary; approval reaches the protected service. The model has no path around enforcement.
Read the diagram as text
  • Schema-valid call. The arguments have acceptable structure but no implied permission.
  • Authenticated actor. The principal and relevant delegated identity are established.
  • Policy decision. Evaluates actor, exact operation, resource, delegated scope, state, environment, and approval binding.
  • Denied. No protected operation executes; a stable denial is returned.
  • Protected service. The enforcement point admits only policy-approved operations.
  • Service observation. Result or authoritative state produced by the protected boundary.
  • Schema-valid callPolicy decision: operation and resource.
  • Authenticated actorPolicy decision: actor and delegation.
  • Policy decisionDenied: policy denies.
  • Policy decisionProtected service: policy allows.
  • Protected serviceService observation: execute and observe.

Human approval is also scoped data, not a vague remembered “yes.” Bind approval to the actor, session, operation, exact consequential arguments, resource scope, and lifetime. If arguments change, approval expires, or the request is regenerated under another identity, run authorization again and obtain any required new approval. OWASP’s transaction-authorization guidance similarly binds acknowledgement to significant operation details and warns against approving one transaction while executing altered details.

Credentials are capabilities, not proof of user intent. Delegated architectures can preserve both user and runtime identity—for example, by exchanging a subject token and authenticated runtime identity for narrowly requested access—but the authorization service must still decide whether to issue that authority. Whole-task accumulation and intervention policy belong in Constrain accumulated effects; broader attack paths belong in AI Security.

Execute through a controlled dispatcher

After acceptance, a controlled dispatcher resolves the operation through an allowlisted registry. It does not evaluate model-generated code, trust an arbitrary URL, or dynamically import a name chosen by the model. At the execution boundary it revalidates arguments, current resource state, authorization, deadlines, and resource limits. The handler then invokes application code or a hosted capability according to the integration’s actual execution contract. Tool-definition ownership and execution ownership are separate: some provider-defined tools still execute in the client, while server-hosted tools execute on provider infrastructure.

Result meanings

ResultMeaningNext obligation
Completed dataThe operation returned a final structured observation.Validate it and check any authoritative postcondition the task requires.
Domain failureThe operation ran but the requested domain outcome was rejected or unavailable.Return a stable error code and safe corrective details.
Infrastructure failureThe execution path failed before a final domain result was established.Apply retry policy only after considering effect knowledge and idempotency.
Pending operation handleWork was accepted but is incomplete.Track the handle; do not report final success.
Cancellation acknowledgedA cancellation request was received.Inspect eventual operation state because cancellation can be best effort.

A tool result is an observation from one boundary, not proof that the whole user task is complete. A provider can accept a mutation while dropping requested attributes; an internal message service can accept a request while the user-visible client renders nothing. Define the relevant postcondition, query authoritative state where possible, and preserve the provider receipt or operation handle. Establish the achieved outcome treats completion as a task-level question.

Execution loops also need termination. Bound tool waits with deadlines, represent timeout and cancellation explicitly, and set a maximum iteration or attempt count. A missing tool result must not leave subsequent work queued forever. Recovery commands should remain reachable outside the blocked queue, and receipts should record the terminal state that later steps can trust.

Part VI — Failure and recovery

Failures need distinct meanings

A dependable interface preserves why an attempt did not produce a completed effect. Malformed generation, schema rejection, semantic invalidity, authorization denial, dependency unavailability, domain failure, timeout, cancellation, and executor defects make different claims. They differ especially in whether an external effect is known to have occurred and who may safely decide the next step.

Failure and response

FailureKnown effect?Safe response
Malformed or incomplete generationNo action should have been dispatched.Reject; optionally regenerate within a bounded budget.
Schema or semantic rejectionNo action should have been dispatched.Return precise field or invariant feedback; let the model revise only permitted arguments.
Authorization denialNo authorized effect.Terminate or request a genuinely new authorization decision; do not retry around policy.
Dependency unavailable before dispatchUsually no effect, if the boundary can prove execution never began.Retry with bounded backoff when the operation is safe and policy allows.
Tool-declared domain failureDefined by the tool result.Preserve the domain code; revise only if the request can validly change.
Timeout after dispatchPossibly unknown.Reconcile or repeat with the same enforced operation identity; never assume failure.
Cancellation requestedPossibly unknown or partial.Inspect terminal state; cancellation acknowledgement is not rollback.
Executor defectDepends on where the defect occurred.Stop, preserve evidence, and investigate before blind replay.

Error envelopes should expose stable machine fields—such as type, code, affected argument locations, retry guidance, and an occurrence identifier—while keeping stack traces, secrets, internal capabilities, and sensitive policy details out of model-visible text. RFC 9457 is one reference for machine-readable HTTP problems and explicitly separates human-readable detail from fields clients should use for decisions. It does not define universal retryability or effect status, so those remain application-specific.

Validation feedback can support bounded correction. Pydantic demonstrations return an explanatory validator error to the model, which then proposes a corrected result. Instructor documents choosing retryable exceptions, stopping by attempts or elapsed time, and exposing attempt history after exhaustion. This is appropriate for correctable representation or value errors; it does not authorize a previously denied action or make a side effect safe to repeat.

Recover when the effect is unknown

A timeout after dispatch creates three possible realities: confirmed success, confirmed failure without an effect, or an unknown outcome. The client’s missing response cannot distinguish them. Retrying with a fresh identity can create a second effect if the first request committed. Preserve one logical operation identity and record the attempt as pending or unknown until provider evidence resolves it.

Idempotency means repeating the same logical operation adds no further externally visible effect. It requires enforcement at the receiving boundary, not merely a key written to local logs. Stripe’s documented contract illustrates bounded semantics: the caller reuses one key with identical parameters; executed responses, including some failures, are stored; mismatched parameters are rejected; validation failures or concurrent-execution conflicts may not create a stored result; and old keys can be pruned. Those details are provider-specific, so clients must implement the actual service contract rather than a generic “idempotent” checkbox.

Recovery after a lost mutation response

Safe recovery preserves logical operation identity and seeks receiving-boundary enforcement or authoritative evidence before another effect.

A remote mutation may commit before its response is lost. Retrying under a new identity can create a duplicate. Reusing the original provider-enforced key can return a stored result or preserve an unknown state according to the provider contract. Querying authoritative state can confirm success, confirm no effect, or leave the case unresolved for escalation.
Read the diagram as text
  • Logical operation op-17. One immutable intent and parameter set.
  • Remote mutation. The service may commit before the client receives a response.
  • Outcome unknown. The response was lost; success and no-effect failure remain possible.
  • Retry with new identity. The service cannot associate the attempt with op-17.
  • Repeat original key. Use the provider’s idempotency contract with identical parameters.
  • Query authoritative state. Search by operation metadata, provider handle, or resulting object.
  • Possible duplicate effect. A second mutation can occur if the first committed.
  • Deduplicated result. The provider returns the stored result for the same logical operation.
  • Outcome confirmed. Authoritative state establishes success or no effect.
  • Unresolved escalation. No safe automated conclusion or retry is available.
  • Logical operation op-17Remote mutation: submit with stable identity.
  • Remote mutationOutcome unknown: response lost.
  • Outcome unknownRetry with new identity: unsafe fresh identity.
  • Retry with new identityPossible duplicate effect: first may have committed.
  • Outcome unknownRepeat original key: provider enforces key.
  • Repeat original keyDeduplicated result: stored result exists.
  • Repeat original keyUnresolved escalation: contract cannot resolve.
  • Outcome unknownQuery authoritative state: authoritative reconciliation.
  • Query authoritative stateOutcome confirmed: state identifies outcome.
  • Query authoritative stateUnresolved escalation: evidence remains incomplete.

When provider deduplication or reliable result replay is unavailable, query authoritative state using a local operation identifier or provider job handle. Keep the local operation pending while evidence is incomplete. If a known effect must be countered, compensation performs a new business operation; it is not time travel or database rollback, and it can fail. Workflow replay likewise does not create exactly-once effects: a task may complete an external mutation and crash before its result is persisted, causing a resumed attempt to execute again.

This recovery logic specializes Represent uncertain external outcomes. Strategy-level repair after the effect is known belongs in Repair the strategy from known effects. The immediate boundary rule is simpler: do not transform missing evidence into a fabricated success or confirmed failure.

Part VII — Boundary evidence

Test each claim separately

A complete system needs complementary tests because each boundary supports a different claim. Valid JSON does not establish schema conformance; schema conformance does not establish correct disposition or arguments; correct arguments do not establish authorization; successful dispatch does not establish the external postcondition. Specify the case and its outcome explains how to preserve initial state, permitted actions, stopping conditions, and assessment criteria.

Claim-to-check map

ClaimCheckRemaining gap
The engine enforces the schema.Positive, negative, recursive, unsupported-keyword, and completion cases against the pinned runtime.Semantic correctness and provider behavior outside tested cases.
The parser and validators behave correctly.Replay recorded malformed, duplicate-field, truncated, coercible, and domain-invalid responses.Whether the live model emits them at deployment rates.
The system chooses appropriately.Evaluate answer, clarify, abstain, unavailable capability, right tool, and argument correctness separately.Authorization and external outcome.
The dispatcher is correct.Use controlled model substitutes to emit exact calls; verify allowlist, correlation, ordering, timeout, and error mapping.Real-model selection quality.
Authorization is enforced.Attempt forbidden actor-operation-resource combinations, changed arguments, expired approvals, and revoked scope.Completeness of the organization’s policy.
Retries avoid duplicate effects.Inject lost responses, crashes after external commit, concurrent attempts, expired keys, and reconciliation failures.Provider behavior beyond the tested contract.
The intended effect occurred.Inspect authoritative external state or a user-visible boundary.Whether the whole workflow was useful.

Tool evaluations should preserve intermediate expectations. Golden cases can specify whether a call is needed, the intended operation, required arguments, expected tool observation, and acceptable final response. BFCL V3 separately checks resulting backend state and required execution-path calls because a correct end state can omit necessary information gathering, while a correct path can still leave the wrong state. Several trajectories may be valid, so assert required properties rather than one arbitrary call order unless order is itself contractual.

Report stage-specific denominators: parse failures, schema rejections, semantic rejections, incorrect selections, incorrect arguments, authorization violations, executor failures, unknown outcomes, duplicate effects, verified postconditions, and completed tasks. A single “validity rate” hides where risk remains. Representative task sampling and oracle design belong in Choose checks that match the requirement.

Part VIII — Interoperability

Where MCP meets the local action boundary

Tool calling and the Model Context Protocol solve orthogonal problems. Tool calling is the model–application interface for proposing an invocation and returning observations. MCP standardizes capability exchange among a host, its clients, and servers. Servers can expose tools, resources, and prompts; a host can aggregate them and decide what to present to a model. In the 2026-07-28 architecture, each client communicates with one server and requests carry version and capability metadata.

MCP tool definitions contain a name, description, input schema, and optional output schema. Discovery and invocation standardization reduce bespoke integration work, but they do not decide whether a tool is appropriate, whether its description is trustworthy, or whether the current actor may execute it. Names are scoped to a server, catalogs can change with authorization, execution failures differ from protocol errors, and annotations are untrusted unless their server is trusted.

The host therefore retains the local control boundary: select which server capabilities enter the model’s context; disambiguate names; validate arguments and returned data; obtain confirmation where required; enforce authorization; impose timeouts; log use; dispatch according to policy; and translate results back into the model conversation. The server separately enforces access control and validates its inputs. Connecting a server advertises capability—it does not grant authority.

Keep protocol revision boundaries explicit. Older talks and implementations may describe connection-scoped initialization, historical transports, or earlier OAuth behavior. The current protocol chapter should own those version-specific details. The invariant for this chapter is stable: interoperability can supply descriptions and messages, while the application remains responsible for turning a model proposal into a permitted, controlled, and observed effect.

Open questions

  1. How can constrained decoders implement a provider’s advertised schema subset exactly while preserving acceptable latency across tokenizers, recursive structures, batching modes, and streaming? Progress would include versioned conformance suites that separate schema acceptance, recognized-language equivalence, completion behavior, and semantic task quality.

  2. How should systems measure whether tool names, descriptions, parameter semantics, prerequisites, and catalog size improve selection without consuming excessive context or encouraging unnecessary calls? Progress would require controlled, task-representative studies that separate no-call decisions, tool identity, and argument accuracy.

  3. What portable failure envelope can distinguish malformed proposals, policy denials, domain failures, pending work, cancellation, and unknown effects without leaking sensitive diagnostics or pretending that retry semantics are universal? Progress would look like precise, machine-readable effect knowledge and recovery guidance that tool implementations can map to their real contracts.

  4. How can authorization remain bound to exact user intent as arguments, resource state, delegated scope, and long-running execution change? Progress would combine transaction-specific approval, per-request service enforcement, revocation, and auditable identity without treating model reasoning or credentials as authority.

  5. How should a system verify semantic correctness when deterministic validators cover only known invariants and model judges share the generator’s blind spots? Progress would require authoritative domain evidence, calibrated deferral policies, and evaluation designs that keep oracle limitations visible instead of collapsing them into one confidence field.

Follow the curated reading path through the speakers and demonstrations behind this entry.

16 min

AI Engineer World's Fair 2024 · 2024

No more bad outputs with structured generation

Rémi Louf

Cited in this entry

Rémi Louf gives the clearest mechanism-level account of masking token continuations during structured generation and reports implementation-specific efficiency and benchmark results that are useful when read with their stated limits.

Watch talk
18 min

AI Engineer Summit 2023 · 2023

Pydantic is all you need

Jason Liu

Cited in this entry

Jason Liu shows how typed models, JSON Schema, field descriptions, nested structures, validation, and bounded re-asking turn model output into a maintainable application interface.

Watch talk
103 min

AI Engineer Summit 2025 · 2025

Function Calling is All You Need

Ilan Bigio

Cited in this entry

Ilan Bigio demonstrates the application-managed tool loop and makes the crucial ownership boundary concrete: the model expresses an intended function call, while application code executes it and returns the result.

Watch talk
18 min

AI Engineer World's Fair 2026 · 2026

Your Agent Didn’t Fail. Your Harness Did.

Vinoth Govindarajan

Cited in this entry

Vinoth Govindarajan extends the interface into production operations by separating proposals, scoped approvals, execution attempts, terminal outcomes, and user-visible evidence.

Watch talk

Explore more talks

The rest of the library, beyond the curated path. Cited talks support this entry; reviewed transcripts were processed in full. Metadata candidates have not been reviewed as sources or verified as topic members.

192 matching talks

TalkSpeakerEventYear
Jason LiuAI Engineer World's Fair 20242024
Samuel ColvinAI Engineer World's Fair 20252025
Charlie GuoAI Engineer World's Fair 20252025
Ishan AnandAI Engineer World's Fair 20242024
AI Engineering 101

Transcript reviewed

Noah HeinAI Engineer Summit 20232023
Jamie Neuwirth, Zack WittenAI Engineer World's Fair 20242024
Daniel ChalefAI Engineer World's Fair 20262026
Vinoo GaneshAI Engineer World's Fair 20262026
Erik MeijerAI Engineer World's Fair 20262026
Sumaiya ShrabonyAI Engineer World's Fair 20262026
Fuzzing in the GenAI Era

Transcript reviewed

Leonard TangAI Engineer World's Fair 20252025
Frank CoyleAI Engineer World's Fair 20262026
Charles FryeAI Engineer Summit 20232023
Roy DerksAI Engineer Summit 20252025
Bobby Tiernay, Kam SweenAI Engineer World's Fair 20252025
Skills are the New SDKs

Transcript reviewed

Elvin AghammadzadaAI Engineer World's Fair 20262026
Philipp SchmidAI Engineer World's Fair 20252025
Kent C. DoddsAI Engineer World's Fair 20252025
John WelshAI Engineer World's Fair 20252025
Nimrod HauserAI Engineer Europe 20262026
Identity for AI Agents

Transcript reviewed

AI Engineer Code 20252025
Kim MaidaAI Engineer World's Fair 20262026
Liam McGarrigleAI Engineer Europe 20262026
Cornelia DavisAI Engineer Code 20252025
Erik HanchettAI Engineer World's Fair 20262026
Shaan DesaiAI Engineer Summit 20252025
Aditya BhargavaAI Engineer World's Fair 20262026
Elizabeth Fuentes LeoneAI Engineer World's Fair 20262026
Steven WillmottAI Engineer Europe 20262026
Mahesh MuragAI Engineer Summit 20252025
Rene BrandelAI Engineer World's Fair 20252025
Pietro ZulloAI Engineer World's Fair 20262026
Aparna DhinakaranAI Engineer World's Fair 20252025
Nico AlbaneseAI Engineer Summit 20252025
Dippu Kumar SinghAI Engineer Europe 20262026
Leonie MonigattiAI Engineer Europe 20262026
Michael HablichAI Engineer Europe 20262026
Kam LasaterAI Engineer Summit 20252025
Sarthak AggarwalAI Engineer World's Fair 20262026
Sandipan BhaumikAI Engineer Europe 20262026
Jon PeckAI Engineer World's Fair 20252025
David CramerAI Engineer World's Fair 20252025
Zach BlumenfeldAI Engineer World's Fair 20252025
Cedric ClyburnAI Engineer World's Fair 20262026
Bilge YücelAI Engineer Europe 20262026
Dex HorthyAI Engineer World's Fair 20252025
A Genius With Amnesia

Metadata candidate

Victor SavkinAI Engineer World's Fair 20262026
Shelby HeineckeAI Engineer World's Fair 20242024
Tim AingeAI Engineer World's Fair 20262026
A Song of Types and Agents

Metadata candidate

Roberto StagiAI Engineer World's Fair 20262026
Ari HeljakkaAI Engineer Summit 20252025
Bala RamdossAI Engineer World's Fair 20262026
Cedric VidalAI Engineer World's Fair 20252025
Sam BhagwatAI Engineer World's Fair 20252025
Christopher ChedeauAI Engineer World's Fair 20252025
Charles FryeAI Engineer Summit 20232023
swyxAI Engineer World's Fair 20242024
Nick Nisi, Zack ProserAI Engineer World's Fair 20252025
AI’s Jurassic Park Period

Metadata candidate

Aaron StanleyAI Engineer World's Fair 20262026
Apoorva JoshiAI Engineer World's Fair 20262026
Frank CoyleAI Engineer World's Fair 20262026
Lance MartinAI Engineer World's Fair 20242024
Sina ShahandehAI Engineer World's Fair 20262026
Arjun Chintapalli, Bhavani KalisettyAI Engineer Summit 20252025
Filip KozeraAI Engineer World's Fair 20252025
Grace IsfordAI Engineer Summit 20252025
Rajiv ChandegraAI Engineer World's Fair 20262026
Łukasz GandeckiAI Engineer World's Fair 20252025
Paul HenryAI Engineer World's Fair 20242024
Angus J. McLeanAI Engineer Europe 20262026
Greg BensonAI Engineer World's Fair 20252025
Paul Klein IVAI Engineer World's Fair 20262026
Build Systems, Not Code

Metadata candidate

Angie JonesAI Engineer World's Fair 20262026
Raj NavakotiAI Engineer Europe 20262026
Louis-François Bouchard, Paul Iusztin, Samridhi VaidAI Engineer Europe 20262026
Will BrykAI Engineer World's Fair 20252025
Jerry LiuAI Engineer World's Fair 20252025
Bennet FennerAI Engineer Europe 20262026
Ben KusAI Engineer World's Fair 20252025
Eugene YanAI Engineer Summit 20232023
Anoop Kotha, Toki SherbakovAI Engineer World's Fair 20252025
Simrat HanspalAI Engineer Summit 20232023
Michael FesterAI Engineer World's Fair 20252025
Anju KambadurAI Engineer Summit 20252025
Sunil PaiAI Engineer Europe 20262026
Dhruv BatraAI Engineer World's Fair 20262026
Dmytro (Dima) DzhulgakovAI Engineer World's Fair 20242024
Zeke SikelianosAI Engineer World's Fair 20252025
Ornella Bahidika, Joel AllouAI Engineer World's Fair 20262026
Laurie VossAI Engineer World's Fair 20252025
Kevin HouAI Engineer World's Fair 20242024
Maxime LabonneAI Engineer Europe 20262026
Theo BrowneAI Engineer World's Fair 20262026
Ankur GoyalAI Engineer World's Fair 20252025
Rafael LeviAI Engineer Europe 20262026
Samuel ColvinAI Engineer Code 20252025
Thor SchaeffAI Engineer Europe 20262026
Jerry LiuAI Engineer World's Fair 20242024
Kenton VardaAI Engineer World's Fair 20262026
Gateways are All You Need

Metadata candidate

Karan SampathAI Engineer Europe 20262026
Emil EifremAI Engineer World's Fair 20242024
Jonathan LarsonAI Engineer World's Fair 20252025
Iman MakaremiAI Engineer World's Fair 20252025
Rashi AgrawalAI Engineer World's Fair 20262026
Tanmai GopalAI Engineer World's Fair 20242024
Vasant KearneyAI Engineer World's Fair 20262026
Vinoo GaneshAI Engineer World's Fair 20262026
Patrick DoughertyAI Engineer Summit 20252025
Yogendra MirajeAI Engineer World's Fair 20252025
Jared HansonAI Engineer World's Fair 20252025
Ben KunkleAI Engineer Europe 20262026
Mustafa Ali, Kyle CorbittAI Engineer Summit 20252025
Sally-Ann DeLuciaAI Engineer Europe 20262026
Amol KapoorAI Engineer World's Fair 20262026
Imagination Engineering

Metadata candidate

Eve BouffardAI Engineer World's Fair 20262026
Yu SuAI Engineer World's Fair 20262026
Intro to GraphRAG

Metadata candidate

Zach BlumenfeldAI Engineer World's Fair 20252025
Robert ChandlerAI Engineer World's Fair 20252025
Tom SmokerAI Engineer World's Fair 20252025
Danilo CamposAI Engineer Europe 20262026
Dat NgoAI Engineer Europe 20262026
Thierry Moreau, Pedro TorruellaAI Engineer World's Fair 20242024
Hubert MisztelaAI Engineer World's Fair 20242024
Shafik Quoraishee, Joanne SongAI Engineer World's Fair 20262026
Kelvin MaAI Engineer World's Fair 20252025
Lin Qiao, Dmytro (Dima) DzhulgakovAI Engineer World's Fair 20242024
Eashan SinhaAI Engineer World's Fair 20252025
Ronan McGovernAI Engineer World's Fair 20252025
MCP is all you need

Metadata candidate

Samuel ColvinAI Engineer World's Fair 20252025
Stefania DrugaAI Engineer World's Fair 20262026
Mentoring the Machine

Metadata candidate

Eric HouAI Engineer World's Fair 20252025
Ilan BigioAI Engineer World's Fair 20252025
Ola MabadejeAI Engineer World's Fair 20252025
Rami AlhamadAI Engineer World's Fair 20252025
Ahmed MenshawyAI Engineer World's Fair 20242024
Sharif ShameemAI Engineer World's Fair 20252025
Lech KalinowskiAI Engineer World's Fair 20262026
Jeronim MorinaAI Engineer World's Fair 20242024
Samuel ColvinAI Engineer Europe 20262026
Pragmatic AI With TypeChat

Metadata candidate

Daniel RosenwasserAI Engineer Summit 20232023
Luke AlvoeiroAI Engineer Europe 20262026
Ben FlastAI Engineer World's Fair 20242024
Yuval Belfer, Niv GranotAI Engineer World's Fair 20252025
RAG for VPs of AI

Metadata candidate

Jerry LiuAI Engineer World's Fair 20242024
Rewiring the State

Metadata candidate

Eoin MulgrewAI Engineer Europe 20262026
Max RyabininAI Engineer Europe 20262026
Mozhgan Kabiri ChimehAI Engineer Europe 20262026
Scaffold Wisely

Metadata candidate

Rahul SengottuveluAI Engineer Summit 20252025
Onur SolmazAI Engineer Europe 20262026
Scaling Compute on Context

Metadata candidate

Jack MorrisAI Engineer World's Fair 20262026
Al HarrisAI Engineer Code 20252025
Rob CheungAI Engineer World's Fair 20242024
Barr YaronAI Engineer World's Fair 20252025
Tara AgyemangAI Engineer Europe 20262026
Kevin Madura, Mo BhasinAI Engineer World's Fair 20252025
Travis FrisingerAI Engineer World's Fair 20252025
The End of Apps

Metadata candidate

KitzeAI Engineer Europe 20262026
Dylan PatelAI Engineer World's Fair 20252025
Ofer MendelevitchAI Engineer Summit 20252025
Almog BakuAI Engineer Summit 20252025
The Log Is The Agent

Metadata candidate

Ishaan SehgalAI Engineer World's Fair 20262026
Diego Rodriguez, Eugene, Jonas Bauer, Shijia Liao, David Vorick, Alex AtallahAI Engineer World's Fair 20252025
Ted JohnsonAI Engineer World's Fair 20262026
Omer PrimorAI Engineer World's Fair 20262026
Amir HaghighatAI Engineer World's Fair 20252025
Cormac BrickAI Engineer Europe 20262026
Trust, but Verify

Metadata candidate

Shreya RajpalAI Engineer Summit 20232023
Useful General Intelligence

Metadata candidate

Danielle PerszykAI Engineer World's Fair 20252025
Jeff SchomayAI Engineer Summit 20232023
Anna Marie BenzonAI Engineer World's Fair 20262026
Harald KirschnerAI Engineer World's Fair 20252025
Vision: Zero Bugs

Metadata candidate

Johann Schleier-SmithAI Engineer Code 20252025
Moritz JohnerAI Engineer World's Fair 20262026
Nicholas ArcolanoAI Engineer Code 20252025
DottaAI Engineer World's Fair 20262026
Charles FryeAI Engineer World's Fair 20252025
Alex AlbertAI Engineer World's Fair 20242024
Dmitry PetrovAI Engineer World's Fair 20262026
Sam JulienAI Engineer World's Fair 20252025
Cormac BrickAI Engineer World's Fair 20262026
Dr. Jasper ZhangAI Engineer World's Fair 20252025
Jesús BarrasaAI Engineer World's Fair 20252025
Zach BlumenfeldAI Engineer Europe 20262026
Ari HeljakkaAI Engineer World's Fair 20252025
Chin Keong LamAI Engineer World's Fair 20252025
Balázs HorváthAI Engineer World's Fair 20262026
Rachel Lee Nabors (RL Nabors)AI Engineer Europe 20262026
Hamza TahirAI Engineer World's Fair 20262026
Zack ProserAI Engineer Europe 20262026
Ramana Siddanth EmaniAI Engineer World's Fair 20262026
Tun Shwe, Jeremy FrenayAI Engineer Europe 20262026
AI Engineer Summit 20252025

References

Coverage and source review
Processed transcripts
46 processed in full · 4 in the curated path
Automated source review
Passed
Metadata candidates
150 unreviewed; not verified topic membership
Corpus version
1bd8e407b26a07b33815594e1b2db5f41827119a2b3cb6fbf240f9fc571fc767

Automated review checks source support; it is not publication approval.

A synthesis of selected conference talks and technical references. Citations link to the source material; they do not imply that every talk on this subject is included.

  1. Function Calling is All You Need

    Raw function calling expresses the model's intended action; application code must execute it. In the speaker's API terminology, tools are a broader category that also includes hosted capabilities.

  2. Your Agent Didn’t Fail. Your Harness Did.

    Internal acceptance does not prove the intended result appeared at the user-visible boundary.

  3. JSON Schema: Object reference

    JSON syntax only establishes that a value can be parsed. JSON Schema adds constraints on the value’s structure. For objects, properties describes allowed field schemas but does not by itself require those fields; required names mandatory fields. Additional properties are allowed by default unless constrained. A missing field and a present null value are different. Composition matters: additionalProperties recognizes properties in its own subschema, whereas unevaluatedProperties can account for evaluated fields across subschemas in supporting drafts.

  4. JSON Schema 2020-12 Validation Primitives

    The type keyword accepts a type name or an array of unique type names; an instance must match at least one named type. Names are null, boolean, object, array, number, string, and integer. integer accepts numbers with zero fractional part. Validation does not prescribe coercing a numeric string into a number. enum accepts only values equal to an element of its array, which can contain different JSON types. Numeric minimum and maximum are inclusive; exclusiveMinimum and exclusiveMaximum are strict: x >= minimum, x <= maximum, x > exclusiveMinimum, x < exclusiveMaximum. multipleOf requires a positive divisor and an integral quotient. Array minItems and maxItems are nonnegative integer bounds on length; uniqueItems=true requires all elements to be distinct.

  5. JSON Schema Dialect Declaration

    A dialect defines which schema keywords and semantics apply. A root $schema declares that dialect using its meta-schema identifier; for example, https://json-schema.org/draft/2020-12/schema identifies Draft 2020-12. The meta-schema describes valid schemas, whereas the application schema describes valid instance data. Without $schema, an implementation may use external configuration or assume a dialect. Externally referenced schema documents declare their own dialect rather than inheriting the referring document's declaration.

  6. JSON Schema: Annotations

    JSON Schema's default keyword is an annotation; validation does not insert its value into missing fields. Documentation and form generators may use it as a hint. Descriptions explain the purpose of data but do not themselves enforce constraints. A default should satisfy its associated schema, although the annotation rules do not require that.

  7. JSON Schema Array Items and Tuples

    JSON arrays are ordered and may contain mixed types. For a homogeneous list, items applies one schema to every element; one failing element invalidates the array. An empty array satisfies this element constraint unless a length or other constraint excludes it. In Draft 2020-12, prefixItems assigns schemas by position, while items constrains the remaining elements. prefixItems alone neither requires every listed position nor forbids additional elements. For an exact-length tuple, combine positional schemas with a minimum length and exclusion of extra items. contains requires an element matching its subschema; minContains and maxContains constrain the number of matches.

  8. Structured model outputs — OpenAI API

    The API guide distinguishes schema-adherent structured output from JSON mode, which guarantees JSON syntax but not adherence to a specific schema. It distinguishes response formatting from function calling and documents a supported subset of JSON Schema. Applications must handle refusals and incomplete responses rather than assuming every response parses into the requested object. The guide explicitly warns that structured outputs can contain mistakes. Typed SDK helpers can connect application types and schemas, but successful parsing remains only one stage in a reliable consumer.

  9. Structured model outputs: supported contracts and incomplete responses

    The API distinguishes structured response formats from function calling. Structured Outputs supports a subset of JSON Schema, and unsupported schemas can be rejected. Applications must inspect completion status and handle refusals or output-token exhaustion rather than blindly treating every response as a completed record. The guide also states that schema-conforming outputs can contain mistakes. Streaming lets consumers process generated structure incrementally but does not make a partial prefix an authorized or semantically validated action.

  10. Revised Report on the Algorithmic Language ALGOL 60

    The revised ALGOL 60 report defines program syntax with recursive metalinguistic formulas: named syntactic variables, ::= for definition, | for alternatives, literal marks, and juxtaposition for sequence composition. This demonstrates an early continuing role for formal grammars: specifying which symbol sequences constitute a language independently of executing the processes those sequences describe.

  11. Implementing Remote Procedure Calls — Birrell and Nelson

    Birrell and Nelson’s February 1984 paper describes RPC as passing arguments across a network, executing a procedure remotely, and returning its results. Their Xerox Cedar implementation generated client and server stubs from Mesa interface modules listing procedure names and argument/result types. The stubs packed and unpacked values and dispatched incoming calls. This reduced the communication code application programmers needed to write, while leaving fundamental difficulties such as independent component failures.

  12. JSON Schema Media Type — draft-zyp-json-schema-01

    Kris Zyp's December 5, 2009 Internet-Draft described JSON Schema as a JSON-based contract for required application data, validation, documentation, navigation, and interaction. It separated a schema from the instance it describes and included constraints for types, properties, arrays, numeric bounds, and enumerated values. This establishes a dated early standards proposal for machine-readable JSON contracts.

  13. A Syntactic Neural Model for General-Purpose Code Generation

    Yin and Neubig’s 2017 model translated natural-language descriptions into abstract syntax trees: tree representations of a program’s grammatical structure. Generation selected grammar-production actions or emitted terminal tokens, then deterministically converted the tree into code. Encoding syntax in the available actions relieved the model of learning the entire grammar from limited training data. This provides an earlier example of enforcing structure during generation rather than checking only the finished text.

  14. PICARD: Parsing Incrementally for Constrained Auto-Regressive Decoding from Language Models

    PICARD addressed invalid SQL generated by language models through incremental parsing during decoding. At each step it checked high-probability candidate tokens and rejected inadmissible continuations. Unlike approaches requiring specialized decoder architectures or control vocabularies, PICARD operated on ordinary generated text and could be enabled at inference time. Its checks could also use the supplied database schema to reject nonexistent table or column names. The authors evaluated fine-tuned T5 models on Spider and CoSQL.

  15. Toolformer: Language Models Can Teach Themselves to Use Tools

    Timo Schick and colleagues' February 2023 Toolformer paper trained GPT-J to decide which of five APIs to call, when to call them, what arguments to supply, and how to incorporate returned results. Candidate calls were sampled from a few demonstrations, retained when they improved future-token prediction under the paper's loss criterion, and used for fine-tuning. The experiments included calculator, question-answering, search, translation, and calendar tools.

  16. Function calling and other API updates — OpenAI

    On June 13, 2023, OpenAI announced function calling for its GPT-4-0613 and GPT-3.5-Turbo-0613 API models. Developers supplied function descriptions through JSON Schema, and models selected functions and produced argument objects. The announcement presented both external-operation uses, such as weather lookup and email, and structured extraction through an extract_people_data signature. Thus function-shaped output served both application data extraction and proposed operations.

  17. Efficient Guided Generation for Large Language Models

    Brandon Willard and Rémi Louf's July 2023 paper formulates regular-expression guidance as transitions in a finite-state machine and precomputes an index from recognizer states to acceptable model-vocabulary tokens. This moves repeated validity work outside token sampling and replaces a full-vocabulary validity scan at every step with an average constant-time lookup in the analyzed construction.

  18. Transformers Generation Configuration and Termination

    With one beam, do_sample=false selects greedy decoding and do_sample=true selects multinomial sampling. Greedy decoding chooses a maximum-probability next token; sampling draws a token according to the selection distribution. Transformers documents termination through end-of-sequence token IDs, configured stop strings, and generation-length limits. max_new_tokens counts generated tokens without counting the prompt. These conditions control when generation stops, rather than checking that a structured record is complete. Application inference: a length cutoff or stop-string match can leave an unfinished string, array, or object; termination alone is insufficient evidence that parsing and validation will succeed.

  19. Python json: Decoder behavior and interoperability

    Python’s JSONDecoder.raw_decode returns both a decoded value and the position where its JSON document ended, explicitly permitting callers to process strings with trailing material. The default decoder also accepts NaN and infinities outside JSON’s number grammar. Its strict option controls unescaped control characters inside strings; it is not a general switch for every interoperability restriction. parse_constant can reject nonstandard numeric constants, and object_pairs_hook exposes member pairs for custom handling.

  20. RFC 8259: JSON object member uniqueness

    JSON object names should be unique. For duplicate names, implementations may retain the last value, reject the object, or expose every pair. Successful parsing therefore does not establish a consistent interpretation across consumers.

  21. Pydantic: JSON parsing and partial JSON parsing

    Pydantic publishes an incomplete-array example whose partial parser returns the two completed strings while discarding an unfinished third string; ordinary parsing raises an end-of-input error. Another example validates a model from an incomplete object because the retained fields satisfy that model. Thus obtaining a parsed, validated object does not establish that the original response finished. The page also demonstrates that strict validation accepts some representations when parsing JSON directly that it rejects as Python objects, including date strings and arrays representing tuples.

  22. TypeScript Handbook: The Basics

    TypeScript removes type annotations when producing JavaScript; the annotations do not change runtime behavior. Its documented compilation example retains the function body but removes parameter types. Application implication: annotating a parsed model response with a TypeScript interface does not install runtime checks on incoming values.

  23. Introducing Structured Outputs: dynamic constrained decoding

    OpenAI describes compiling supported JSON Schema into a context-free grammar and using a cached artifact to determine valid continuations after each generated token. Invalid next-token choices are masked during sampling. This differs from generating arbitrary text and only then parsing or validating it: constraints narrow the generation path itself. The mechanism enforces represented structure, not the factual correctness of field values. The announcement explicitly identifies refusal and early stopping as cases requiring separate handling.

  24. No more bad outputs with structured generation

    Outlines filters candidate tokens during generation rather than relying only on instructions to produce valid output.

  25. JSON String Escapes and Structural Recognition

    JSON strings begin and end with quotation marks. Quotation marks, backslashes, and control characters U+0000 through U+001F must be escaped inside strings. Legal escape forms include backslash followed by a designated character, or backslash-u followed by four hexadecimal digits. Objects and arrays recursively contain values. Application inference: a constrained decoder must retain whether it is inside a string, after a backslash, or partway through a Unicode escape across token boundaries. An escaped quotation mark does not end the string, and a brace inside a string does not close an object. Structural recognition therefore cannot be implemented by counting raw brace characters alone.

  26. XGrammar Token Alignment and Cached Masks

    XGrammar documents a byte-level pushdown automaton: a tokenizer token can span grammar boundaries or split a UTF-8 character, so its bytes must be matched through successive transitions. Rule entry pushes stack state; completion pops it. Finite-state recognition has bounded state, while the added stack supports recursive nesting. Preprocessing builds an optimized automaton and caches context-independent token validity keyed by the current stack-top node; context expansion precomputes possible following contexts. Cache storage uses accepted/rejected token lists or bitsets plus context-dependent token lists. Each generation step retrieves cached validity, checks context-dependent tokens against live stacks, unions accepted tokens across ambiguous stacks, and masks invalid logits to negative infinity. After selection, the token advances the live parser state. Persistent stacks share structure to reduce copying. This caches neither every possible full stack nor all future work.

  27. Grammar-Aligned Decoding

    Ordinary grammar-constrained decoding keeps any token whose prefix has at least one valid completion, then renormalizes among those tokens. This is not generally the model’s distribution conditioned on producing a complete valid string. Exact conditioning also weights each next-token choice by the probability that its future continuation will satisfy the grammar. Grammar-Aligned Decoding formalizes this distinction; ASAp approximates future grammaticality using accumulated samples. The difference explains how enforcing syntax can change content probabilities even when every completed output is grammatical.

  28. Gemini API: Structured outputs

    Google's current guide distinguishes structured final responses from function calling used to request application actions. It documents only a subset of JSON Schema, warns that very large or deeply nested schemas may be rejected, and tells applications to validate values and handle schema-compliant but semantically incorrect output. The page separately labels combining structured outputs with tools as preview functionality limited to specified Gemini 3 models.

  29. llama.cpp: Grammars and JSON Schema conversion

    llama.cpp supports GBNF grammars and conversion of a subset of JSON Schema into grammar constraints. Its documentation warns that unsupported schema features may be skipped silently and recommends inspecting converter warnings and testing the resulting grammar. The schema used for output constraints is not automatically inserted into the model prompt, so the intended content and structure still need explanation to the model; tool-calling schemas have different prompt handling. A valid application schema is therefore not evidence that a particular runtime enforces every keyword.

  30. Generating Structured Outputs from Language Models: Benchmark and Studies

    Saibo Geng and colleagues' February 2025 JSONSchemaBench study evaluates constrained decoders separately on efficiency, schema-feature coverage, compliance, and task quality. Its processed collection contains 9,558 schemas from function-call, API, configuration, and repository sources. The authors distinguish accepting a schema, producing compliant samples, and exactly implementing the schema's accepted language; finite generated samples cannot establish the last property.

  31. The Hidden Cost of Structure: How Constrained Decoding Affects Language Model Performance

    Maximilian Schall and Gerard de Melo's September 2025 study tested 11 models and found that structural constraints and task quality can move differently. In their experiments, instruction-tuned models often lost quality on generation tasks under constrained decoding while classification behavior was more stable; base models showed a different pattern. The result supports evaluating semantic task performance separately from format compliance.

  32. OWASP Input Validation Cheat Sheet

    OWASP distinguishes syntactic validation of field representation from semantic validation of values in their business context. Its examples include ensuring a start date precedes an end date and checking a price against an expected range. Validation applies to potentially untrusted backend feeds as well as user-facing inputs. Recommended mechanisms include schema validation, allowed-value checks, and bounds on values and lengths.

  33. Pydantic is STILL all you need

    Model-level validators can enforce relationships between fields, not just individual field types.

  34. Design by Contract Introduction

    A precondition states what the caller must establish before invoking a routine. Given that condition, the implementation owes the postcondition on successful completion; it may assume the caller fulfilled the precondition. A postcondition can relate resulting state to entry state, such as count=old(count)+1 and lookup(key)=insertedValue. A class invariant expresses consistency constraints across the class's operations, such as 0≤count≤capacity. An output schema can check declared structure and value restrictions, but ordinarily does not establish that the caller was entitled to invoke the operation, that persistent state changed correctly, or that cross-operation invariants hold.

  35. NIST SP 800-162: Guide to Attribute Based Access Control Definition and Considerations

    NIST defines attribute-based access control as deciding whether requested operations are allowed by evaluating attributes of the subject, protected object, requested operation, and sometimes current environment conditions against policy, rules, or relationships. Applied to a model-produced action request, valid argument shape supplies only part of the decision; current actor, target resource, operation, conditions, and policy remain independent authorization inputs.

  36. Human seeded Evals — Samuel Colvin, Pydantic

    State known semantic constraints in field descriptions instead of relying solely on corrective retries.

  37. Human seeded Evals — Samuel Colvin, Pydantic

    Returning validation errors to the model can turn a failed extraction into a successful retry.

  38. "I've never seen anything scarier than an LLM with tool calls." — Erik Meijer aka @HeadinTheBox

    The speaker argues that broad judgments such as whether an answer is safe or a question is proper lack the mathematical specification needed for formal proof.

  39. Tools — Model Context Protocol specification 2025-06-18

    MCP tools expose names, descriptions, and input schemas, with optional output schemas for structured results. Tool execution errors can be returned with isError, distinct from protocol errors. The specification requires servers to validate inputs and implement access controls, and recommends client-side result validation and tool timeouts. Tool annotations are untrusted unless supplied by a trusted server. Standardizing discovery and invocation does not itself grant authority: the host still decides what may execute and when a human can deny a proposed action.

  40. Tool Calling Is Not Just Plumbing for AI Agents

    Use simple names, instruction-bearing descriptions, and explicit input and output schemas to make tool use and composition understandable.

  41. Agentic Search for Context Engineering

    Start with a tool's core purpose, then add use conditions, exclusions, and prerequisites when routing becomes unreliable.

  42. Writing effective tools for agents — with agents

    Anthropic recommends tools with distinct purposes and explicit parameter meanings rather than mechanically wrapping every API endpoint. Its examples contrast searching contacts with returning an entire address book, and consolidate related customer information into one contextual lookup. Tool descriptions should explain specialized terminology, resource relationships, and expected inputs and outputs. The team reports correcting a web-search behavior that unnecessarily appended 2025 to queries by improving the description. Error responses should identify actionable corrections rather than expose only opaque codes.

  43. AI Engineering with the Google Gemini 2.5 Model Family

    Making many tools easy to attach can create a tool-selection problem for the model.

  44. When2Call: When (not) to Call Tools

    When2Call evaluates whether a model should call a tool, request missing information, or acknowledge that available tools cannot answer. Its construction includes removing information needed for a required parameter and creating questions related to, but unsupported by, the supplied tool. The primary evaluation selects among behavioral alternatives rather than executing calls. This separates deciding whether a call is appropriate from checking a generated call’s arguments.

  45. Break It 'Til You Make It: Building the Self-Improving Stack for AI Agents

    Evaluate tool selection and argument correctness separately: choosing the intended function does not establish that the call is correct.

  46. Function calling with the Gemini API

    The Interactions guide documents auto selection, which permits a direct response or function call; any, which requires a call; and none, which prohibits calls. Its allowed_tools example restricts eligible functions. The streaming example accumulates argument fragments separately by event index, retains each call's identity, and parses accumulated arguments after interaction.completed. The guide requires reconstructing complete calls before execution. It also explicitly documents combining function calling with structured output for Gemini 3 series models.

  47. Let's Build an Agent from Scratch — Kam Lasater

    The refactored demo executes an array of tool calls concurrently and attaches a tool call ID to each returned result.

  48. Function Calling is All You Need

    The demonstrated agent repeatedly processes model tool calls until the model returns no further calls.

  49. Let's Build an Agent from Scratch — Kam Lasater

    In the demonstrated Chat Completions implementation, application code executes requested tools and appends both calls and results to the conversation before invoking the model again.

  50. Vercel AI SDK Masterclass: From Fundamentals to Deep Research

    The weather example groups two independent retrieval calls into one step, then performs dependent arithmetic and final text generation in subsequent steps.

  51. OWASP Authorization Cheat Sheet

    Authentication establishes identity, while authorization checks whether an entity may perform a requested action. OWASP recommends minimum necessary privileges, denial by default, and permission checks on every request regardless of its source. Its design guidance enumerates users, resources, and operations, including reads and writes, then tests that the resulting permission rules are enforced. Application implication: a corrected model proposal remains a new request requiring the same permission checks.

  52. How we hacked YC Spring 2025 batch’s AI agents

    IDOR, or Insecure Direct Object Reference, occurs when tools accept object IDs without checking that the requesting user may access those objects.

  53. OWASP Transaction Authorization Cheat Sheet

    Transaction approval should let users identify and acknowledge significant operation details. OWASP requires server-side enforcement, ordered authorization steps, protection against changing transaction data, and a final authorization gate tied to execution. Changed transaction details should invalidate prior authorization or restart the process. Authorization credentials should have a limited lifetime and be unique to an operation. The guide identifies approving one transaction but executing altered details as a time-of-check-to-time-of-use failure.

  54. Your Agent Didn’t Fail. Your Harness Did.

    Approval must remain bound to one specific action and its scope, identity, arguments, and lifetime; expiration should terminate the approval path.

  55. It's 10pm. Do You Know Where Your Agents Are?

    RFC 8693 Token Exchange is used to combine delegated user authority with runtime identity in a per-tool authorization request.

  56. Function calling

    The application supplies tool descriptions and argument schemas; the model returns a proposed function name and arguments. The application parses arguments, dispatches its own code, and sends the resulting output back with the corresponding call identifier. The model can then answer or request further calls. Strict mode constrains arguments to the supported schema; object schemas require additionalProperties:false and required properties, with nullable types representing optional values. Application-side validation and authorization must occur before effects: a schema-valid customer identifier can still identify the wrong customer or an inaccessible account.

  57. Tool use with Claude

    Claude’s documentation distinguishes application-defined tools, Anthropic-defined client tools, and server tools. The application executes its own tools and returns results. It also executes Anthropic-schema client tools, including bash and text editing, despite receiving their definitions from the provider. Server tools such as web search and web fetch execute on Anthropic’s infrastructure without application handler code. Definition ownership and execution ownership are therefore separate properties.

  58. MCP tools: application security responsibilities

    MCP requires servers to validate tool inputs, enforce access controls, rate-limit invocations, and sanitize outputs. Clients should expose inputs before execution, seek confirmation for sensitive operations, validate results before passing them to the model, impose timeouts, and log usage. Input schemas describe admissible argument structure; they do not confer permission. The application must check the requested action and target against the caller's authority. When an output schema is provided, server results must conform and clients should validate them. Protocol errors and isError tool results must be handled as failures rather than successful actions.

  59. AIP-151: Long-running operations

    Google's long-running-operation pattern returns an operation object instead of the ultimate result, allowing clients to track progress and retrieve the outcome. Metadata can report progress or partial failures. Errors that prevent starting are returned immediately; failures during execution belong in Operation.error. A resource being created or deleted may appear in reads while explicitly marked unusable.

  60. RFC 9110: Conditional requests and successful response semantics

    If-Match conditions a request on the current representation's entity tag and uses strong comparison. The origin server evaluates it before applying the method; a false condition forbids performing that method, commonly producing 412. This prevents lost updates from concurrent writers. Separately, 202 means processing was accepted but remains incomplete and might never occur; its response should describe status and provide monitoring information. A 204 indicates successful fulfillment without response content. Application implication: preserve these distinctions when mapping provider responses into tool results.

  61. GitHub REST API: Create an issue

    GitHub creates issues through POST /repos/{owner}/{repo}/issues with a required title. Fine-grained tokens require Issues write permission; disabled issues produce 410 Gone. The documented 201 response includes an issue id, repository-scoped number, title, and URLs. Creation can trigger notifications. Some requested attributes, including labels and assignees, are silently dropped when the user lacks push access. Consequently, even a creation response does not establish that every requested attribute was applied.

  62. Your Agent Didn’t Fail. Your Harness Did.

    Bound external waits, record terminal outcomes, and keep recovery commands outside the blocked work queue.

  63. Your Agent Is Wasting Tokens and You Don't Know It - Erik Hanchett, AWS

    Set a maximum iteration count for the agent's tool loop.

  64. MCP Tasks extension: capability, lifecycle, and result retrieval

    Tasks are an optional extension, io.modelcontextprotocol/tasks, currently augmenting tools/call. Both peers declare support; clients include it in per-request capabilities. The server chooses an ordinary result or CreateTaskResult with resultType: task and taskId, and must durably create a discoverable task before returning its handle. Clients poll tasks/get, respecting pollIntervalMs. Working means execution continues; input_required exposes inputRequests answered through tasks/update. Completed includes the original method's result, even a tool result with isError; failed carries a JSON-RPC error; cancelled carries cancellation status. Optional notifications/tasks deliver equivalent full state and results through subscriptions/listen for acknowledged taskIds. Ordinary notifications/progress are unsupported for tasks. Retention uses creation time plus ttlMs; null means unlimited TTL, and TTL may change.

  65. Instructor: Retry Logic with Tenacity

    Instructor documents selecting retryable exception types and imposing attempt or elapsed-time stop conditions. Failed attempts are passed to reask handlers for contextual correction feedback, and retry exhaustion exposes attempt history. Its runtime-context example checks that an extracted quotation occurs in supplied source text. This demonstrates a deterministic check beyond field types, followed by bounded regeneration when validation fails.

  66. RFC 9457: Problem Details for HTTP APIs

    RFC 9457, published in July 2023, defines a machine-readable HTTP error object with a problem type, human-readable title and detail, advisory status, occurrence identifier, and type-specific extensions. It advises clients not to parse the human-readable detail for machine decisions and shows structured per-field validation errors using JSON Pointer locations. Problem details describe interface failures rather than exposing internal debugging data.

  67. Resolving an ambiguous payment request

    A timeout can leave the client unable to tell whether Stripe received or executed a request. Stripe documents retrying with the same key and parameters until a server result is obtained, using backoff. An HTTP 500 remains indeterminate: side effects may exist even though the cached response stays unchanged. Stripe may reconcile partial mutations and emit webhook events for resulting objects. Supplying a local operation identifier in metadata lets the application correlate these objects with its own pending operation. Engineering consequence: preserve pending state until authoritative provider evidence resolves it; do not infer failure solely from a timeout.

  68. Making Retries Safe with Idempotent APIs

    A timeout can leave the caller unsure whether a mutation succeeded. AWS describes caller-provided request identifiers reused for retries of the same intent, with duplicate detection scoped to the caller and identifier. Identical parameters alone do not establish identical intent. The service must durably coordinate recording the identifier with all related mutations as an ACID operation: recording first can suppress work that never happened, while mutating first can allow duplicate effects after a crash. Duplicate requests receive semantically equivalent responses; reusing a key with changed parameters produces a mismatch error. Retention must account for late retries, with a service-specific lifetime. Merely putting a key in logs supplies audit evidence, not atomic duplicate prevention. Application inference: a local key log cannot guarantee an external side effect is idempotent unless that effect participates in the relevant protocol.

  69. Stripe retry keys and retention boundaries

    For a mutation, send an idempotency key and reuse that key with identical parameters when retrying an ambiguous connection failure. Stripe stores the first executed request's status and response body, including failures such as HTTP 500, and returns that result for repeated requests. Parameter mismatches produce an error. Keys may be pruned after they are at least 24 hours old; reuse after pruning creates a new request. Results are saved only after endpoint execution begins, so validation failures and conflicts with concurrently executing requests do not create a saved result.

  70. Idempotent requests

    Stripe stores the first executing request's status code and response body for an idempotency key, including failures such as HTTP 500, and returns the stored result on retries. Parameter mismatches are rejected. A request rejected before execution because of validation or a conflict with a concurrently executing request does not create a saved idempotent result and can be retried. Keys may be pruned once at least 24 hours old; reuse after pruning starts a new request. Thus an in-progress conflict, a stored failure, and an expired key have different recovery semantics.

  71. Temporal Activity Definition: Idempotency

    Idempotency means repeated execution has no additional externally visible effect beyond one execution. Completed activities are not rerun during workflow replay, but an activity can finish an external operation and crash before Temporal records completion; retry can repeat that operation. Temporal therefore recommends idempotent activities and explains that external services enforce idempotency keys. Application inference: use stable logical-operation keys for generation submissions, persist provider job identifiers, reconcile uncertain submissions before resubmitting, and deduplicate artifact registration. Deterministic workflow replay alone does not make provider calls exactly once.

  72. LangGraph Functional API: deterministic resumption and idempotency

    Functional API resumption restarts the entrypoint and restores completed task and subgraph results from checkpoints. Ordinary entrypoint code runs again. Put randomness, clock reads, model calls and individual side effects inside tasks so persisted results can be reused. Keep task and interrupt ordering consistent with the recorded execution. A task that started but did not finish can execute again, including when an external effect occurred before its result was saved. Checkpointing therefore does not replace idempotency keys or checks for previously completed effects. Reusing a saved model result preserves that recorded value; calling the model again is a new inference, not reconstruction of an identical historical response.

  73. BFCL V3: Multi-Turn and Multi-Step Function Calling

    BFCL V3 initializes each case with a backend fixture and evaluates every turn using both resulting state and required execution-path checks. State checks assess mutations, while required-call checks cover information requests that leave state unchanged. The authors explain that correct end state alone cannot establish that necessary information-gathering calls occurred. Their API fixtures also receive unit tests for individual functions, chained behavior, and error conditions. An entry must pass both checks in every turn; exceeding the documented step limit makes the entry incorrect.

  74. Building enterprise LLM agents that work

    Build golden cases that specify expected function calls, parameters, tool outputs, and final responses, rather than evaluating only the final answer.

  75. Pydantic AI: Unit testing

    Pydantic AI documents replacing a real model with TestModel or FunctionModel and inspecting captured request/result messages. TestModel procedurally generates schema-shaped arguments without understanding the task. In the published weather example, its chosen past date exercises historical lookup but misses the forecast branch; FunctionModel supplies controlled arguments to exercise that branch. Agent.override can replace models, dependencies, or toolsets. This provides a concrete way to test interface behavior separately from variable model selection.

  76. Every Solo Agent Builder Eventually Reinvents a Worse Version of CI/CD

    The speaker identifies regression testing, CI monitoring, and contract testing as recurring operational needs in independently built agent systems.

  77. Model Context Protocol: Architecture, revision 2026-07-28

    MCP separates a host application, its clients, and servers that expose capabilities. The host coordinates model integration, context aggregation, permissions, and consent; each client communicates with one server. Servers supply resources, tools, and prompts and may run locally or remotely. The 2026-07-28 architecture is explicitly stateless: every request carries protocol version and capabilities. Servers request client input through an InputRequiredResult in a reply. MCP standardizes communication; it does not supply the application’s planning policy or decide which actions are appropriate.

  78. Model Context Protocol: Specification and trust principles, revision 2026-07-28

    MCP exposes resources for context and data, prompts for reusable messages and workflows, and tools for executable functions. These primitives have different jobs even when they concern the same underlying service. The specification requires user control over data access and operations, explicit consent before sharing data with servers, and careful handling of arbitrary tool execution. It also states that the protocol cannot itself enforce all trust principles: implementers need authorization flows, access controls, and clear interfaces. Interoperability does not eliminate the host’s security responsibilities.

  79. Model Context Protocol: Tools, revision 2026-07-28

    Servers expose tools/list discovery and tools/call invocation. Definitions contain a name, description, input JSON Schema, and optional output schema; output-schema results must conform and clients should validate them. Protocol errors differ from execution failures returned with isError. Names are scoped to one server, so aggregation needs disambiguation. The available catalog can change over time or with request authorization, but not implicitly with connection state. Deterministic ordering is recommended. Servers advertising listChanged should notify clients subscribed through subscriptions/listen with toolsListChanged. Clients still consume pagination and caching rules rather than assuming the first list is permanently complete. Tool annotations are untrusted unless their server is trusted.

  80. Remote MCPs: What we learned from shipping — John Welsh, Anthropic

    A shared integration interface reduces duplicated plumbing and makes integrations reusable across services; the speaker recommends MCP for presenting context to models.

  81. Letting AI Interface with Your App with MCP

    Model Context Protocol (MCP) standardizes client-server communication while leaving service-specific capabilities with the service provider.

  82. Model Context Protocol: Transport overview, revision 2026-07-28

    Transport bindings carry the same JSON-RPC protocol semantics through different channels. The stdio binding uses newline-delimited messages over a client-launched subprocess’s standard streams. Streamable HTTP sends messages by POST to one MCP endpoint, with replies as JSON or request-scoped SSE streams. Every request carries version and capabilities in its body metadata. The revision explicitly contrasts this with earlier connection-scoped initialize handshakes. Transport choice changes framing, deployment, and cancellation mechanics; it does not change a tool’s business meaning.

  83. Pydantic is all you need

    Structured output needs schema validation and typed parsing, not merely a reliably located JSON string.

  84. AI Engineering with the Google Gemini 2.5 Model Family

    MCP standardizes reusable tool integrations; the model still selects tools from declarations and the prompt, as in ordinary function calling.

  85. Your Agent Didn’t Fail. Your Harness Did.

    Trace one real run from trigger identity through inherited state, authority, execution attempts, and surviving external evidence.

  86. RFC 9396: OAuth 2.0 Rich Authorization Requests

    RFC 9396, published in May 2023, defines authorization_details for carrying fine-grained, API-specific authorization requirements rather than relying only on coarse scope strings. Authorization servers must reject unknown detail types, fields, wrong types, invalid values, or missing required fields. The RFC also warns that comparing two authorization-detail JSON objects mechanically is generally insufficient because field semantics can alter the rights granted.

  87. Language Models (Mostly) Know What They Know

    Confidence calibration concerns agreement between predicted probabilities and observed correctness: among comparable predictions assigned probability p, approximately fraction p should be correct. The paper assesses this by binning predictions and plotting mean confidence against empirical correctness. For B equally populated bins its ECE is (1/B) sum_b |accuracy_b-confidence_b|. Its multiple-choice calibration charts include all answer options, whereas its ECE uses top predictions, so the evaluated population must be stated. The experiments find calibration depends on model, question format, and task; learned P(IK) struggles on new tasks. Application inference: emitting a confidence number in a typed record does not establish calibration. Compare those numbers with correctness labels on representative held-out examples using a specified scoring rule.

  88. No more bad outputs with structured generation

    The speaker reports approximately negligible inference overhead for Outlines in a comparison with Guidance, while acknowledging a separate time trade-off.

  89. Pydantic is all you need

    Put field descriptions, nested structures, and associated behavior into the model so the schema and prompting instructions share a reviewable definition.

  90. Pydantic is all you need

    Separate validation, error handling, and re-asking, and feed validation failures back into a bounded retry process.