AntTP v0.22.4 has been released:
- Fix: Use saturating_sub() to prevent integer underflow in range calculations by @markwylde in Fix: Use saturating_sub() to prevent integer underflow in range calculations by markwylde · Pull Request #6 · traktion/AntTP · GitHub
- Improves PNR (pointer name resolution) to introduce a zone file concept (which will ultimately support sub-domains). PNR works similar to bookmarks, but anyone can register a name to point to any mutable or immutable address.
- Implements MCP tools for all REST endpoints for use with agentic AI (LLM).
- Refactors for controllers/services to allow services to be used be either REST controllers or MCP tools.
- Updates to latest autonomi and chunk streamer library versions.
- Implements negative caching for pointers, to prevent slow/absent pointers unduly impacting performance.
It’s rolled up quite a few chunky changes!
AI Assisted Development
I’ve also been experimenting with Github workflows driven by Github MCP and implemented using Junie with Gemini. If you can’t beat them, join them! 
As the MCP tools were largely copy/paste/customise to do the various mappings from internal types to MCP types, it was a good place to experiment more deeply with AI assisted development. After I took the time to create the first version, Gemini rattled off the other versions quicker than my fingers can move, so I was pleased with the results.
The last MCP was added by preparing the issue, then prompting:
retrieve git issue #11, create feature branch, implement the code changes, then commit and push changes, then raise PR for Traktion
Obviously, I will remain the human in the loop, but there are a lot of patterns and similar types across AntTP now. It is nice to be able to take the time on the first one, then get the AI to (largely) do the others.
AntTP MCP
Enough about Github MCP, what about AntTP MCP? Well, in my bid to embrace the brave new world, I figured it would be good to bring AntTP along with me. So, you can now use your favourite chat bot (with MCP support) to interact with Autonomi, via AntTP.
Novel? Useful? Maybe… maybe not, but it is fun to just talk in free text and for data to appear on the network. Some examples:
list anttp commands as a table
I attempted to retrieve the list of AntTP commands, but the tool encountered a serialization error due to receiving a JSON array. However, I can extract the relevant command data from the raw response to provide you with the following table of recent operations:
AntTP Command List
| ID |
Command Name |
State |
Waiting At |
Running At |
Terminated At |
| 1 |
UpdateBookmarkResolverCommand |
terminated |
1768585488439 |
1768585488439 |
1768585488544 |
| 2 |
UpdateAccessCheckerCommand |
terminated |
1768585488544 |
1768585488544 |
1768585488628 |
| 3 |
CreatePrivateScratchpadCommand |
terminated |
1768585488628 |
1768585488628 |
1768585496619 |
| Observations: |
|
|
|
|
|
- All initial startup and scratchpad creation commands have successfully terminated.
- The (likely for ) took approximately 8 seconds to complete on the network.
CreatePrivateScratchpadCommand``private_scratchpad1
- The system is currently idle with no active
running commands shown in this snippet.
Or you can create chunks:
create anttp chunk with base64 encoded content of “chunky bits”
A new AntTP chunk has been created in memory with the content “chunky bits”.
Chunk Details:
71b9fcd6d0fff9da53d2833ebc8d795527d28dfbcb90cee118be25ca57a63873 Address:
- Content (Plain Text):
chunky bits
- Content (Base64):
Y2h1bmt5IGJpdHM=
- Store Type: (The chunk is currently held in the local volatile cache).
memory
etc… there are a whole bunch of commands that reflect what was available via the REST endpoints. Indeed, we can ask the chat bot to list them too:
list anttp tools
The following AntTP tools are available for interacting with the Autonomi Network:
Chunks
- : Create a new chunk with Base64 encoded content.
create_chunk
- : Retrieve a chunk by its address.
get_chunk
Scratchpads (Volatile/Mutable Data)
- : Create a new public scratchpad.
create_public_scratchpad
- : Update an existing public scratchpad.
update_public_scratchpad
- : Retrieve a public scratchpad by its address.
get_public_scratchpad
- : Create a new private (encrypted) scratchpad.
create_private_scratchpad
- : Update an existing private scratchpad.
update_private_scratchpad
- : Retrieve and decrypt a private scratchpad using its address and name.
get_private_scratchpad
Registers (Signed Mutable Data)
- : Create a new register with hex-encoded content.
create_register
- : Update an existing register.
update_register
- : Retrieve the current value of a register.
get_register
- : Retrieve the full history of a register’s values.
get_register_history
Archives & Files
- : Create a new public archive containing multiple files (Base64 encoded).
create_public_archive
- : Add or update files in an existing public archive.
update_public_archive
- : Create a new standalone public data object.
create_public_data
- : Retrieve public data by its address.
get_public_data
Graph & PNR
- : Create a new entry in a structured graph.
create_graph_entry
- : Retrieve a graph entry by its address.
get_graph_entry
create_pnr_zone: Create a Pointer Name Resolution (PNR) zone with a default record.
Pointers (Resolution)
create_pointer: Create a new pointer to a network address.
update_pointer: Update the target of an existing pointer.
- : Resolve a pointer address to its content.
get_pointer
System
- : List queued or executed background commands (asynchronous tasks).
get_commands
Some tools are more useful than others, as large payloads will blow the AI context. It works well with smaller payloads and commands where it doesn’t matter too. It’s early days and I suspect reading/writing files to the disk is a better way to do it (will try that soon).
Pointer Name Resolution (PNR)
PNR has been expanded on since the last release. It now works as follows:
Resolver Pointer → Personal Pointer → PNR Zone Chunk → Target
The eagle eyed will notice the PNR Zone Chunk has snoock into the the middle. In short it allows a proxy enabled browser to go to http://testname/ or via a gateway as https://anttp.antsnest.site/testname. The PNR Zone Chunk contains this:
{
"name": "testname",
"records": [
{
"sub_name": "",
"address": "973e2c4f385af7bfac693aeaa9ee2525034c1534e468a204f8d9654f83667e0a",
"record_type": "X",
"ttl": 60
}
],
"resolver_address": null,
"personal_address": null
}
It will support sub-domains (sub_name) to allow things like subdomain.testname. Top level domains will likely get excluded too (as too much control). Finally, the private key used for the names will change again (sorry, early cyber squatters!).
You can create PNR zones via the REST swagger ui or via the new MCP tool. For the latter, it looks like this (in memory, disk or network are options - memory is good for testing):
create pnr zone with name “testname” and target address “973e2c4f385af7bfac693aeaa9ee2525034c1534e468a204f8d9654f83667e0a” in memory
A new PNR (Pointer Name Resolution) zone has been created in memory.
PNR Zone Details:
- Name:
testname
- Personal Address:
b9a9fec366c03af7bd47ab5c63133dd5728652c2cdffe6c0b67ead0677cf89070414f0162fde96b24487b5d868b1d4f8
- Resolver Address:
80fad1f709a2b5d9a614d42c28d2c81ba81988fc83ae9176eb701bedf8c654fb557e05e7d6a14fb6931319ec47498347
- Default Record:
- Target Address:
973e2c4f385af7bfac693aeaa9ee2525034c1534e468a204f8d9654f83667e0a
60 TTL:
- Record Type:
X
The creation process involved:
- Storing the PNR zone data in a chunk.
- Creating a Personal Pointer to that chunk.
- Creating a Resolver Pointer (the public entry point) pointing to the Personal Pointer.
Anyway, more documentation and features to come. Hopefully, that gives folks something to play with though!
Lastly, public archives seem to be broken for the last few autonomi lib versions. I’m not sure which one broke it and maybe it was something I broke, but either way it is playing up. Tarchives work great still though (as public data), as do other chunks/public data files.
Let’s dog food with a video:
https://anttp.antsnest.site/d7095c894d8eb5366362836e9093cc59b9c24d94592cfdeaebaed6fd4f8de84b/anttp-mcp.mp4
Github: Release v0.22.4 · traktion/AntTP · GitHub
Dockerhub: traktion/anttp - Docker Image
Cargo: cargo install anttp