Agent Definition Language (ADL)
Agent Definition Language (ADL) is a declarative YAML format for defining an A2A (Agent-to-Agent) agent as code. A single agent.yaml manifest captures everything about an agent - its provider and model, the tools it can call, the skills it knows, its server and authentication settings, and its CI/CD and deployment wiring - so the whole agent is version-controlled, reviewable, and reproducible instead of scattered across hand-written boilerplate.
ADL is the declarative layer that sits above the Agent Development Kit (ADK). You describe the agent once in ADL, and the ADL CLI generates a complete, enterprise-ready project - in Go, Rust, or TypeScript - that builds on the ADK runtime. Regenerating after an edit preserves your custom code through .adl-ignore, so the manifest stays the single source of truth as the agent evolves.
Canonical reference. The full ADL schema, field reference, and authoring guide live at adl.inference-gateway.com. This page is a conceptual overview; the ADL CLI reference documents the tooling that consumes ADL files.
What an ADL file looks like
Every ADL manifest is a YAML document that starts with an apiVersion and kind, then describes the agent under spec:
apiVersion: adl.inference-gateway.com/v1
kind: Agent
metadata:
name: my-weather-agent
description: 'Provides weather information'
version: '0.1.0'
spec:
capabilities:
streaming: true
agent:
provider: deepseek
model: deepseek-v4-flash
systemPrompt: 'You are a helpful weather assistant.'
tools:
- id: get_weather
name: get_weather
description: 'Get current weather for a city'
tags:
- weather
schema:
type: object
properties:
city:
type: string
description: 'City name'
required:
- city
server:
port: 8080
language:
go:
module: 'github.com/example/my-weather-agent'
version: '1.26.2'Scaffold, validate, and generate a runnable project from a manifest like this with the ADL CLI:
adl init my-weather-agent # interactive wizard writes agent.yaml
adl validate agent.yaml # check it against the schema
adl generate --file agent.yaml --output ./my-weather-agentSee the ADL CLI reference for the complete command surface and a full field-by-field schema breakdown.
Connecting to MCP servers
An agent can reach out to Model Context Protocol (MCP) servers at runtime to discover and call external tools, on top of the tools it defines locally under spec.tools. This is configured with a single spec.agent.mcp block: servers lists which servers to connect to, and the remaining fields tune the ADK's built-in MCP client (endpoint, refresh, timeouts, retries) globally across them.
spec:
agent:
provider: deepseek
model: deepseek-v4-flash
mcp:
enabled: true
servers:
- name: filesystem
transport: http
url: http://localhost:3000enabled is the master switch and is required whenever the mcp block is present - when it is false (the default) no MCP client is generated, regardless of what servers lists. See the ADL CLI schema reference for every field and its default.
How ADL fits the ecosystem
- ADL - the declarative YAML contract that describes an agent. Canonical spec: adl.inference-gateway.com.
- ADL CLI - reads an ADL file and generates a runnable A2A agent project, including tool stubs, skills, CI/CD, and deployment manifests.
- Agent Development Kit (ADK) - the Go, TypeScript, and Rust runtime libraries that generated projects build on.
- A2A - the Agent-to-Agent protocol the generated agent speaks, so the gateway and its CLI can discover and call it.
Related
- ADL CLI - the command-line tool that scaffolds and regenerates agents from ADL files.
- Go ADK, TypeScript ADK, Rust ADK - the runtimes generated projects build on.
- A2A Integration - the protocol ADL-defined agents speak.
- ADL specification - canonical schema, field reference, and authoring guide.
