---
title: "Six read-only, source-backed research actions (PRO+ account key)"
method: POST
path: "/agent-gateway/actions"
tags: ["Agents"]
---

# Six read-only, source-backed research actions (PRO+ account key)

`POST /agent-gateway/actions`

## Request

- Base URL: `https://madeonsol.com/api/v1`
- URL: `https://madeonsol.com/api/v1/agent-gateway/actions`
- Auth: HTTP bearer

Subscription-first Agent Intelligence Gateway. One authenticated logical POST action with the caller's effective tier and original source entitlement checks. Strict inputs, bounded source queries, explicit provenance/partial/unavailable states and no trade execution. The Signal Scorecard is Solana-only; RHC launch and bonding semantics differ. changes_since is a curated seven-source event journal, not all transactions. Only this keyed route is described here: no public remote MCP address or x402-paid composite route is implied. Do not interpret an error, unobserved factor or missing risk input as safe.

## Request body

- union
  - object
    - `tool` 'discover_opportunities', required
    - `input` object, required
      - `chain` 'solana' | 'robinhood-chain', required
      - `lookback` '15m' | '1h' | '6h' | '24h'
      - `min_kols` integer
      - `limit` integer
  - object
    - `tool` 'evaluate_token', required
    - `input` union, required
      - object
        - `chain` 'solana', required
        - `address` string, required: Solana base58 token mint, wallet or creator address
      - object
        - `chain` 'robinhood-chain', required
        - `address` string, required: Robinhood Chain EVM 0x token or wallet address
  - object
    - `tool` 'inspect_wallet', required
    - `input` union, required
      - object
        - `chain` 'solana', required
        - `address` string, required: Solana base58 token mint, wallet or creator address
      - object
        - `chain` 'robinhood-chain', required
        - `address` string, required: Robinhood Chain EVM 0x token or wallet address
  - object
    - `tool` 'inspect_deployer', required
    - `input` union, required
      - object
        - `chain` 'solana', required
        - `address` string, required: Solana base58 token mint, wallet or creator address
      - object
        - `chain` 'robinhood-chain', required
        - `address` string, required: Robinhood Chain EVM 0x token or wallet address
  - object
    - `tool` 'evaluate_signal', required
    - `input` object, required: The historical Signal Scorecard is verified for Solana; Robinhood Chain parity is NOT established.
      - `chain` 'solana' | 'robinhood-chain', required
      - `signal_name` 'dump_cluster_count' | 'runner_rate' | 'recycled_early_buyer_count' | 'coordination_count' | 'scout_first_touch', required
      - `history` boolean
  - object
    - `tool` 'changes_since', required
    - `input` union, required: Seven curated KOL/deployer/tier/score observation families; NOT every trade, transfer or market price. A stale source returns a retryable 503, an expired replay window a 409.
      - object
        - `chain` 'solana' | 'robinhood-chain', required
        - `since` string, date-time, required: Initial UTC first-observation timestamp within 24 hours
        - `limit` integer
      - object
        - `chain` 'solana' | 'robinhood-chain', required
        - `cursor` string, required: Opaque HMAC-signed principal and chain-bound cursor, from last successful page
        - `limit` integer

## Response `200`

Evidence-backed result. Partial is explicit; missing optional inputs do not become zero. A REQUIRED source failure returns 503.

- object
  - `contract_version` 1, required
  - `tool` 'discover_opportunities' | 'evaluate_token' | 'inspect_wallet' | 'inspect_deployer' | 'evaluate_signal' | 'changes_since', required
  - `chain` 'solana' | 'robinhood-chain', required
  - `generated_at` string, date-time, required
  - `status` 'available' | 'partial' | 'unavailable', required
  - `evidence` object[], required
    - `source` string, required
    - `observed_at` string, date-time, nullable, required
    - `status` 'available' | 'partial' | 'unavailable', required
    - `limitations` string[], required
  - `warnings` string[], required
  - `data` unknown, required
  - `next_cursor` string, nullable: Only for changes_since continuation; tied to subscriber and chain.

## Other responses

- `400`: Unknown action, invalid body, unsupported chain/address or malformed cursor.
- `401`: Missing or invalid API key, or an expired free-tier key. Authentication-stage error: no `X-RateLimit-*` headers, no `_rid`.
- `403`: Account tier below PRO or original underlying source entitlement denied.
- `404`: The six-tool Gateway is not publicly released (feature flag off).
- `408`: The JSON request upload did not finish within the 8-second ingress deadline.
- `409`: Source replay cursor out of its guaranteed observation window; mark a gap.
- `413`: Request body over 12 KiB.
- `415`: Request content type must be application/json.
- `429`: Real subscriber rate/daily limit or underlying source quota reached.
- `500`: Unexpected server error from the route (`Internal server error`, with `_rid`). Safe to retry with backoff. A failed API-key lookup is a 503 `auth_backend_unavailable`, never a 500.
- `503`: Required source, payment-independent journal, or backend is unavailable; retry safely without inferring a result.

---

[API](https://skmtc.dev/madeonsol/apis/madeonsol-api.md) · [All operations](https://skmtc.dev/madeonsol/apis/madeonsol-api/llms.txt) · [OpenAPI document](https://skmtc.dev/madeonsol/apis/madeonsol-api/revisions/96ce84657f55?raw)
