Skip to main content
Glama

Why AgentEng?

AgentEng brings Agent Engineering HQ to your terminal and coding agent. It is an offline-capable Python CLI, MCP server and A2A agent for conferences, meetups and events in London and San Francisco, with a directory of tools across 12 agent engineering disciplines.

Explore the bundled catalogue with no provider key or model calls. Read cards and tables in your terminal, or use the same structured results through CLI JSON, MCP, A2A and HTTP.

What you can do

How AgentEng helps

Find your next event

Browse events, speakers, talks, agendas and the day guide.

Explore the discipline

Search tools, models and infrastructure across 12 disciplines, with source attribution.

Bring your coding agent

Connect Codex, Claude Code or Cursor through MCP; use A2A or HTTP for other clients.

Make the most of event day

Read the day guide and directions, follow the live now/next board and play talk bingo.

The catalogue is a snapshot. Follow official event and registration links for current details and ticket availability. See data and attribution.

Related MCP server: docfy-mcp

Quickstart

1. Install

AgentEng requires Python 3.12+. The installer includes the CLI, MCP and A2A extras, bootstraps uv when needed and never uses sudo.

curl -fsSL https://agentengineering.world/install.sh | sh

Prefer a package manager? Choose either:

# uv
uv tool install --upgrade 'agenteng[server]'

# pip
pip install -U 'agenteng[server]'

To pin the installer to a release, pass the version to sh:

curl -fsSL https://agentengineering.world/install.sh | AGENTENG_VERSION=0.0.28 sh

2. Discover an event

agenteng                            # interactive menu (TTY)
agenteng discover                   # London / San Francisco overview
agenteng events --upcoming
agenteng event agenteng-london-2026
agenteng speakers --city London
agenteng agenda agenteng-london-2026
agenteng guide                      # London day guide

Use the IDs returned by agenteng events to explore other published events. Run agenteng --help or agenteng COMMAND --help for options. The short alias ae also works: ae talks is equivalent to agenteng talks.

3. Get structured results

agenteng --json discover
agenteng --json talks
AGENTENG_OUTPUT=json agenteng events --upcoming

Place --json before the subcommand. Non-TTY stdout also returns the shared Result JSON automatically, so commands work naturally in pipes and agent workflows.

Full commands, flags and exit codes: CLI reference.

Explore the tool directory

Browse tools, models and infrastructure by discipline, kind or search term. Listings include source links and work offline.

agenteng disciplines
agenteng tools --discipline memory
agenteng tools --discipline inference --kind runtime
agenteng tools --search 'Gemini CLI'
agenteng tool langgraph
agenteng --json tools --discipline code --limit 25

The 12 disciplines: Prompt · Context · Harness · Eval · Memory · Inference · Loop · Agentic · Code · Protocol · Graph · Search. agenteng disciplines also lists the site's Factory and Decision Engineering, which have no tool listings yet.

See the tool directory guide for filters, pagination and attribution.

Connect your agent

Give your coding agent access to events and tools. Try asking: “Find the next London conference” or “List memory tools.”

MCP (local)

After installing agenteng[server], add this to your client's MCP configuration:

{
  "mcpServers": {
    "agenteng": {
      "command": "agenteng",
      "args": ["mcp"]
    }
  }
}

For client-specific setup:

agenteng connect codex
agenteng connect claude-code
agenteng connect cursor

See the integration guide for local and hosted connections.

Hosted MCP, A2A and HTTP

Base URL: a2a.agentengineering.world. Use the hosted service to connect without a local MCP process.

Interface

Route

MCP Streamable HTTP

/mcp/

A2A 1.0 discovery

/.well-known/agent-card.json

A2A JSON-RPC

/ with A2A-Version: 1.0

Typed HTTP query

/v1/query

The same typed request works as an A2A JSON data part or an HTTP body. Request shapes and architecture: ARCHITECTURE.md.

Interface

Route

Catalogue / health

/catalogue.json, /health

OpenAPI / Swagger / ReDoc

/openapi.json, /docs, /redoc

Crawlable discovery

/, /events/EVENT_ID, /events.json, /tools, /tools/TOOL_ID

Full tool directory feed

/tools.json

Crawler / agent guides

/llms.txt, /robots.txt, /sitemap.xml

