agentsclimarketplace

Oatda list models

Skill devcsde/oatda-skills/skills/oatda-list-models

Claude Code plugin: 9 skills for OATDA unified LLM API gateway - text, vision, image, video, audio (TTS/STT/translation). 10+ providers, 1 API key.

Install
npx -y skills add devcsde/oatda-skills --skill oatda-list-models

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when the user wants to list available AI models from OATDA's 10+ providers. Filter by type (chat, image, video, audio) or by provider name, including speech, transcription, and translation models.

SKILL.md

9.9 KB, as published. Nobody here has run it

OATDA List Models

List all available AI models from OATDA's providers with optional filtering.

When to Use

Use this skill when the user wants to:

  • See what models are available through OATDA
  • Find the right model for a specific task (chat, image, video, audio)
  • Know which providers are supported
  • Filter models by type or provider

Prerequisites

The user needs an OATDA API key. Check in this order:

  1. $OATDA_API_KEY environment variable
  2. ~/.oatda/credentials.json config file

If neither exists, tell the user:

You need an OATDA API key. Get one at https://oatda.com, then set it: export OATDA_API_KEY=your_key_here

Step-by-Step Instructions

1. Resolve the API key

# Check env var first; if empty, auto-load from credentials file
if [[ -z "$OATDA_API_KEY" ]]; then
  export OATDA_API_KEY=$(cat ~/.oatda/credentials.json 2>/dev/null | jq -r '.profiles[.defaultProfile].apiKey' 2>/dev/null)
fi

# Verify key exists (show first 8 chars only)
echo "${OATDA_API_KEY:0:8}"

If the output is empty or null, stop and ask the user to configure their API key.

IMPORTANT:

  • Never print the full API key. Only show the first 8 characters for verification.
  • The key resolution script and subsequent curl commands must run in the same shell session. Each separate bash/terminal invocation starts with an isolated environment where previously exported variables are lost. Either run all commands in one session, or chain them (e.g., export OATDA_API_KEY=... && curl ...).

2. Determine filters

Parse the user's request for optional filters:

  • type: chat, image, video, or audio (omit for all types)
  • provider: Provider name like openai, anthropic, google, etc.

3. Make the API call

List all models (no filters):

curl -s -X GET "https://oatda.com/api/v1/llm/models" \
  -H "Authorization: Bearer $OATDA_API_KEY"

Filter by type:

curl -s -X GET "https://oatda.com/api/v1/llm/models?type=chat" \
  -H "Authorization: Bearer $OATDA_API_KEY"

List audio models:

curl -s -X GET "https://oatda.com/api/v1/llm/models?type=audio" \
  -H "Authorization: Bearer $OATDA_API_KEY"

Filter by provider:

curl -s -X GET "https://oatda.com/api/v1/llm/models?provider=openai" \
  -H "Authorization: Bearer $OATDA_API_KEY"

Combine filters:

curl -s -X GET "https://oatda.com/api/v1/llm/models?type=image&provider=openai" \
  -H "Authorization: Bearer $OATDA_API_KEY"

4. Parse the response

The API returns an OpenAI-compatible format. Image, video, and audio models include supported_params showing model-specific parameters:

{
  "total": 42,
  "filter": {
    "type": "all",
    "provider": null
  },
  "chatModels": [
    {"id": "openai/gpt-5", "provider": "openai", "model": "gpt-5", "displayName": "GPT-5"},
    {"id": "anthropic/claude-sonnet-4-5-20250929", "provider": "anthropic", "model": "claude-sonnet-4-5-20250929", "displayName": "Claude Sonnet 4.5"}
  ],
  "imageModels": [
    {
      "id": "openai/dall-e-3",
      "provider": "openai",
      "model": "dall-e-3",
      "displayName": "DALL-E 3",
      "supported_params": {
        "style": {"type": "string", "values": ["vivid", "natural"], "default": "vivid"},
        "quality": {"type": "string", "values": ["standard", "hd"], "default": "standard"}
      }
    }
  ],
  "videoModels": [
    {
      "id": "bytedance/seedance-1-5-pro-251215",
      "provider": "bytedance",
      "model": "seedance-1-5-pro-251215",
      "displayName": "Seedance 1.5 Pro",
      "supported_params": {
        "ratio": {"type": "string", "values": ["16:9", "9:16", "1:1"], "default": "16:9"},
        "duration": {"type": "string", "values": ["5", "10"], "default": "5"},
        "generate_audio": {"type": "boolean", "default": false, "optional": true},
        "camera_fixed": {"type": "boolean", "default": false, "optional": true},
        "first_frame_image": {"type": "file", "accept": "image/*", "optional": true, "description": "Starting frame image URL"},
        "last_frame_image": {"type": "file", "accept": "image/*", "optional": true, "description": "Ending frame image URL"}
      }
    }
  ],
  "audio_models": [
    {
      "id": "openai/gpt-4o-mini-tts",
      "provider": "openai",
      "model_name": "gpt-4o-mini-tts",
      "display_name": "OpenAI GPT-4o Mini TTS",
      "supported_params": {
        "audio_modes": ["tts"],
        "voice": {"type": "select", "values": ["alloy", "echo", "fable", "onyx", "nova", "shimmer", "coral"]},
        "response_format": {"type": "select", "values": ["mp3", "wav", "opus"]}
      }
    },
    {
      "id": "openai/whisper-1",
      "provider": "openai",
      "model_name": "whisper-1",
      "display_name": "OpenAI Whisper",
      "supported_params": {
        "audio_modes": ["transcription", "translation"],
        "response_format": {"type": "string", "values": ["json", "text", "srt", "verbose_json", "vtt"]}
      }
    }
  ]
}

