[Proposal] Encourage the use of a single industry-wide standard to describe all tools in 12‑Factor Agents #12FactorTools

Author: ElijasCreated Apr 19, 2025Updated Apr 27, 2025

[!TIP] tldr²: mapping --helpoptions of some cli tool? mapping some library API so it could be used as a tool? what waste of everyone's time -- tool use is just an annotated function name with annotated and typed list of params. Once we build a few mappers, tools will be pluggable like usb sticks to all ai frameworks and apps

[!TIP] This proposal is part of a series. Check out the rest here.

First off, thanks for the excellent work on the 12-Factor Agents guide! It provides a really valuable set of principles for building robust and maintainable agentic systems.

I wanted to raise a point for discussion regarding the standardization of tools.

TL;DR

Even if the tools are purely internal, wrapping them in some standard (like MCP) offers significant design advantages:

  • Transport‑agnostic integration
    MCP typically uses http/sse or stdio for separate‑process communication, but we can also support direct in‑process Python function calls—providing a zero‑overhead, low‑latency integration without the need for external servers.

  • Hot‑swappable deployments
    Seamlessly switch between in‑process (inner) and remote (outer) tool implementations without modifying prompts or model code.

  • Framework‑agnostic agents
    Easily replace or upgrade your agent core (e.g., switching LLM backends or orchestration frameworks) without rewriting tool interfaces.

  • Cross‑project reuse
    Define tools once within an MCP server and reuse them across multiple applications and teams, avoiding redundant logic.

  • Effortless externalization at scale
    As your demand grows, migrate tools from local execution to dedicated services or clusters without altering anything else like prompts, client code, or model configurations.

Source: humanlayer/12-factor-agents