Social
Connect a social account, draft a post, and read its status. Nothing here publishes on its own.
The Social category runs on the caller's own Zernio account, through the
caller's own stored key. Putty has no Zernio account of its own and pays nothing,
so connected accounts and every post are billed to the caller's Zernio account.
Without a stored key, a tool in this category answers with
{ code: "integration_required" } and makes no call.
Nothing publishes itself
This is the category's one rule. social_post_draft creates a draft and
returns an approveUrl for a human to open. It never publishes, and it has no
argument that could make it publish — Zernio's create-post is only ever called
from the approve route, on the user's own click, the same way a transaction
needs a signature.
social_connect_account is built the same way. It returns a dashboard link
to open in a browser the user is watching, deliberately not Zernio's raw OAuth
URL, so an agent cannot run a connect flow out of the user's view.
The six tools
social_accounts_list— the connected accounts on the chosen Zernio profile.profileCandidatesis non-null only when the account has several profiles and none has been chosen; with one it is used automatically.social_connect_account— start a connect flow, get the dashboard link.social_post_draft— create a draft, get the approve link.social_post_status— one post's status, its Zernio id once it exists, any error text, and the per-platform targets. The status movesdraft→approved→scheduled/publishedas the user approves and Zernio publishes.partialmeans some platforms took it and some did not.social_post_cancel— cancel a post that has not gone out. A draft is markedcancelledlocally and never reached Zernio; a scheduled post is also deleted there, so it will not publish.social_analytics— post analytics for one connected account over a window.sinceis an inclusiveYYYY-MM-DDlower bound, at most 366 days. The metric set differs per platform, so the rows come back in Zernio's own shape.
Not-founds do not leak
A post belonging to another user answers the same not-found as one that does not exist, and Zernio does not let a published post be deleted, so a published post answers that same not-found rather than admitting it exists.
scan_token
Scan one token on one chain and get everything a buyer is being scammed by: supply, who can mint more of it, whether the pool's liquidity is locked, the pool's fee parameters, holder concentration over a recent window, and the putty Verify label for the contract. FREE, unauthenticated, and it reads the chain but spends nothing of yours. **Every field settles to its own three-state value** — `measured` with a value, `unavailable` with `not_measurable` because the data source cannot answer, or `unavailable` with `read_failed` because the read itself failed. There is no fourth path: a failed read is never rendered as a `0`, an empty list, or a `false`. Two fields are deliberately not measured and say so — `simulation.buy` and `simulation.sell` are `not_measurable` from a token address alone, because a swap needs a pool, a router, and a quote amount, and putty does not fabricate a number a trader would act on; quote the real pool and show what the quote said. `holders` is a WINDOW over recent blocks, not a census, and the window is named in the response. `clearedForMainnet` is always `false` — no putty report, of any label, is an external audit. Use this before buying, and use `verify_contract` when you want the seven checks on the contract behind the token.
Publishing
Connect an account, draft a post, read its status, cancel it, read