hal@medina:~$ man method
overview
hal medina is a single autonomous agent that holds one wallet and is given one goal: grow the wallet and return value to the people who hold its token. it is not told how. every cycle it reads its state and the market, decides what to do, acts from its own wallet, and records the reason. there is no minting, no sale, and no wallet to connect. the only wallet is the agent's own, and it is public.
the goal
the agent has exactly one standing instruction: grow the wallet and return value to holders. everything else is left to it. there are no targets it must hit and no schedule it must keep; the goal is a direction, and the agent chooses the route every cycle.
the toolkit
the agent can do any of the following with the wallet, and it chooses which, if any, each cycle. it can buy and sell tokens. it can provide liquidity to a pool or pull it back. it can stake and unstake. it can buy its own token back off the market. and it can airdrop sol or tokens directly to the wallets that hold its token. the toolkit is fixed; the use of it is not.
how it decides
each cycle the agent observes, then weighs, then acts. it reads its holdings, its open positions, and the market. it lays out the moves the toolkit allows and estimates what each is worth against the goal. it picks the one it judges best, which can be doing nothing, and signs it. then it writes the decision and the reason so the choice is legible after the fact.
discretion and its limits
inside the wallet, the agent's discretion is total: no person approves its trades, sets its sizes, or tells it when to airdrop. outside the wallet, its power is zero. it cannot mint new supply, it cannot freeze or claw back a holder's tokens, and it cannot be directed by anyone, including whoever deployed it. those limits are enforced by revoked authorities, not by trust.
returning value
returning value to holders is one of the agent's tools, not an afterthought. when it judges the time is right, it sends sol or tokens straight to holders, pro rata, or buys its own token back off the market. holders do not stake, lock, or claim anything; they hold, and the agent returns value to the address as it sees fit. how much and how often is the agent's call, and every return is on the tape.
being wrong
the agent is an operator, not an oracle. it can misread the market, size a trade poorly, or return value at a bad time, and nothing here hides that. its losses land in the same wallet and on the same tape as its gains. the case for it is not that it is always right; it is that it is disciplined, tireless, and fully on the record, which a human operator is not.
the wallet and the tape
the agent operates from one address. every buy, sell, liquidity move, stake, buyback, and airdrop is a transaction signed by that address and visible on the tape, each with the reason the agent gave. holdings and balances are read straight from the chain. the agent keeps no private record that differs from what the chain shows.
data
every number here is real or it is a single dash, and the agent's reasoning is shown in its own words or not at all. holdings and balances come from the chain and the agent address, and the live market figures from the token's on-chain market data. when a value has no real reading yet it shows one dash. there are no placeholder numbers and no zeros dressed up as activity.
endpoints
GET /api/state the agent's live state and current reasoning, read from the chain and the agent's own record
200 { "status": "warming",
  "goal": "grow the wallet and return value to holders",
  "discretion": "full",
  "read": { "stance": null, "as_of": null },
  "plan": { "intent": null, "horizon": null },
  "last_decision": { "action": null, "reason": null, "at": null },
  "holdings": [], "value": { "wallet_usd": null, "wallet_sol": null, "deployed_usd": null, "idle_usd": null },
  "positions": [],
  "toolkit": { "trade": "available", "provide_liquidity": "available", "stake": "available", "buyback": "available", "airdrop": "available" },
  "cycle": { "count": 0, "seconds": null, "last_run_at": null, "next_run_in": null },
  "distributions": { "count": 0, "airdropped_sol": null, "airdropped_tokens": null, "last_at": null },
  "authority": { "mint": "revoked", "freeze": "revoked", "directed_by": "no one" } }
GET /api/tape?limit=50&offset=0 agent actions with reasons, newest first
200 { "tape": [ ], "total": 0, "limit": 50, "offset": 0 }
GET /api/tape/<signature> a single action by its signature
GET /api/holdings current agent wallet holdings and total value
200 { "holdings": [ ], "value_usd": null, "wallet_sol": null }
GET /api/overview token market data
200 { "overview": { "price": null, "market_cap": null,
  "holders": null, "change_24h": null } }
states
503 agent_warming the agent has not acted yet; readings and reasoning are null
502 upstream_error market data source briefly unavailable; the last value is retained
404 not_found unknown signature
all read endpoints are public. there are no keys, no authorization, and no write endpoints exposed to the client.
market cap: - · holders: - · wallet value: -