5. Understanding supported_params

Image, video, and audio models include a supported_params object that describes model-specific parameters. Use this to discover what parameters each model accepts before generation, transcription, or translation.

Structure of each parameter:

FieldTypeDescription
typestringParameter type: string, number, boolean, or file
valuesarrayAllowed values (for enum-type strings)
defaultanyDefault value if not specified
descriptionstringHuman-readable description
optionalbooleanWhether the parameter is optional
acceptstringFor file types: accepted MIME types (e.g., "image/*")
min / maxnumberRange constraints for numeric values

File-type parameters: Parameters with type: "file" require a publicly accessible URL (https://...), not local file paths. Examples include mask, first_frame_image, last_frame_image.

Audio modes: Audio models may support one or more modes such as tts, transcription, and translation. Use this to choose the correct skill:

  • tts/oatda:oatda-generate-speech
  • transcription/oatda:oatda-transcribe-audio
  • translation/oatda:oatda-translate-audio

Example - Discovering image model params:

curl -s -X GET "https://oatda.com/api/v1/llm/models?type=image&provider=bytedance" \
  -H "Authorization: Bearer $OATDA_API_KEY" | jq '.image_models[].supported_params'

This reveals that Bytedance Seedream supports: size, watermark, seed, negative_prompt, etc.

Example - Discovering video model params:

curl -s -X GET "https://oatda.com/api/v1/llm/models?type=video&provider=bytedance" \
  -H "Authorization: Bearer $OATDA_API_KEY" | jq '.video_models[].supported_params'

This reveals that Seedance supports: ratio, duration, generate_audio, camera_fixed, first_frame_image, last_frame_image, etc.

Example - Discovering audio model params:

curl -s -X GET "https://oatda.com/api/v1/llm/models?type=audio&provider=openai" \
  -H "Authorization: Bearer $OATDA_API_KEY" | jq '.audio_models[] | {id, supported_params}'

This reveals whether a model supports speech generation, transcription, translation, and which voices or response formats are available.

6. Present results

Format the models in a readable way, organized by category:

Chat Models (N total):

  • openai/gpt-5 — GPT-5
  • anthropic/claude-sonnet-4-5-20250929 — Claude Sonnet 4.5
  • ...

Image Models (N total):

  • openai/dall-e-3 — DALL-E 3
  • ...

Video Models (N total):

  • minimax/T2V-01 — MiniMax T2V-01
  • ...

Audio Models (N total):

  • openai/gpt-4o-mini-tts — OpenAI GPT-4o Mini TTS
  • openai/whisper-1 — OpenAI Whisper
  • ...

If the response format differs (e.g., flat data array with id and object fields), adapt accordingly and group by provider or capability.

7. Handle errors

HTTP StatusMeaningAction
401Invalid API keyTell user to check their key
429Rate limitedWait and retry

Full Example

User asks: "What OpenAI models are available?"

curl -s -X GET "https://oatda.com/api/v1/llm/models?provider=openai" \
  -H "Authorization: Bearer $OATDA_API_KEY"

User asks: "Show me all image generation models"

curl -s -X GET "https://oatda.com/api/v1/llm/models?type=image" \
  -H "Authorization: Bearer $OATDA_API_KEY"

User asks: "Show me all audio models"

curl -s -X GET "https://oatda.com/api/v1/llm/models?type=audio" \
  -H "Authorization: Bearer $OATDA_API_KEY"

User asks: "What parameters does Seedance video model support?"

curl -s -X GET "https://oatda.com/api/v1/llm/models?type=video&provider=bytedance" \
  -H "Authorization: Bearer $OATDA_API_KEY" | jq '.video_models[] | select(.model | contains("seedance")) | .supported_params'

This returns all supported parameters for Seedance, including ratio, duration, generate_audio, camera_fixed, first_frame_image, last_frame_image, etc.

Tips

  • This is a GET request with query parameters, not POST
  • Use this skill to help users find the right model for other OATDA skills
  • The id field (e.g., openai/gpt-4o) is the model identifier used in other skills
  • Use supported_params to discover model-specific parameters before generating images/videos or using audio models
  • For file-type params (mask, reference images), provide publicly accessible URLs
  • NEVER expose the full API key in output
  • Related skills: /oatda:oatda-text-completion, /oatda:oatda-generate-image, /oatda:oatda-generate-video, /oatda:oatda-generate-speech, /oatda:oatda-transcribe-audio, /oatda:oatda-translate-audio, /oatda:oatda-vision-analysis

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.