Unified media generation gateway for agents. Discover tools dynamically, choose API key or x402 auth, invoke image/video/audio/music/3D/training tools, and handle queue jobs reliably.
Scanned 9/10/2026
Install to Claude Code
npx -y skills add duclm1x1/Dive-Ai --skill seiso --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Seiso?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/duclm1x1-seiso)More formats (shields.io, HTML) on the badges page.
---
name: seisoai
description: Unified media generation gateway for agents. Discover tools dynamically, choose API key or x402 auth, invoke image/video/audio/music/3D/training tools, and handle queue jobs reliably.
metadata: {"openclaw":{"homepage":"https://seisoai.com","emoji":":art:"}}
version: 1.1.1
last_synced: 2026-02-09
---
# Seisoai
Base URL: `https://seisoai.com`
Primary endpoint: `POST /api/gateway/invoke/{toolId}` or `POST /api/gateway/invoke` with `toolId` in body.
Auth: `X-API-Key` or x402 payment (USDC on Base).
## Agent-First Workflow (Do This Every Session)
1. Discover live tools:
- `GET /api/gateway/tools`
2. For selected tools, fetch exact schema:
- `GET /api/gateway/tools/{toolId}`
3. Optionally pre-price inputs:
- `GET /api/gateway/price/{toolId}`
4. Invoke with API key or x402.
5. If queue tool, poll job status/result URLs from response.
Do not rely on static tool lists when a live registry is available.
## Auth Strategy
Use this decision order:
1. If you have a project API key, use `X-API-Key`.
2. If you do not have a key, use x402 pay-per-request.
3. Do not send browser CSRF tokens for machine clients.
### API Key Example
```http
POST /api/gateway/invoke/image.generate.flux-2
X-API-Key: sk_live_xxx
Content-Type: application/json
{"prompt":"a sunset over mountains"}
```
### x402 Example (2-step)
1. Call without payment header.
2. Receive `402` with payment requirements.
3. Sign/pay on Base.
4. Retry same request with one of:
- `payment-signature`
- `x-payment`
- `payment`
## High-Value Endpoints
- Discovery:
- `GET /api/gateway/tools`
- `GET /api/gateway/tools/{toolId}`
- `GET /api/gateway/price/{toolId}`
- `GET /api/gateway/mcp-manifest`
- Invoke:
- `POST /api/gateway/invoke/{toolId}`
- `POST /api/gateway/invoke`
- Jobs:
- `GET /api/gateway/jobs/{jobId}?model=...`
- `GET /api/gateway/jobs/{jobId}/result?model=...`
- Agent-scoped:
- `GET /api/gateway/agents`
- `GET /api/gateway/agent/{agentId}`
- `POST /api/gateway/agent/{agentId}/invoke/{toolId?}`
- `POST /api/gateway/agent/{agentId}/orchestrate`
## Agent-Scoped Safety Controls (Mandatory)
Default posture: **deny by default** for agent-scoped routes.
Use agent-scoped endpoints only when all checks pass:
1. **Explicit task requirement**
- Do not call `/agent/*` routes unless the current task explicitly requires operating a specific agent.
2. **Exact agent binding**
- Resolve `agentId` from a trusted source (`GET /api/gateway/agents` or user-provided exact ID).
- Never infer or guess agent IDs from names/prompts.
3. **Authorization boundary**
- Use only the current caller credentials.
- Never attempt to reuse, escalate, or proxy credentials to access other tenants/owners.
4. **Single-agent scope**
- For one task, operate on one approved `agentId` unless the user explicitly requests multi-agent execution.
5. **Tool allowlist enforcement**
- Before invoke/orchestrate, fetch `GET /api/gateway/agent/{agentId}` and only use tool IDs declared for that agent.
- Reject tool IDs not listed in that agent definition.
6. **No recursive orchestration**
- Do not create self-referential orchestrations, orchestration loops, or fan-out patterns across unknown agents.
7. **No broad discovery exfiltration**
- Do not enumerate all agents unless needed for user task; prefer direct lookup when `agentId` is known.
8. **Audit trail requirement**
- Log `agentId`, route, tool ID, and reason for each agent-scoped call in agent run notes.
9. **On mismatch or ambiguity: stop**
- If ownership/scope/tool authorization is ambiguous, do not call `/agent/*`; fall back to `/api/gateway/invoke`.
## Tool Selection Cheatsheet (Verified IDs)
### Images
- Fast text->image: `image.generate.flux-2`
- Premium cinematic: `image.generate.kling-image-v3`
- Premium consistency: `image.generate.kling-image-o3`
- 360/panorama: `image.generate.nano-banana-pro`
- Prompted edit: `image.generate.flux-pro-kontext-edit`
- Face swap: `image.face-swap`
- Inpaint/outpaint: `image.inpaint`, `image.outpaint`
- Background removal/layer: `image.extract-layer`
- Upscale: `image.upscale`
### Video
- Text->video (Veo): `video.generate.veo3`
- Image->video (Veo): `video.generate.veo3-image-to-video`
- First/last frame: `video.generate.veo3-first-last-frame`
- Kling text: `video.generate.kling-3-pro-text`, `video.generate.kling-3-std-text`
- Kling image: `video.generate.kling-3-pro-image`, `video.generate.kling-3-std-image`
- Motion transfer: `video.generate.dreamactor-v2`
### Audio / Speech / Music
- Voice clone TTS: `audio.tts`
- TTS quality tiers: `audio.tts.minimax-hd`, `audio.tts.minimax-turbo`
- Lip sync: `audio.lip-sync`
- Transcription: `audio.transcribe`
- Music: `music.generate`
- Sound FX: `audio.sfx`
- Stem separation: `audio.stem-separation`
### 3D
- Image->3D standard: `3d.image-to-3d`
- Image->3D pro: `3d.image-to-3d.hunyuan-pro`
- Text->3D pro: `3d.text-to-3d.hunyuan-pro`
- Fast image->3D: `3d.image-to-3d.hunyuan-rapid`
- Mesh post-processing: `3d.smart-topology`, `3d.part-splitter`
## Minimal Payload Patterns
Text->image:
```json
{"prompt":"..."}
```
Image edit:
```json
{"prompt":"...","image_url":"https://..."}
```
Text->video:
```json
{"prompt":"...","duration":"6s"}
```
DreamActor motion transfer:
```json
{"source_image_url":"https://...","driving_video_url":"https://..."}
```
Voice clone TTS:
```json
{"text":"...","audio_url":"https://..."}
```
3D image->mesh:
```json
{"image_url":"https://...","output_format":"glb"}
```
## Queue Handling Contract
If `executionMode` is `queue`, response includes job metadata. Use:
1. `statusUrl` until completed/failed.
2. `resultUrl` when completed.
Treat queue submit success as billable success (x402 settlement/API-key credit deduction already handled server-side).
## Error Policy
- `400`: Schema/input mismatch. Re-fetch tool schema and correct fields.
- `402`: Missing/invalid payment or insufficient API key credits.
- `404`: Tool/agent not found. Refresh registry.
- `503`: Tool disabled. Select fallback in same category.
- `500`: Retry with backoff; then switch model/tool.
## Reliability Rules for Agents
1. Always discover live tools before planning multi-step flows.
2. Use exact schema from `GET /tools/{toolId}` for required fields.
3. Keep one tool call per request; chain in your agent.
4. Prefer explicit model/tool IDs over natural-language routing assumptions.
5. For retries, do not reuse stale x402 signatures.
6. Treat `/api/gateway/agent/*` as privileged routes and apply the mandatory safety controls above.
## Self-Maintenance
When this file is updated:
- Keep IDs aligned with `backend/services/toolRegistry.ts`.
- Update `last_synced` and `version`.
- Keep examples minimal and executable.
## Changelog
- [2026-02-09] v1.1.1 - Added mandatory safety controls for agent-scoped endpoints (deny-by-default, agent/tool scoping, anti-recursion, and audit requirements).
- [2026-02-09] v1.1.0 - Rewrote for agent discovery-first flow, corrected stale tool IDs/params, tightened auth/x402 guidance, and added queue/error reliability policy.
- [2026-02-08] v1.0.0 - Initial self-improvement protocol added.
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!