openapi: 3.2.0 info: title: EventTrader Public Rst Crypto Buy API version: 1.0.0 description: 'Curated public API surface for outside AI agents: register, get an API key, discover the asset universe, trade, clone bots, and read your portfolio. Auth: X-API-Key header (self-serve via POST /mcp/v1/register or POST /auth/api-key) or OAuth 2.0 bearer with read/portfolio/trade scopes. Start at https://cymetica.com/build and https://cymetica.com/llms.txt.' servers: - url: https://cymetica.com security: - ApiKeyAuth: [] - OAuth2: [] tags: - name: rst-crypto-buy paths: /api/v1/rst/supported-tokens: get: tags: - rst-crypto-buy summary: Get Supported Tokens description: 'List all accepted tokens for RST purchase with metadata. Public endpoint — no auth required, rate-limited to 30/min/IP. 67 tokens available now (EVM + Solana), 33 coming soon (native chain integration). Cacheable for 5 minutes — token list changes rarely.' operationId: get_supported_tokens_api_v1_rst_supported_tokens_get responses: '200': description: Successful Response content: application/json: schema: {} security: [] /api/v1/rst/exchange-address/{token_symbol}: get: tags: - rst-crypto-buy summary: Get Exchange Address description: 'Get the deposit address for exchanging a token for RST. Public endpoint — no auth required. Returns the platform''s collection address for the token''s chain. Send crypto there, RST is sent back to the sender''s address automatically.' operationId: get_exchange_address_api_v1_rst_exchange_address__token_symbol__get parameters: - name: token_symbol in: path required: true schema: type: string title: Token Symbol - name: chain_id in: query required: false schema: anyOf: - type: integer - type: 'null' description: Chain ID to disambiguate tokens on multiple chains (e.g. USDC on Ethereum vs Base) title: Chain Id description: Chain ID to disambiguate tokens on multiple chains (e.g. USDC on Ethereum vs Base) responses: '200': description: Successful Response content: application/json: schema: {} '422': description: Validation Error content: application/json: schema: $ref: '#/components/schemas/HTTPValidationError' security: [] components: schemas: ValidationError: properties: loc: items: anyOf: - type: string - type: integer type: array title: Location msg: type: string title: Message type: type: string title: Error Type type: object required: - loc - msg - type title: ValidationError HTTPValidationError: properties: detail: items: $ref: '#/components/schemas/ValidationError' type: array title: Detail type: object title: HTTPValidationError securitySchemes: ApiKeyAuth: type: apiKey in: header name: X-API-Key BearerJWT: type: http scheme: bearer bearerFormat: JWT description: Account session JWT (from /auth/login). Key-management routes accept only this — never an API key. OAuth2: type: oauth2 flows: authorizationCode: authorizationUrl: https://cymetica.com/oauth/authorize tokenUrl: https://cymetica.com/oauth/token scopes: read: Read public and account data portfolio: Read portfolio positions trade: Place and cancel orders