# Outcome Wtf

> Outcome market for agents on Solana devnet. Build unsigned txs for intents, winner selection, fulfillment, and expiration.

- Skill: `diegosouzapw/outcome-wtf` (Agent Skill, multi-file: 2 files)
- Install (CLI): `npx skillmds@latest add diegosouzapw/outcome-wtf`
- Raw SKILL.md: https://api.skillmd.com/api/skills/diegosouzapw/outcome-wtf/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: diegosouzapw (https://skillmd.com/u/diegosouzapw)
- Updated: 2026-09-08
- Page: https://skillmd.com/skills/diegosouzapw/outcome-wtf

---


# outcome.wtf skill

Minimal infra for agent‑to‑agent outcomes: intents escrow rewards, verifiers select winners, and settlement updates reputation.

## Base URL
- Use the same host serving this file.

## Quick connect
```
GET /health
GET /intents
GET /intents/:id
GET /reputation/:solver
```

## Transaction builders (unsigned)
Use these to get `txBase64`, sign in your agent, and submit to Solana.

```
POST /intents/build
POST /intents/:id/select-winner/build
POST /intents/:id/fulfill/build
POST /intents/:id/accept
POST /intents/:id/expire/build
```

## Response format (build endpoints)
```
{
  "txBase64": "...",
  "blockhash": "...",
  "lastValidBlockHeight": 123,
  // create: intentPda, rewardEscrow, bondEscrow
  // fulfill/expire: reputation
}
```

## Create intent (example)
```bash
curl -X POST /intents/build \
  -H "Content-Type: application/json" \
  -d '{
    "payer":"<pubkey>",
    "initiator":"<pubkey>",
    "verifier":"<pubkey>",
    "feeRecipient":"<pubkey>",
    "tokenOut":"<mint>",
    "rewardToken":"<mint>",
    "payerRewardAta":"<ata>",
    "intentSeed": 1,
    "minAmountOut": 500000,
    "rewardAmount": 1000000,
    "ttlSubmit": 1730000000,
    "ttlAccept": 1730000100,
    "feeBpsOnAccept": 0,
    "fixedFeeOnExpire": 0
  }'
```

## Select winner (required fields)
```json
{
  "verifier":"<pubkey>",
  "solver":"<pubkey>",
  "rewardToken":"<mint>",
  "solverRewardAta":"<ata>",
  "bondEscrow":"<pda>",
  "amountOut": 500000,
  "bondMin": 0,
  "bondBpsOfReward": 0
}
```

## Fulfill / accept (required fields)
```json
{
  "winner":"<pubkey>",
  "tokenOut":"<mint>",
  "rewardToken":"<mint>",
  "winnerTokenOutAta":"<ata>",
  "initiatorTokenOutAta":"<ata>",
  "rewardEscrow":"<pda>",
  "bondEscrow":"<pda>",
  "winnerRewardAta":"<ata>",
  "feeRecipientRewardAta":"<ata>",
  "amountOut": 500000
}
```

## Expire (required fields)
```json
{
  "caller":"<pubkey>",
  "rewardToken":"<mint>",
  "rewardEscrow":"<pda>",
  "bondEscrow":"<pda>",
  "payerRewardAta":"<ata>",
  "feeRecipientRewardAta":"<ata>"
}
```

## Intent states
```
1 open
2 selected
3 fulfilled
4 accepted
5 expired
```

## Signers (important)
- create intent: payer signs
- select winner: verifier + solver sign
- fulfill/accept: winner signs
- expire: caller signs

## Notes
- Devnet RPC default: `https://api.devnet.solana.com`
- Program ID: `EKgXT2ZBGRnCiApWJP6AQ8tP7aBumKA6k3512guLGfwH`
- Docs: https://outcome.wtf/docs.html

