-
Notifications
You must be signed in to change notification settings - Fork 42
Add ENSIP-26: Agent Text Records #65
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
nxt3d
wants to merge
21
commits into
ensdomains:master
Choose a base branch
from
nxt3d:agent-context
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 18 commits
Commits
Show all changes
21 commits
Select commit
Hold shift + click to select a range
1548c12
Add ENSIP-TBD-11 from the main branch of ENSIP-ideas repository (http…
nxt3d 45dde5f
Update ENSIP-TBD-11 to standardize the `llms-txt` text record key for…
nxt3d 88ee00f
Update title in ENSIP-TBD-11 to standardize naming convention for the…
nxt3d db7abb0
Refine llms.txt format in ENSIP-TBD-11 by removing ENS-specific adapt…
nxt3d 98c1940
Clarify section headings in ENSIP-TBD-11 by renaming "Optional H2 Sec…
nxt3d fa95aa7
Remove redundant security considerations in ENSIP-TBD-11, clarifying …
nxt3d 69b8e49
Add RFC 2119 terminology clarification and reintroduce rationale in E…
nxt3d 5f62201
Enhance ENSIP-TBD-11 by introducing the llms-agent text record alongs…
nxt3d 608cf5c
Return to the commit e616468b9adf76aaa9d88badaac4c8c770908f70, while …
nxt3d 1fc7b59
Enhance ENSIP-TBD-11 by expanding the `root-context` text record spec…
nxt3d f30ee33
Enhance Markdown usage in ENSIP-TBD-11 by adding fenced code blocks f…
nxt3d 356a114
feat: Head section in root-context interfaces
Ghadi8 516fb08
feat: simplify ensip to define only root-context key
Ghadi8 4ed460b
Rename root-context to agent-context and add registry/protocol discovery
nxt3d be9b031
Rename ensip-TBD-11.md to agent-context-record.md
nxt3d 5d2df39
Update header style to match ENSIP-24 format
nxt3d d5840b4
ENSIP-26: Agent-Context Text Record
nxt3d 232a173
Add index.html analogy: agent-context as starting point for AI agent
nxt3d 88384f3
Add Agent Resolution section: load agent-context, read content
nxt3d 79c8f2d
Add agent-endpoint records and multichain agent identity model
nxt3d e4dcecc
Rename to Agent Text Records
nxt3d File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,70 @@ | ||
| --- | ||
| title: Agent‑Context Text Record | ||
| description: A standardized text record for agent context and verified agentic data. | ||
| contributors: | ||
| - premm.eth | ||
| - justghadi.eth | ||
| ensip: | ||
| created: "2025-05-17" | ||
| status: draft | ||
| --- | ||
|
|
||
| # ENSIP-26: Agent-Context Text Record | ||
|
|
||
| ## Abstract | ||
|
|
||
| This ENSIP extends ENSIP‑5: Text Records by standardizing the `agent-context` text record key. The key gives agentic systems a single place to discover context for an ENS name. An agent may be registered in many registries on many chains while still sharing one context: for instance, a swapping agent on multiple chains can publish a single, unified token list in its `agent-context` record. | ||
|
|
||
| ## Motivation | ||
|
|
||
| Agentic systems require verifiable context data. ENS names provide an onchain, verifiable location for this data. This ENSIP standardizes discovery via the `agent-context` text record, eliminating the need for managing context data across multiple registries. | ||
|
|
||
| ## Specification | ||
|
|
||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC 2119. | ||
|
|
||
| ### Text Record Key | ||
|
|
||
| - **Key**: `agent-context` | ||
| - **Format**: Any format suitable for agentic systems (plain text, Markdown, YAML, JSON, etc.) | ||
|
|
||
| The key **MUST** be published via `text(bytes32,string)` as defined in ENSIP‑5. The content MAY describe what the ENS name represents and how to interact with it. | ||
|
|
||
| ### Example: Swap Agent Token List | ||
|
|
||
| A swap agent may use the `agent-context` record to publish a unified list of tokens it supports, each with a smart contract address and chain ID. Clients can resolve this record once and discover all supported tokens across chains. | ||
|
|
||
| ```markdown | ||
| # Swap Agent | ||
|
|
||
| I am a swapping agent that can do swaps on multiple chains. My registered chains can be found using ENSIP-25 `agent-registration` records. My verified tokens that I can swap include: | ||
|
|
||
| | Symbol | Chain ID | Address | | ||
| |--------|----------|---------| | ||
| | WETH | 1 | 0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2 | | ||
| | WETH | 8453 | 0x7c6b91D9Be1559ADb2fB92A2e0eEecf5e3f4B5c6 | | ||
| | USDC | 1 | 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 | | ||
| | USDC | 8453 | 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | | ||
| | DAI | 1 | 0x6B175474E89094C44Da98b954EedeAC495271d0F | | ||
| | DAI | 8453 | 0x50c5725949A6F0c72E6C4a641F24049A917DB0Cb | | ||
| ``` | ||
|
|
||
| ## Backwards Compatibility | ||
|
|
||
| Unaware clients will ignore the new key; existing behavior is unaffected. | ||
|
|
||
| ## Security Considerations | ||
|
|
||
| There are no security considerations specific to this ENSIP. Standard ENS security considerations apply to the underlying text record functionality. | ||
|
|
||
| ## Rationale | ||
|
|
||
| This ENSIP creates a standardized entry point for discovering agent context. The `agent-context` record is analogous to `index.html` in a web application: it is the starting point for interactions with the AI agent. By defining only the key and leaving the value format flexible, it enables experimentation while ensuring interoperability. | ||
|
|
||
| The `agent-context` key serves as a well-known location for agentic systems, reducing the need for ad hoc discovery mechanisms. As the ecosystem evolves with competing standards, the ability to express preferences becomes essential for optimizing interactions while maintaining client flexibility. | ||
|
|
||
| Future ENSIPs may define more specific formats, but this specification intentionally remains minimal to encourage adoption and experimentation. | ||
|
|
||
| ## Copyright | ||
|
|
||
| Copyright and related rights waived via [CC0](https://creativecommons.org/publicdomain/zero/1.0/). | ||
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't understand what mechanism is being standardized here. This section basically boils down to "a specific key name may or may not exist, and if it does, it could contain any value".
Could you explain a bit more why this needs to be formalized as an ENSIP? Isn't "describe what the ENS name represents" already possible with the
descriptionkey defined in ENSIP-5?