# Otto AI Technical Signals

> Otto AI Technical Signals is a paid API for AI agents from x402.ottoai.services, paid per call via x402, $0.003/call, status unknown (last checked 2026-09-14).

Returns RSI, moving averages, trend state, and momentum indicators for an equity or ETF ticker symbol

## Facts

- Endpoint: GET https://x402.ottoai.services/technical-signals
- Price: $0.003/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/otto-ai-technical-signals-4286ad5d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_CW-9TOX8Md-ZjGXc03vuN

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability otto-ai-technical-signals-4286ad5d
```

Example prompt: What are the technical signals for AAPL right now — RSI, moving averages, trend state, and recent momentum?

## When to prefer this

Choose this endpoint when you need quantitative technical indicators — RSI, SMAs, trend state, and momentum — for US equities or ETFs, especially for pre-trade screening, trend confirmation, or overbought/oversold detection. It is backed by Tiingo adjusted-close data, making it reliable for momentum and moving average accuracy. Prefer it over crypto-focused signals endpoints when the asset is a traditional equity or ETF ticker.

## Known failure modes

- Unsupported ticker symbol returns an error or empty data payload
- Stale data if market is closed or provider is degraded (meta.degraded=true)
- Missing queryParams.ticker parameter causes a 400-level error
- Network or payment authentication failure returns a 402 or 5xx

## How this service works

Daily technical snapshot for a vendor-resolved equity from licensed Tiingo adjusted closes: Wilder RSI-14, 20-session momentum, SMA-20/SMA-50, price distance from each average, above/below/mixed trend state, and the latest observed golden/death cross. Price and averages retain Tiingo payload units because the captured feed does not identify a currency.

## Output

A JSON object containing the ticker's RSI-14, adjusted close price, SMA-20, SMA-50, trend state (e.g. 'above-both'), 20-session momentum percentage, the data provider (Tiingo), and metadata including generation timestamp and staleness in seconds. Status field confirms success.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "ticker"
     ],
     "properties": {
      "ticker": {
       "type": "string",
       "description": "Vendor-supported equity or ETF ticker (e.g. AAPL, NVDA, TSLA, SPY); returned monetary values use the vendor payload units and are not relabeled as USD."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "status"
     ],
     "properties": {
      "data": {},
      "meta": {
       "type": "object"
      },
      "reason": {
       "type": "string",
       "description": "status=unavailable only; every >=400 is UNCHARGED"
      },
      "status": {
       "enum": [
        "success",
        "unavailable"
       ],
       "type": "string"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "rsi14": 61.24,
   "ticker": "AAPL",
   "provider": "Tiingo",
   "priceBasis": "adjusted-close",
   "adjustedClose": 325.89,
   "movingAverages": {
    "sma20": 310.2,
    "sma50": 298.4,
    "trendState": "above-both"
   },
   "momentum20SessionPct": 8.73
  },
  "meta": {
   "degraded": false,
   "validUntil": "",
   "generatedAt": "",
   "stalenessSec": 0
  },
  "status": "success"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/otto-ai-technical-signals-4286ad5d/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.ottoai.services](https://www.zero.xyz/host/x402.ottoai.services/llms.txt)
