You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(dashboard,docs): ICP round 3 - new endpoints, doc fixes, deploy
REST API:
- Add GET /api/scores/:mint for ReputationScoreV3 queries
- Add includeReputation=true on GET /api/agents for bulk reputation
- Deploy all pending fixes (stats, pagination, compressedAddress, nulls, order, POST outcome/message)
Documentation:
- Remove false @coral-xyz/anchor peer dep from SDK README
- Fix nonTransferable default to false in SDK reference
- Add feedbackCacheTtlMs, transactionConfig, reputationScoreSchema, credential to SDK reference
- Add POST /api/feedback, scores endpoint, includeReputation to SKILL.md
- Add endpointTypes case-sensitivity and clientAddress/counterparty mapping notes
- Add ReputationScoreV3 cost (~0.002 SOL) to SKILL.md
- Add incremental sync guidance for scoring providers
- Fix getAddressDecoder import source in SKILL.md
- Link REST API docs to GitHub URL instead of file path
Copy file name to clipboardExpand all lines: docs/reference/rest-api.md
+35-2Lines changed: 35 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -11,7 +11,7 @@ All endpoints accept a `?network=mainnet|devnet` query parameter (defaults to ma
11
11
### List agents
12
12
13
13
```
14
-
GET /api/agents?network=mainnet&limit=20&offset=0&order=newest&name=search&owner=ADDRESS&endpointTypes=MCP,A2A
14
+
GET /api/agents?network=mainnet&limit=20&offset=0&order=newest&name=search&owner=ADDRESS&endpointTypes=MCP,A2A&includeReputation=true
15
15
```
16
16
17
17
| Param | Type | Description |
@@ -22,7 +22,8 @@ GET /api/agents?network=mainnet&limit=20&offset=0&order=newest&name=search&owner
22
22
|`order`|`newest`\|`oldest`| Sort order (default `newest`) |
23
23
|`name`| string | Filter by name (case-insensitive substring). Searches all agents, not just the current page. |
24
24
|`owner`| string | Filter by owner address |
25
-
|`endpointTypes`| string | Comma-separated service types: `MCP`, `A2A`, `OASF`. Searches all agents. |
25
+
|`endpointTypes`| string | Comma-separated service types: `MCP`, `A2A`, `OASF` (case-sensitive). Searches all agents. |
26
+
|`includeReputation`|`true`| Include `reputation` object per agent (slower - extra RPC calls per agent) |
26
27
27
28
**Response:**
28
29
@@ -115,6 +116,36 @@ GET /api/stats?network=mainnet
115
116
}
116
117
```
117
118
119
+
### Reputation scores (from providers)
120
+
121
+
```
122
+
GET /api/scores/:mint?network=mainnet
123
+
```
124
+
125
+
Returns ReputationScoreV3 attestations published by scoring providers for this agent.
126
+
127
+
**Response:**
128
+
129
+
```json
130
+
{
131
+
"scores": [
132
+
{
133
+
"provider": "Provider...",
134
+
"agentMint": "Agent...",
135
+
"outcome": 2,
136
+
"content": {
137
+
"score": 85,
138
+
"methodology": "weighted_average",
139
+
"feedbackCount": 42
140
+
}
141
+
}
142
+
],
143
+
"count": 1
144
+
}
145
+
```
146
+
147
+
`content` is the parsed JSON from the scoring provider's attestation. Structure varies by provider but typically includes `score`, `methodology`, and `feedbackCount`.
148
+
118
149
### Reputation badge
119
150
120
151
```
@@ -239,3 +270,5 @@ Server acts as counterparty and pays transaction fees. Rate limited per IP.
239
270
-`createdAt` is a Unix timestamp (seconds), approximate based on Solana slot times (~400ms/slot)
240
271
-`schema` field indicates whether feedback is blind (`FeedbackV1`) or public (`FeedbackPublicV1`)
241
272
-`compressedAddress` is a base58-encoded string, usable as a stable identifier for feedback entries
273
+
-`clientAddress` in the REST API corresponds to `counterparty` in the SDK (the reviewer's wallet address)
274
+
-`endpointTypes` filter is case-sensitive - use `MCP`, `A2A`, `OASF` (not lowercase)
@@ -314,6 +316,8 @@ for await (const page of sati.listAllFeedbacks()) { /* ... */ }
314
316
315
317
Note: `searchFeedback`/`searchAllFeedback` return `ParsedFeedback[]` (fully parsed). `listAllFeedbacks` returns raw `ParsedAttestation` pages where content is still bytes - use `parseFeedbackContent(item.data.content, item.data.contentType)` to extract fields. `createdAt` timestamps in `ParsedFeedback` are approximate - derived from Solana slot numbers using ~400ms/slot estimate.
316
318
319
+
**Incremental sync (scoring providers):** There is no `sinceSlot` filter - Photon RPC does not support slot-range queries on compressed accounts. For incremental updates, track `item.raw.slotCreated` locally and skip items below your last-processed slot on each full fetch. At current volumes this is efficient; for higher scale, use a Solana transaction log indexer (Helius webhooks, Yellowstone gRPC) to stream new attestation events.
The dashboard at `sati.cascade.fyi` exposes a public REST API. See `docs/reference/rest-api.md` for full endpoint documentation. Key endpoints:
494
+
The dashboard at `sati.cascade.fyi` exposes a public REST API. See the [REST API reference](https://github.com/cascade-protocol/sati/blob/main/docs/reference/rest-api.md) for full endpoint documentation. Key endpoints:
-`GET /api/scores/:mint` - reputation scores from scoring providers (ReputationScoreV3)
498
503
-`GET /api/badge/:mint` - SVG reputation badge for README embedding
504
+
-`POST /api/feedback` - submit feedback without a wallet (server acts as counterparty, rate limited per IP)
505
+
506
+
The agents list supports `includeReputation=true` to get reputation inline per agent (slower but avoids N+1 requests). The REST API uses `clientAddress` for the reviewer field (the SDK calls this `counterparty`). Filter params like `endpointTypes` are case-sensitive (use `MCP`, not `mcp`).
499
507
500
508
### Configuration
501
509
@@ -551,6 +559,7 @@ try {
551
559
| Agent registration |~0.003 SOL |
552
560
| Agent transfer |~0.0005 SOL |
553
561
| Feedback attestation |~0.00001 SOL (compressed) |
562
+
| Reputation score (ReputationScoreV3) |~0.002 SOL (regular SAS, not compressed) |
0 commit comments