Skip to content

Collecting Feedback ​

You registered your agent. Now what? This guide covers how users actually leave feedback and how to integrate feedback collection into your workflow.

How feedback reaches your agent ​

There are three paths for feedback to reach your registered agent:

1. SATI Dashboard (zero integration) ​

Share your agent's dashboard link:

https://sati.cascade.fyi/agent/<YOUR_MINT>

The dashboard has a "Give Feedback" button. Users connect a Solana wallet and submit feedback directly. No code changes on your side.

Best for: standalone agents (MCP servers, A2A endpoints) where you don't control the client.

2. CLI (for operators and monitoring) ​

bash
npx create-sati-agent give-feedback \
  --agent <MINT> --tag1 starred --value 85 --network mainnet

Best for: automated health checks, uptime monitoring, internal QA.

3. SDK (programmatic, for platforms) ​

typescript
import { Sati, Outcome, address } from "@cascade-fyi/sati-sdk";

const sati = new Sati({ network: "mainnet" });

// Server-side: your platform pays, user just rates
const { signature } = await sati.giveFeedback({
  payer,                              // Platform's funded keypair
  agentMint: address("Agent..."),
  outcome: Outcome.Positive,
  value: 87,
  tag1: "starred",
  message: "Fast response",
});

Best for: marketplaces, facilitators, and platforms that want to embed feedback into their UX.

Choosing the right feedback schema ​

SATI has two feedback schemas with different trust properties:

SchemaModeWho signsUse when
FeedbackPublicV1CounterpartySignedReviewer onlyPublic reviews, marketplace ratings, health checks
FeedbackV1DualSignatureAgent + ReviewerProof-of-participation, x402 payments, high-trust scenarios

giveFeedback() uses FeedbackPublicV1 (simple, one signer). For blind feedback with DualSignature, use the lower-level createFeedback() - see the x402 feedback guide.

For standalone agent operators ​

If you run an MCP server or API and want users to leave feedback:

  1. Add a reputation badge to your README:

    markdown
    ![SATI Reputation](https://sati.cascade.fyi/api/badge/<YOUR_MINT>?network=mainnet)

    Or link to your dashboard page:

    Reputation: https://sati.cascade.fyi/agent/<YOUR_MINT>
  2. Include your mint address in your MCP server's metadata (the agent-registration.json already has it in registrations[] after publishing).

  3. Use the REST API to show reputation in your docs:

    bash
    curl https://sati.cascade.fyi/api/reputation/<MINT>?network=mainnet
    # {"count": 42, "summaryValue": 85, "summaryValueDecimals": 0}
  4. Monitor incoming feedback:

    typescript
    // Poll for new feedback (check periodically)
    const feedbacks = await sati.searchFeedback({
      agentMint: address("YourMint..."),
    });
    console.log(`${feedbacks.length} reviews`);

For platforms and marketplaces ​

If you run a platform where multiple agents operate:

  1. Register agents programmatically when they join your platform:

    typescript
    const result = await sati.registerAgent({
      payer: platformKeypair,
      name: agentName,
      uri: registrationFileUri,
    });
  2. Collect feedback after each interaction on behalf of users:

    typescript
    await sati.giveFeedback({
      payer: platformKeypair,  // Platform pays ~0.00001 SOL
      agentMint: address(agentMint),
      value: userRating,
      tag1: "starred",
    });
  3. Display reputation using the SDK or REST API:

    typescript
    const summary = await sati.getReputationSummary(address(agentMint));
    // { count: 42, averageValue: 85.3 }
  4. Query across all schemas for complete data:

    typescript
    // Includes both FeedbackPublicV1 and FeedbackV1 (blind)
    const allFeedback = await sati.searchAllFeedback({
      agentMint: address(agentMint),
    });

Tag conventions ​

Use consistent tags so reputation aggregates meaningfully:

tag1value rangemeaning
starred0-100Overall rating
reachable0 or 1Health check
uptime0-100Uptime percentage
responseTimemsLatency in milliseconds
successRate0-100Success percentage

Cost ​

Each feedback attestation costs ~0.00001 SOL (compressed via ZK Compression). At $200 SOL, that's $0.002 per review. Devnet is free.

Released under the Apache 2.0 License.