Repository navigation
Add 402 plugin: read-only Base intelligence priced per call over x402 - #163
Open
sukrutkrdg wants to merge 4 commits into
Open
sukrutkrdg wants to merge 4 commits into
sukrutkrdg wants to merge 4 commits into
Conversation
Collaborator
🟡 Heimdall Review Status
|
sukrutkrdg
force-pushed
the
plugin/402
branch
from
September 17, 2026 19:32
4ea3bfd to
5e5c88b
Compare
sukrutkrdg
force-pushed
the
plugin/402
branch
from
September 18, 2026 12:48
4787b18 to
15adb8d
Compare
402.com.tr prices read-only Base data per call over x402 - no account, no API key, every endpoint a GET that answers 402 with its own price. The plugin reads those endpoints and submits nothing onchain of its own; the only transaction is the x402 payment, through initiate_x402_request / complete_x402_request. Two capabilities are hard to get elsewhere. Coinbase's tokenized equities are B20 Asset tokens, and B20 does not apply multiplier() to balanceOf() - so the number a wallet or contract reads is not the number of shares owned. That became concrete on 2026-09-14 when GOOGLc's multiplier moved 1.0 to 1.000377118676784179 in block 51310619 while balanceOf and totalSupply both stayed put; stock-position returns the reported and entitled figures side by side. Separately, a vanity 0xb200 address proves nothing about a B20, so b20-authenticity decides membership by the onchain transfer-policy administrator. Every endpoint is a GET with no auth headers, so the chat-only path needs no key pasted and no POST body constructed. Endpoint prices, parameters and response shapes were read from the live catalogue and verified against paid calls, including the error contract: a malformed input after payment answers 400 and is not settled, and a low-confidence refusal answers 502 and is not billed. The tags this plugin introduces are appended to the shared vocabulary in plugin-spec.md, as that file asks. x402-payments was already in use by the merged Venice plugin but missing from the list.
402.com.tr prices read-only Base data per call over x402 - no account, no API key, every endpoint a GET that answers 402 with its own price. The plugin reads those endpoints and submits nothing onchain of its own; the only transaction is the x402 payment, through initiate_x402_request / complete_x402_request. Two capabilities are hard to get elsewhere. Coinbase's tokenized equities are B20 Asset tokens, and B20 does not apply multiplier() to balanceOf() - so the number a wallet or contract reads is not the number of shares owned. That became concrete on 2026-09-14 when GOOGLc's multiplier moved 1.0 to 1.000377118676784179 in block 51310619 while balanceOf and totalSupply both stayed put; stock-position returns the reported and entitled figures side by side. Separately, a vanity 0xb200 address proves nothing about a B20, so b20-authenticity decides membership by the onchain transfer-policy administrator. Every endpoint is a GET with no auth headers, so the chat-only path needs no key pasted and no POST body constructed. Endpoint prices, parameters and response shapes were read from the live catalogue and verified against paid calls, including the error contract: a malformed input after payment answers 400 and is not settled, and a low-confidence refusal answers 502 and is not billed. The tags this plugin introduces are appended to the shared vocabulary in plugin-spec.md, as that file asks. x402-payments was already in use by the merged Venice plugin but missing from the list.
base-mcp is deprecated in favour of wallet-mcp (base#169). The plugin now lives in skills/wallet-mcp/plugins/, with Wallet MCP naming, the new tags added to the wallet-mcp vocabulary, and base-mcp left as on main. Also: stock-position is now $0.04, and step 3 checks payTo against the service's only payee.
Author
|
Hi — gentle ping on this one. Since #169 moved the skill to |
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Adds
skills/wallet-mcp/plugins/402.md. One new file, plus its four tags added to the tag vocabulary inreferences/plugin-spec.md; no edits toSKILL.md, the Integration Types examples, or the conformance table, per Contribution Scope.What it is
402.com.tr prices read-only Base data per call over x402. There is no account, no API key and no tier: an unpaid
GETreturns402with the price and anacceptsarray, and the sameGETwith payment returns the answer. The plugin builds no calldata and submits no onchain writes of its own — the only transaction is the x402 payment, viainitiate_x402_request/complete_x402_request.integration: http-api,auth: none,chains: [base],requires.allowlist: [402.com.tr],risk: [irreversible].Why it might be worth a slot
Tokenized-stock entitlements. Coinbase's tokenized equities are B20 Asset tokens, and B20 does not apply
multiplier()tobalanceOf()— the number a wallet, indexer or contract reads is not the number of shares owned. That stopped being theoretical on 14 September 2026: GOOGLc's multiplier moved1.0 → 1.000377118676784179in block 51310619 whilebalanceOffor the largest holder (Uniswap V4's PoolManager) andtotalSupplyboth stayed put. Blocks and thecastcommands to re-read it: https://402.com.tr/stocks/first-corporate-action.stock-positionreturns the reported and entitled figures side by side, plus acoverageblock naming the venues it does not count.B20 authenticity. A vanity
0xb200…address proves nothing — an ordinary contract can fake the whole B20 read surface.b20-authenticitydecides membership by the onchain transfer-policy administrator instead of an address list.Chat-only surfaces. Every endpoint is a
GETwith no auth headers, so there is no key for a user to paste and no POST body to construct. The free/api/catalogand/api/stocksreads need no payment at all.Accuracy
Prices, parameter names and response shapes were read from the live catalogue and checked against real paid calls rather than copied from docs, including the error contract: after payment a malformed input answers
400and is not settled, and a low-confidence refusal answers502and is not billed. The file tells the agent to readamount/payTofrom the live challenge and never from the table.Happy to adjust anything — naming, the endpoint selection, or the routing table — if a different shape fits the registry better.