Add o1.exchange trading plugin#70
Conversation
🟡 Heimdall Review Status
|
stephancill
left a comment
There was a problem hiding this comment.
Thanks for the submission. The documented endpoints resolve and the response shapes match, but the Permit2 signing flow has a blocking issue:
Required
- The Permit2 flow string-replaces a fixed 65-byte
SIGNATURE_PLACEHOLDERinunsigned.datawith the signature. This only holds for EOA signatures. Base smart-account signatures (ERC-1271/6492) are variable-length (unbounded; >200 bytes in practice) and the signature is ABI-encoded as a dynamicbytesfield with a length prefix and offset. Splicing such a signature into a fixed 65-byte slot produces malformed calldata, so the flow fails for smart-contract wallets — the common Base account type. Encode the signature as dynamicbytes(and support ERC-1271 verification), or have the build endpoint accept the signature and re-encode server-side.
Minor
- Submitting the order through
send_callsbypasses o1's/order/completeprivate-mempool relay, somevProtectiondoes not apply to these submissions. State this so it isn't presented as MEV-protected. - The API-token URL is inconsistent across sections; use the one that resolves.
## Authshould document token lifetime/refresh, and## Submissionshould state thevaluehex-wei contract.- Consider adding
low-liquiditytoriskfor arbitrary-token / pool-targeted trades.
Thanks for putting this together — the o1.exchange integration is shaping up well. As part of reviewing the Wave 2 submissions I ran an automated, read-only health check against the APIs this plugin documents. The endpoints themselves look healthy; there's one signing-flow item worth addressing before merge, plus a couple of notes: Findings
What was checkedRead-only probes only: Really appreciate the contribution — happy to clarify any of the above. Since this is an automated check, please double-check anything that looks unexpected on your end before changing it.
|
46423b7 to
f784686
Compare
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
f784686 to
30383f5
Compare
|
|
||
| ## Auth | ||
|
|
||
| All requests require a Bearer token in the `Authorization` header: |
There was a problem hiding this comment.
Is it possible to do this without a bearer token? This is too painful to the users. Ideally, you can make the users auth with sign_message tool from the Base MCP and give the agent an access token if you need an API key. Or you can include an API key in the plugin md file (see uniswap.md)
Summary
http-apiintegration →send_callsTest plan
api.o1.exchangeis reachable and/orderendpoint returns expected unsigned tx shapesend_callsmapping:{ to, data, value }fromunsignedobject,gasLimit/chainIdstripped🤖 Generated with Claude Code