Skip to content

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

@Elijas

Description

@Elijas

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions