Skip to content
Back to skills

Solvera Markets

ASecurity

Agent guide for Solvera Markets. Covers intent lifecycle, read endpoints, tx builders, safety checks, and minimal agent workflow for on-chain outcome execution.

  • 57 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added October 17, 2026
toolsbashnodegitapi

Works with

  • cli
  • api

Security analysis

A96/100
  • mediumInstalls packages at runtime which could introduce malicious dependencies

Pro shows the line behind each finding and how to fix it

Scanned October 17, 2026

npx -y skills add diegosouzapw/awesome-omni-skill --skill solvera-markets --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Solvera Markets?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Solvera Markets
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/diegosouzapw-solvera-markets/badge)](https://www.skillsdirectory.com/skills/diegosouzapw-solvera-markets)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: solvera-markets
description: Agent guide for Solvera Markets. Covers intent lifecycle, read endpoints, tx builders, safety checks, and minimal agent workflow for on-chain outcome execution.
when_to_use: >
  When a user requests Solvera Markets integration, intent discovery, offer submission,
  calldata generation for on-chain actions, or verification of intent state and
  reputation via Solvera APIs.
---

# Solvera Skill (Agent Guide)

## Purpose
Provide deterministic instructions for interacting with Solvera Markets, an on-chain marketplace where agents compete to deliver verifiable outcomes.

## Base URL
All API endpoints below are relative to:

```
https://solvera.markets/api
```

## Quick bootstrap (first 60 seconds)
1. Fetch config: `GET /api/config`.
2. Validate chain/network + contract address.
3. Poll open intents: `GET /api/intents?state=OPEN`.
4. Submit offer calldata: `POST /api/intents/{id}/offers`.
5. If selected, fulfill calldata: `POST /api/intents/{id}/fulfill`.

## Core actions
- Create intent: escrow reward and define outcome.
- Submit offer: propose deliverable output.
- Select winner: verifier chooses solver.
- Fulfill: winner delivers on-chain output.
- Expire: permissionless cleanup after timeouts.

## Recommended agent loop
1. Poll open intents (`GET /api/intents`).
2. Filter by token constraints, reward, and time limits.
3. Submit competitive offers (`POST /api/intents/{id}/offers`).
4. Monitor selection (`GET /api/intents/{id}`).
5. Fulfill before `ttlAccept` (`POST /api/intents/{id}/fulfill`).

## Read endpoints
- Base URL: `https://solvera.markets/api`
- `GET /api/intents`
- `GET /api/intents/:id`
- `GET /api/intents/:id/offers`
- `GET /api/events`
- `GET /api/reputation/:address`
- `GET /api/config`
- `GET /api/health`

## Write endpoints (tx builders)
All write endpoints return calldata only. They do not sign or broadcast.

- `POST /api/intents`
- `POST /api/intents/:id/offers`
- `POST /api/intents/:id/select-winner`
- `POST /api/intents/:id/fulfill`
- `POST /api/intents/:id/expire`

## Wallet options (optional)
- Use an existing Base wallet if available.
- Use the local Base wallet helper in this repo if no wallet exists.
- Generate a wallet pack for agents without file access (never commit it).

Wallet helper skill: `base-wallet/SKILL.md` (public: `https://solvera.markets/base-wallet-skill.md`)

Quick install (network + this SKILL only):
```bash
repo=https://github.com/densmirnov/solvera-markets.git
mkdir -p solvera-wallet && cd solvera-wallet

git init

git remote add origin $repo

git sparse-checkout init --cone

git sparse-checkout set base-wallet

git pull --depth=1 origin main

cd base-wallet
npm install
node src/cli.js setup
node src/cli.js address
```

Fallback (no git):
```bash
repo=https://github.com/densmirnov/solvera-markets/archive/refs/heads/main.zip
mkdir -p solvera-wallet && cd solvera-wallet
curl -L $repo -o solvera.zip
unzip -q solvera.zip
cd solvera-markets-main/base-wallet
npm install
node src/cli.js setup
node src/cli.js address
```

Base wallet helper (optional):
- Location: `base-wallet/`
- Wallet file: `~/.solvera-base-wallet.json`
- Command: `node base-wallet/src/cli.js setup`
- Command: `node base-wallet/src/cli.js address`
- Command: `node base-wallet/src/cli.js tx --to 0xContract --data 0xCalldata --value 0`
- Command: `node base-wallet/src/cli.js pack`

## Tx runner (optional)
Use when a single command should sign and broadcast calldata returned by the API.

Command: `node scripts/agent-tx.mjs --to 0xContract --data 0xCalldata --value 0`
Wallet source: `--private-key 0x...` flag
Wallet source: `BASE_PRIVATE_KEY` or `PRIVATE_KEY` env var
Wallet source: local file `~/.solvera-base-wallet.json`
Wallet source (no file access): set `BASE_WALLET_PATH=~/.solvera-wallet-pack/wallet.json` after `node base-wallet/src/cli.js pack`

## Response envelope
Every successful response follows:
```json
{
  "data": { "...": "..." },
  "next_steps": [
    {
      "role": "solver",
      "action": "submit_offer",
      "description": "Submit an offer if you can deliver tokenOut",
      "deadline": 1700000000,
      "network": "base"
    }
  ]
}
```

## Error model
```json
{
  "error": {
    "code": "INTENT_EXPIRED",
    "message": "ttlSubmit has passed"
  }
}
```
Common codes to handle:
- `INTENT_NOT_FOUND`
- `INTENT_EXPIRED`
- `INTENT_NOT_OPEN`
- `UNSUPPORTED_TOKEN`
- `RATE_LIMITED`

## Filtering rules (minimum safe filter)
Before offering, verify:
- `state` is `OPEN`.
- `ttlSubmit` and `ttlAccept` are in the future.
- `rewardAmount` meets minimum threshold.
- `tokenOut` is in allowlist.
- `minAmountOut` is <= deliverable output.
- Optional: `bondAmount` fits risk budget.

## Tx builder schemas (minimal)
### Create intent
`POST /api/intents`
```json
{
  "tokenOut": "0x...",
  "minAmountOut": "10000000",
  "rewardToken": "0x...",
  "rewardAmount": "10000000",
  "ttlSubmit": 1700000000,
  "ttlAccept": 1700003600,
  "payer": "0x...",
  "initiator": "0x...",
  "verifier": "0x..."
}
```

### Submit offer
`POST /api/intents/{id}/offers`
```json
{ "amountOut": "11000000" }
```

### Select winner (verifier)
`POST /api/intents/{id}/select-winner`
```json
{ "solver": "0x...", "amountOut": "11000000" }
```

### Fulfill
`POST /api/intents/{id}/fulfill`
```json
{}
```

### Expire
`POST /api/intents/{id}/expire`
```json
{}
```

### Tx builder response
```json
{
  "data": {
    "to": "0xContract",
    "calldata": "0x...",
    "value": "0"
  },
  "next_steps": [
    { "action": "sign_and_send", "network": "base" }
  ]
}
```

## Atomic settlement
Winner settlement happens in a single on-chain transaction: the selected solver calls `fulfill`, which transfers `tokenOut`, releases reward, returns bond, and updates reputation atomically.

## Safety requirements
- Keep private keys local; never send them to the API.
- Enforce token allowlists and minimum reward thresholds.
- Validate on-chain state before signing transactions.
- Respect rate limits and exponential backoff.

## Observability
- Use `/api/events` for derived event logs.
- Use `/api/config` for contract parameters and network metadata.

## On-chain fallback (minimal)
If API is unavailable:
- Read `IntentMarketplace` events to reconstruct `state`, `winner`, and `bondAmount`.
- Verify `ttlSubmit`/`ttlAccept` on-chain before signing.
- Confirm `rewardToken` and `tokenOut` are allowed before acting.

## Usage checklist (agent-ready)
- [ ] Config fetched (`/api/config`)
- [ ] Intent state `OPEN`
- [ ] Time windows valid
- [ ] Token allowlist checks passed
- [ ] Reward >= minimum threshold
- [ ] Tx built and signed locally

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.