Public operations (CLI, MCP, A2A, HTTP) include: disciplines, tools, tool, discover, events, event, agenda, speakers, speaker, talks, talk, faq, venue, sponsors, conduct, themes, now, next, live, bingo, about, hq, guide, tickets, recordings, search, ask and participate.

Begin with discover for featured London/San Francisco events, or events for published IDs. Full command and flag reference: docs/COMMANDS.md.

Event day

AgentEng London is on Fri 16 October 2026 at Everyman Canary Wharf, Crossrail Place, London E14 5AR, and is fully booked. Doors 08:00, programme starts 9:00 sharp.

agenteng guide                   # the website's day guide, every section
agenteng guide arriving          # one section; agenteng guide --list shows them all
agenteng venue london            # address, best way in, walk video, times, help
agenteng live                    # full-screen now/next board (Ctrl-C exits)
agenteng live --at 10:40          # preview the board at a given time
agenteng bingo --seed 7           # talk bingo; same seed, same card
agenteng bingo --format html --output bingo.html
agenteng about                   # what Agent Engineering is
agenteng hq                      # manifesto, mindset, reading
agenteng unsave SESSION_ID
agenteng recordings

Piped or with --json before the subcommand, agenteng live prints one Result JSON snapshot (agenteng --json live --once). Website command wording is tracked in docs/SITE-SYNC.md.

Experimental: drive a coding agent (agenteng code)

agenteng code launches an ACP coding agent you already use, attaches the AgentEng MCP server and streams its work. Every permission is asked in your terminal. Options and output may change between releases.

uv tool install 'agenteng[acp]'
agenteng code --list
agenteng code --agent claude "summarise talk agenteng-london-2026-14"

Details: ACP design note and docs.

Privacy

  • No telemetry. Catalogue lookups run offline by default; --remote URL sends requests to your chosen host.

  • Local storage. Optional agenteng code logs stay in your config directory. Public operations create no attendee records or personal agendas.

  • Your chosen coding agent. agenteng code sends prompts to the coding agent you launch and its provider.

  • No stored conversations. The public AgentEng application keeps no conversations or request bodies; the hosting platform maintains standard request logs.

Full policy: Privacy in DATA.md.

Documentation

Topic

Link

Start here

docs.agentengineering.world

CLI command reference

COMMANDS.md

Coding-agent integrations

INTEGRATIONS

Tool directory

TOOLS

ACP client

ACP

Public participation policy

PARTICIPATION

Community

COMMUNITY.md

Data and privacy

DATA

Architecture

ARCHITECTURE

Releases

RELEASING

Changelog

CHANGELOG.md

Contributing

Help improve the code, documentation or source-backed event and tool data. Start with CONTRIBUTING.md or open an issue.

git clone https://github.com/SuperagenticAI/agenteng.git
cd agenteng
uv sync --frozen --all-extras
uv run --frozen pytest -q
uv run --frozen ruff check src tests scripts
uv run --frozen ruff format --check src tests scripts

Follow the Code of Conduct. To report a vulnerability, use SECURITY.md.

License

Source code and original documentation are licensed under Apache-2.0. Third-party event and speaker material retains its own rights; see NOTICE and DATA.md.

Available Tools

1 tool
agentengC
Read-onlyIdempotent

Discover AgentEng conferences in London and San Francisco, browse agent-engineering tools across twelve disciplines, query public facts from Agent Engineering HQ.

NameRequiredDescriptionDefault
requestYes

Output Schema

NameRequiredDescription
dataNo
staleYes
usageNo
answerYes
engineNo
statusNo
sourcesNo
artifactNo
evaluated_atYes
published_atYes
catalogue_versionYes

TDQS

