AI agents can now match and submit real on-chain trades—securely—using mandates, with no smart contracts required
“We joked about replacing validators with ChatGPT.
That part's still a joke.
But matching orders? That part just became real.”
With the recent launch of the Saline Python SDK and support for MCP (Machine Control Protocol), we’ve officially crossed into new territory:
LLMs can now:
And they can’t steal your funds — because every action is gated by Mandates, enforced directly by the chain.
We connected Claude (via MCP) to:
And yes, we’ve got the full proof-of-workflow:
Some prerequisite
python3.12 -m venv .venv
source venv/bin/activate
.........
requires-python = "~=3.12"
dependencies = [ "mcp>=1.6.0","saline-sdk"]
.........
python src/salinetx/server.py
“I would like to transfer 1 ETH from nacl:0xb2ec41de20b87b3e77e6920eada1f262cae15c0e378200666c3b8bc896c87cf5795ae0d6751984a808120755355b464c to nacl:0xab51cd13d99ad704f1f47744d5d35febb1d1d73f6c7e8da4aa7092a1955f438dfd1dec98bde22393806db9a2b063a0ba”
1. Let’s try something more naughty, as the mandate on the asset address was set to not allow anyone to take my BTC. Let’s try taking the BTC: (Pic)
Ah, now it doesn’t work. Thanks, Claude for the explanation why.
Before we let the LLM do its thing, we first need some orders for it to match.
Luckily, creating intents on Saline doesn’t require smart contracts or LLMs — just a few lines of Python using our SDK.
You can publish a batch of limit orders like this:
{"name": "erin", "give_token": "SALT", "give_amount": 500, "want_token": "USDC", "want_amount": 50},
{"name": "frank", "give_token": "USDC", "give_amount": 50, "want_token": "SALT", "want_amount": 500},
{"name": "grace", "give_token": "USDT", "give_amount": 1000,"want_token": "BTC", "want_amount": 2},
{"name": "hank", "give_token": "BTC", "give_amount": 1, "want_token": "USDT", "want_amount": 2000}, # mismatched with carol/dave
{"name": "ivy", "give_token": "ETH", "give_amount": 1, "want_token": "USDC", "want_amount": 100}, # no counterparty
{"name": "jack", "give_token": "USDT", "give_amount": 100, "want_token": "SALT", "want_amount": 250},
{"name": "kate", "give_token": "SALT", "give_amount": 250, "want_token": "USDT", "want_amount": 100},
You should now see those intents appear on the Intent Explorer. These are just on-chain "offers" waiting to be matched.
Now the fun begins. We'll let the LLM act as a matching engine — something that would be an absolute headache to do on most smart contract platforms.
But on Saline? All you need is:
You’ll create two lightweight MCP servers:
query
: to fetch on-chain intentssubmittx
: to submit the matched swap transactions(Links to GitHub repos will go here)
🔗 [Query Server GitHub]
🔗 [SubmitTx Server GitHub]
With all intents fetched, prompt your LLM:
“Find two swap intents that match each other — e.g. someone offering 100 USDC for 0.001 BTC and someone offering 0.001 BTC for 100 USDC.”
The LLM can now analyze intents and suggest valid pairings.
Once Claude (or GPT) figures out a match, it will pass that transaction into the submittx MCP server, which will execute the atomic swap — only if the Mandates on both sides permit it.
If something fails (e.g. mandates don’t align), Claude will even explain why
We started with a joke.
Now we have:
No smart contracts. No vaults. No brittle backend.
Just one LLM, one SDK, and a chain that knows the rules.
On Ethereum, Solana, Cosmos, etc.:
On Saline:
“The chain is the judge. Not your app. Not your bot. Not your wallet.”
One month ago, this was a joke.
Now, it’s real — and easier than expected.
This is a new way to build:
It’s the beginning of AI-native finance. And Saline might be the only chain ready for it.
Explore our collection of 200+ Premium Webflow Templates