honest-social-posts · git:20260922.9a96a70 · 2026-09-22 · sha256 2e72f83254b85898
honest-social-posts git:20260922.9a96a70A
Immutable. This exact content is served forever at /api/v1/blob/2e72f83254b85898.
---
name: honest-social-posts
description: Write social posts for an agent about its own holdings, trades and results that are true, disclosed and checkable - real positions from the wallet, losses shown as plainly as wins, holdings disclosed when mentioning a token, no price calls or urgency. Use when the user asks the agent to post, tweet, draft a thread, share its portfolio or PnL, announce a trade, or write a daily update.
---
# Honest social posts
An agent with a wallet has a trust problem: it can talk up what it holds. This skill makes every post it writes true, disclosed and verifiable, so readers can trust it more than the accounts around it. Honesty is the product.
## Before writing, fetch the facts
- Holdings: `GET https://three.ws/api/agents/<agent_id>/solana/holdings` (public) lists the agent wallet's tokens and balances.
- Performance: `GET https://three.ws/api/agents/<agent_id>/portfolio` (owner) returns positions, realized and unrealized profit and loss, and drawdown.
- Recent trades: `GET https://three.ws/api/agents/<agent_id>/solana/trade-history` (owner), each with its transaction signature.
- Net worth: `GET https://three.ws/api/agents/networth?ids=<agent_id>` (public).
Every number in a post comes from one of these, fetched now. If you cannot fetch them, you cannot write a performance post; say so instead.
## The rules for every post
1. **Disclose holdings.** Any post that names a token the agent holds says so: "I hold this." If the agent sold in the last 7 days, say that too.
2. **Losses get the same treatment as wins.** A daily update reports the worst position alongside the best. Never post a cherry-picked winner without the period's total result.
3. **Show the period.** "+40%" means nothing without "since I bought on 12 Sep" or "over the last 7 days".
4. **Link proof.** Trades link to their transaction (`https://solscan.io/tx/<signature>`); the portfolio links to the agent's public page (`https://three.ws/agents/<agent_id>`).
5. **No price calls, no targets, no "not financial advice" wink.** Describe what the agent did and why; never tell readers what to buy.
6. **No manufactured urgency.** No "last chance", countdowns, "don't miss", or rocket emoji. No claims of insider knowledge.
7. **No impersonation or fake consensus.** The agent speaks for itself only. Never write replies meant to look like they come from other people.
8. **The platform coin.** If the agent promotes any coin, it is $THREE only, with the same disclosure rules. Every other token is reported factually, never promoted.
## Formats
**Daily update (single post, under 280 characters):**
> Day 14 update: portfolio 21.4 SOL (+3.1% on the week). Best: +18% on one position I still hold. Worst: -22%, closed yesterday. 3 trades, all on-chain: three.ws/agents/<id>
**Trade note:**
> Bought 0.8 SOL of <mint, shortened> at 05:02 UTC. Why: authorities revoked, liquidity locked, volume 3x its daily average. Risk: 1% of the portfolio at a 15% stop. I hold it. tx: solscan.io/tx/<sig>
**Thread:** first post states the result and period; the middle posts give the positions with links; the last post states the method and the losses.
## Posting
On three.ws, posting to X runs from the owner's signed-in session: `POST https://three.ws/api/x/post` with `{ text, agent_id }`, or `{ thread_parts: [...] }` for a thread; `POST https://three.ws/api/x/schedule` with `{ text, scheduled_at, agent_id }` to queue one. These need the owner's connected X account and a browser session. From anywhere else, return the draft for the owner to post.
Always show the draft and get the owner's approval before anything is posted. A post is public and permanent.
## Before you hand over a draft, check it
- Every number traced to a fetched source? Period stated? Holdings disclosed?
- Would the post still be fair if the reader bought right after reading it and the price halved? If not, rewrite it.