C2.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations (readOnly, idempotent, non-destructive, closed-world) already carry the safety profile, so the factual bar is low. The description adds no behavioral context beyond the domain: nothing about pagination via limit/offset, format switching (ics/svg/html/text), chat history semantics, or the read-only nature of the catalogue queries.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with three parallel clauses and no filler; it is efficiently sized. It just prioritizes breadth of domain over the schema-dispatch information an agent most needs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. But for a tool of this complexity (31 operations, ~22 request fields, multiple output formats), a three-clause sentence is far too thin to be complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for roughly two dozen fields and it largely does not. The phrase 'twelve disciplines' implicitly ties to the 12-value discipline enum and 'London and San Francisco' hints at city, but operation, limit, offset, format, engine, kind, tool_status, history, and the rest are entirely unexplained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives broad verbs and resources (discover conferences, browse tools, query facts) for a domain-specific aggregator, so the general purpose is graspable. But the tool exposes 31 operations (events, agenda, speakers, talks, faq, tickets, search, ask, chat, guide, etc.), and the description accounts for only three loose families. An agent cannot tell what the tool actually dispatches on without reading the schema enum.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no mention of which operation to pick for which intent, and no exclusions. With no siblings the alternative-tool angle is moot, but the operation-selection problem is severe and unaddressed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev0.0.27
    • Changedagenteng2 fields changed
      • addedInput schema / $defs / Request / properties / include_a2a
        Added value: +{
        +  "default": false,
        +  "title": "Include A2A",
        +  "type": "boolean"
        +}
      • changedInput schema / $defs / Request / properties / operation / enum
        Previous value: -[
        -  "events",
        -  "event",
        -  "agenda",
        -  "speakers",
        -  "speaker",
        -  "talks",
        -  "talk",
        -  "faq",
        -  "venue",
        -  "sponsors",
        -  "conduct",
        -  "themes",
        -  "about",
        -  "hq",
        -  "guide",
        -  "now",
        -  "next",
        -  "live",
        -  "bingo",
        -  "tickets",
        -  "recordings",
        -  "a2a-talks",
        -  "search",
        -  "ask",
        -  "chat",
        -  "participate",
        -  "discover",
        -  "disciplines",
        -  "tools",
        -  "tool"
        -]New value: +[
        +  "events",
        +  "event",
        +  "agenda",
        +  "speakers",
        +  "speaker",
        +  "talks",
        +  "talk",
        +  "faq",
        +  "venue",
        +  "sponsors",
        +  "conduct",
        +  "themes",
        +  "about",
        +  "hq",
        +  "guide",
        +  "now",
        +  "next",
        +  "live",
        +  "bingo",
        +  "tickets",
        +  "recordings",
        +  "a2a-talks",
        +  "gallery",
        +  "search",
        +  "ask",
        +  "chat",
        +  "participate",
        +  "discover",
        +  "disciplines",
        +  "tools",
        +  "tool"
        +]
  2. 1 tool updatev0.0.23
    • Changedagenteng2 fields changed
      • changedInput schema / $defs / Request / properties / operation / enum
        Previous value: -[
        -  "events",
        -  "event",
        -  "agenda",
        -  "speakers",
        -  "speaker",
        -  "talks",
        -  "talk",
        -  "faq",
        -  "venue",
        -  "sponsors",
        -  "conduct",
        -  "themes",
        -  "about",
        -  "hq",
        -  "now",
        -  "next",
        -  "live",
        -  "bingo",
        -  "tickets",
        -  "recordings",
        -  "search",
        -  "ask",
        -  "chat",
        -  "participate",
        -  "discover",
        -  "disciplines",
        -  "tools",
        -  "tool"
        -]New value: +[
        +  "events",
        +  "event",
        +  "agenda",
        +  "speakers",
        +  "speaker",
        +  "talks",
        +  "talk",
        +  "faq",
        +  "venue",
        +  "sponsors",
        +  "conduct",
        +  "themes",
        +  "about",
        +  "hq",
        +  "guide",
        +  "now",
        +  "next",
        +  "live",
        +  "bingo",
        +  "tickets",
        +  "recordings",
        +  "a2a-talks",
        +  "search",
        +  "ask",
        +  "chat",
        +  "participate",
        +  "discover",
        +  "disciplines",
        +  "tools",
        +  "tool"
        +]
      • changedInput schema / $defs / Request / properties / section / anyOf
        Previous value: -[
        -  {
        -    "enum": [
        -      "manifesto",
        -      "mindset",
        -      "reading",
        -      "organiser",
        -      "chair",
        -      "connect"
        -    ],
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "maxLength": 64,
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  3. 1 tool updatev0.0.15
    • Changedagenteng17 fields changed
      • addedInput schema / $defs / ChatTurn
        Added value: +{
        +  "additionalProperties": false,
        +  "properties": {
        +    "content": {
        +      "maxLength": 2000,
        +      "minLength": 1,
        +      "title": "Content",
        +      "type": "string"
        +    },
        +    "role": {
        +      "enum": [
        +        "user",
        +        "assistant"
        +      ],
        +      "title": "Role",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "role",
        +    "content"
        +  ],
        +  "title": "ChatTurn",
        +  "type": "object"
        +}
      • removedInput schema / $defs / Draft
        Removed value: -{
        -  "additionalProperties": false,
        -  "properties": {
        -    "abstract": {
        -      "default": "",
        -      "maxLength": 6000,
        -      "title": "Abstract",
        -      "type": "string"
        -    },
        -    "audience": {
        -      "default": "",
        -      "maxLength": 500,
        -      "title": "Audience",
        -      "type": "string"
        -    },
        -    "city": {
        -      "enum": [
        -        "London",
        -        "San Francisco"
        -      ],
        -      "title": "City",
        -      "type": "string"
        -    },
        -    "contact_email": {
        -      "default": "",
        -      "maxLength": 254,
        -      "title": "Contact Email",
        -      "type": "string"
        -    },
        -    "event_id": {
        -      "anyOf": [
        -        {
        -          "maxLength": 128,
        -          "type": "string"
        -        },
        -        {
        -          "type": "null"
        -        }
        -      ],
        -      "default": null,
        -      "title": "Event Id"
        -    },
        -    "future_event": {
        -      "default": true,
        -      "title": "Future Event",
        -      "type": "boolean"
        -    },
        -    "kind": {
        -      "default": "talk",
        -      "enum": [
        -        "talk",
        -        "workshop",
        -        "event_idea",
        -        "feedback"
        -      ],
        -      "title": "Kind",
        -      "type": "string"
        -    },
        -    "outcomes": {
        -      "items": {
        -        "maxLength": 500,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "maxItems": 5,
        -      "title": "Outcomes",
        -      "type": "array"
        -    },
        -    "public_links": {
        -      "items": {
        -        "format": "uri",
        -        "maxLength": 2083,
        -        "minLength": 1,
        -        "type": "string"
        -      },
        -      "maxItems": 5,
        -      "title": "Public Links",
        -      "type": "array"
        -    },
        -    "schema_version": {
        -      "const": 1,
        -      "default": 1,
        -      "title": "Schema Version",
        -      "type": "integer"
        -    },
        -    "speaker_name": {
        -      "default": "",
        -      "maxLength": 120,
        -      "title": "Speaker Name",
        -      "type": "string"
        -    },
        -    "title": {
        -      "default": "",
        -      "maxLength": 160,
        -      "title": "Title",
        -      "type": "string"
        -    }
        -  },
        -  "required": [
        -    "city"
        -  ],
        -  "title": "Draft",
        -  "type": "object"
        -}
      • addedInput schema / $defs / Request / properties / at
        Added value: +{
        +  "anyOf": [
        +    {
        +      "format": "date-time",
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "At"
        +}
      • removedInput schema / $defs / Request / properties / confirmed
        Removed value: -{
        -  "default": false,
        -  "title": "Confirmed",
        -  "type": "boolean"
        -}
      • removedInput schema / $defs / Request / properties / draft
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "$ref": "#/$defs/Draft"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null
        -}
      • removedInput schema / $defs / Request / properties / draft_format
        Removed value: -{
        -  "default": "json",
        -  "enum": [
        -    "json",
        -    "markdown"
        -  ],
        -  "title": "Draft Format",
        -  "type": "string"
        -}
      • changedInput schema / $defs / Request / properties / format / enum
        Previous value: -[
        -  "json",
        -  "ics"
        -]New value: +[
        +  "json",
        +  "ics",
        +  "text",
        +  "svg",
        +  "html"
        +]
      • addedInput schema / $defs / Request / properties / history
        Added value: +{
        +  "items": {
        +    "$ref": "#/$defs/ChatTurn"
        +  },
        +  "maxItems": 6,
        +  "title": "History",
        +  "type": "array"
        +}
      • removedInput schema / $defs / Request / properties / interests
        Removed value: -{
        -  "items": {
        -    "maxLength": 200,
        -    "type": "string"
        -  },
        -  "maxItems": 20,
        -  "title": "Interests",
        -  "type": "array"
        -}
      • changedInput schema / $defs / Request / properties / operation / enum
        Previous value: -[
        -  "events",
        -  "event",
        -  "agenda",
        -  "speakers",
        -  "tickets",
        -  "recordings",
        -  "search",
        -  "plan",
        -  "ask",
        -  "participate",
        -  "discover",
        -  "disciplines",
        -  "tools",
        -  "tool",
        -  "proposal_draft",
        -  "proposal_preview",
        -  "proposal_export",
        -  "proposal_prepare",
        -  "proposal_submit",
        -  "proposal_status",
        -  "proposal_withdraw"
        -]New value: +[
        +  "events",
        +  "event",
        +  "agenda",
        +  "speakers",
        +  "speaker",
        +  "talks",
        +  "talk",
        +  "faq",
        +  "venue",
        +  "sponsors",
        +  "conduct",
        +  "themes",
        +  "about",
        +  "hq",
        +  "now",
        +  "next",
        +  "live",
        +  "bingo",
        +  "tickets",
        +  "recordings",
        +  "search",
        +  "ask",
        +  "chat",
        +  "participate",
        +  "discover",
        +  "disciplines",
        +  "tools",
        +  "tool"
        +]
      • removedInput schema / $defs / Request / properties / preview_reference
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "maxLength": 128,
        -      "minLength": 32,
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Preview Reference"
        -}
      • removedInput schema / $defs / Request / properties / receipt
        Removed value: -{
        -  "anyOf": [
        -    {
        -      "maxLength": 32,
        -      "minLength": 32,
        -      "pattern": "^[a-f0-9]+$",
        -      "type": "string"
        -    },
        -    {
        -      "type": "null"
        -    }
        -  ],
        -  "default": null,
        -  "title": "Receipt"
        -}
      • addedInput schema / $defs / Request / properties / section
        Added value: +{
        +  "anyOf": [
        +    {
        +      "enum": [
        +        "manifesto",
        +        "mindset",
        +        "reading",
        +        "organiser",
        +        "chair",
        +        "connect"
        +      ],
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Section"
        +}
      • addedInput schema / $defs / Request / properties / seed
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maximum": 9007199254740992,
        +      "minimum": 0,
        +      "type": "integer"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Seed"
        +}
      • addedInput schema / $defs / Request / properties / session_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Session Id"
        +}
      • addedInput schema / $defs / Request / properties / size
        Added value: +{
        +  "default": 5,
        +  "enum": [
        +    4,
        +    5
        +  ],
        +  "title": "Size",
        +  "type": "integer"
        +}
      • addedInput schema / $defs / Request / properties / speaker_id
        Added value: +{
        +  "anyOf": [
        +    {
        +      "maxLength": 128,
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Speaker Id"
        +}
  4. 1 tool updatev0.1.0
    • First observedagenteng

TDQS

C2.5/5.0

Scored across 1 tool

Disambiguation4/5

With only one tool there is no risk of an agent picking the wrong tool, so cross-tool ambiguity is nil. However, the single tool internally bundles three unrelated capabilities (conference discovery, a tools directory, and factual lookups), which blurs its own scope rather than being a crisp, single-purpose operation.

Naming Consistency3/5

There is only one tool so no pattern can be established or violated, and the name simply mirrors the server name (agenteng). It is a plain lowercase identifier — readable, but with no verb_noun convention to judge against, so this is neutral rather than good.

Tool Count2/5

A single tool is too thin for a surface that apparently spans three distinct domains: event discovery in two cities, a catalog across twelve disciplines, and a public facts database. Each of these would normally justify at least its own listing/query tool.

Completeness2/5

The surface offers only one read-oriented entry point with no distinct operations for filtering conferences, paging through twelve disciplines of tools, or scoping fact queries. There are no lifecycle or drill-down operations, leaving most expected workflows as dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Exposes an OpenAPI catalog as tools for AI agents (e.g., Claude Code, Cursor) to query API endpoints via list_endpoints and get_endpoint tools, enabling interactive API exploration without a browser.
    2 npm
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants and IDEs to work with the AGNTCY Agent Directory, providing tools for validating, publishing, searching agent records, and navigating OASF taxonomies.
    3
    Apache 2.0
  • A
    license
    Not graded
    quality
    B
    maintenance
    Exposes a five-agent event operations fleet as 12 MCP tools, letting any MCP client detect scheduling conflicts, route notifications, brief executives, chase vendor SLAs, enforce GDPR, and design bespoke agent fleets via live LLM calls.
    MIT