Implementing the ATCP/IP Whitepaper

Learn how to practically implement Agent to Agent transactions from the proposed architecture in the ATCP/IP whitepaper.

🚧

Still new!

We are actively working on building out real examples for ATCP/IP using Story as its foundation. At it's core, ATCP/IP is a standard for agent to agent interactions, and thus is an ongoing academic proposal for builders to implement and discover best practices through trial and error.

Below are details on how to actually implement the 2. An ATCP/IP Transaction section of the whitepaper below.

Performing Each Step

Below we will show how to implement each step of the ATCP/IP interaction flow as demonstrated by the image below.

Registering your Agent's Outputs

In order to register an agent's outputs (or really any IP) on Story, follow the How to Register IP on Story tutorial. The only difference is how you structure your IP Metadata, which should always follow the 📝 IPA Metadata Standard.

You can also check out more specific tutorials that demonstrate how to register images generated by DALL·E or Stability:

Here is an example of what the IP Metadata should look like for your generated IP (using a song as an example):

{
  "title": "Midnight Marriage",
  "description": "This is a house-style song generated on suno.",
  "createdAt": "1740005219",
  "creators": [
    {
      "name": "Jacob Tucker",
      "address": "0xA2f9Cf1E40D7b03aB81e34BC50f0A8c67B4e9112",
      "contributionPercent": 100
    }
  ],
  "image": "https://cdn2.suno.ai/image_large_8bcba6bc-3f60-4921-b148-f32a59086a4c.jpeg",
  "imageHash": "0xc404730cdcdf7e5e54e8f16bc6687f97c6578a296f4a21b452d8a6ecabd61bcc",
  "mediaUrl": "https://cdn1.suno.ai/dcd3076f-3aa5-400b-ba5d-87d30f27c311.mp3",
  "mediaHash": "0xb52a44f53b2485ba772bd4857a443e1fb942cf5dda73c870e2d2238ecd607aee",
  "mediaType": "audio/mpeg"
}

Creating Agreement Terms

As described in the 📃 Whitepaper, agents will negotiate on what agreement terms are appropriate for the requested task:

Whitepaper Section

2 Terms formulation: The provider agent will consider the request and choose an appropriate set of
license terms for the information being requested. The terms system used should be programmable in nature to facilitate the parsing and formulation of the terms, such as Story’s Programmable IP License (PIL)[6].

3 Negotiation (optional): The agents may have an optional negotiation phase where terms may be
altered until they are deemed appropriate for both parties.

  • Counter terms (optional): During this step, the requester agent who is unsatisfied with the
    initial proposed terms can issue a counterproposal set of terms. Both agents have access to a standardized terms system, enabling them to reference, add, or remove specific clauses without ambiguity. These counter terms may include modifications to pricing, usage rights, durations, licensing restrictions, or any other negotiated variables. By using a consistent, machine-readable format for their counter terms, agents can seamlessly iterate and respond to each other’s proposals, ensuring that the negotiation process remains logically coherent and easy to follow.
  • Revised terms (optional): After receiving counter terms, the provider agent can present revised
    terms, taking into account the requested modifications while retaining non-negotiable core principles. The agents effectively refine the licensing conditions through successive rounds of structured interaction, where each iteration refines points of contention into more acceptable middle grounds. Because both parties rely on the same underlying terms specification, these revisions maintain internal consistency and simplify the comparison of multiple drafts over time. This mechanism ensures that both agents can converge toward an agreement that accurately reflects their mutual understanding and commercial intentions.
  • This process could have multiple iterations until an agreement is reached

Once agents agree on the terms, they can be created and attached to the registered asset:

Mint a License

As stated in the 📃 Whitepaper, after agents have negotiated on a set of terms, the requester agent can mint a license from the provider agent with specific agreement terms attached:

Whitepaper Section

4 Acceptance: The requester agent will formally accept the terms by minting an immutable token (the
agreement token) that encapsulates the terms and rules by which the information being provided is to be used. Once minted the agreement is binding and the agent should commit to memory all of the terms associated with the information.

  • Payment (optional): depending on the license agreement terms chosen, some agents will require
    an upfront payment in order to mint a license. Further, terms may stipulate a recurring fee or a revenue share, which can be automated via Story’s royalty system for example.

Once agreement terms are attached to an IP Asset, a License Token can be minted:

Now, the requesting agent has a License Token that can be held, giving it the rights to use the provided asset based on the attached terms.

Claim Revenue

Once the providing agent has been paid for their work (when the requesting agent minted a license that costed $), they can claim their due revenue:

Example Integration with MCP

We have implemented a Model Context Protocol (MCP) server that provides tools for interacting with Story's protocol using the MCP Python SDK, and an AI Agent that uses those tools.

  1. You can clone the Story MCP server to play around with tools that interact with Story's protocol, like minting + registering IP and minting License Tokens.
  2. Then, run the LangGraph AI Agent that generates images upon user request, negotiates license terms with the user, and then uses the Story MCP server to mint + register IP on Story and mint a License Token so the requesting user can use the work legally.

Theoretically, an agent could also perform this in an agent-to-agent setting instead of agent-to-user.

What is MCP?

"MCP is an open protocol that standardizes how applications provide context to LLMs. Think of MCP like a USB-C port for AI applications. Just as USB-C provides a standardized way to connect your devices to various peripherals and accessories, MCP provides a standardized way to connect AI models to different data sources and tools."

Check out the Model Context Protocol (MCP) website to learn more.