Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.agentmark.co/llms.txt

Use this file to discover all available pages before exploring further.

You can add models to your AgentMark project in two ways: pull pre-configured models from supported providers using the CLI, or define custom model schemas with full control over settings and pricing.

Pulling built-in models

Use the pull-models command to interactively add models to your agentmark.json:
npx agentmark pull-models
This will:
  1. Show you the available providers
  2. Let you select which models to add
  3. Update builtInModels in your agentmark.json
Each pulled entry is written in provider/model form — for example, selecting OpenAI’s gpt-4o writes "openai/gpt-4o" to builtInModels, and selecting Ollama’s llama3.1 writes "ollama/llama3.1". The model IDs in the tables below are shown without the provider prefix for readability. The full set of models comes from AgentMark’s model registry (sourced from LiteLLM and OpenRouter). Run pull-models to see the authoritative list for each provider — the tables below highlight a handful of commonly used IDs.

Supported providers

AgentMark ships provider labels for: OpenAI, Anthropic, Google (including Vertex AI), xAI, Groq, Cohere, Mistral, DeepSeek, Together AI, Ollama, Fireworks, AWS Bedrock, Azure OpenAI, and Perplexity. The tabs below show a subset with example IDs.
Language models: gpt-4o, gpt-4o-mini, gpt-4-turbo, gpt-3.5-turbo, o1, o3, and moreImage models: dall-e-3, dall-e-2Speech models: tts-1, tts-1-hd, gpt-4o-mini-tts
For AI SDK and Mastra adapters, you still need to register pulled models in your agentmark.client.ts with your adapter’s model registry so they work at runtime. The Claude Agent SDK adapter handles registration natively — see Registering models.

Custom model schemas

For models not covered by the built-in providers, or when you need custom settings and pricing, define model schemas in your agentmark.json under modelSchemas.

Basic structure

Each model schema includes:
  • label: Display name shown in the AgentMark Dashboard prompt editor
  • cost: Pricing configuration for cost tracking
  • settings: Configurable parameters with UI controls
{
  "modelSchemas": {
    "my-custom-model": {
      "label": "My Custom Model",
      "cost": {
        "inputCost": 0.01,
        "outputCost": 0.03,
        "unitScale": 1000000
      },
      "settings": {}
    }
  }
}

Cost configuration

The cost object defines pricing for cost tracking:
PropertyDescription
inputCostCost per unit for input tokens (USD)
outputCostCost per unit for output tokens (USD)
unitScaleNumber of tokens per unit (e.g., 1000000 = cost per million tokens)
"cost": {
  "inputCost": 0.01,
  "outputCost": 0.03,
  "unitScale": 1000000
}
This means 0.01permillioninputtokensand0.01 per million input tokens and 0.03 per million output tokens.

Settings configuration

Settings define configurable parameters that appear in the Dashboard prompt editor. Each setting has:
PropertyDescription
labelDisplay name shown in the Dashboard
orderSort order (ascending — lower values appear first)
defaultDefault value
typeEither "slider" (numeric) or "string" (for select, imageSize, and aspectRatio controls)
uiWhich control to render: slider, select, imageSize, or aspectRatio
The Dashboard editor renders a control only when ui matches one of the supported values above. Settings with any other ui value render as “unsupported”. The available controls are:
For numeric values with a range:
"temperature": {
  "label": "Temperature",
  "order": 1,
  "default": 0.7,
  "minimum": 0,
  "maximum": 2,
  "multipleOf": 0.1,
  "type": "slider",
  "ui": "slider"
}

Complete example

Here’s a full example with a text model and an image model:
agentmark.json
{
  "$schema": "https://raw.githubusercontent.com/agentmark-ai/agentmark/refs/heads/main/packages/cli/agentmark.schema.json",
  "version": "2.0.0",
  "agentmarkPath": ".",
  "modelSchemas": {
    "gpt-4-custom": {
      "label": "GPT-4 Custom",
      "cost": {
        "inputCost": 0.03,
        "outputCost": 0.06,
        "unitScale": 1000000
      },
      "settings": {
        "temperature": {
          "label": "Temperature",
          "order": 1,
          "default": 0.7,
          "minimum": 0,
          "maximum": 2,
          "multipleOf": 0.1,
          "type": "slider",
          "ui": "slider"
        },
        "max_tokens": {
          "label": "Max tokens",
          "order": 2,
          "default": 2048,
          "minimum": 1,
          "maximum": 8192,
          "multipleOf": 1,
          "type": "slider",
          "ui": "slider"
        },
        "response_format": {
          "label": "Response format",
          "order": 3,
          "default": "text",
          "type": "string",
          "ui": "select",
          "options": [
            { "label": "Text", "value": "text" },
            { "label": "JSON", "value": "json" },
            { "label": "JSON Schema", "value": "json_schema" }
          ]
        }
      }
    },
    "dall-e-3": {
      "label": "DALL-E 3",
      "cost": {
        "inputCost": 0.04,
        "outputCost": 0,
        "unitScale": 1
      },
      "settings": {
        "image_size": {
          "label": "Image size",
          "order": 1,
          "default": "1024x1024",
          "type": "string",
          "ui": "imageSize"
        },
        "quality": {
          "label": "Quality",
          "order": 2,
          "default": "standard",
          "type": "string",
          "ui": "select",
          "options": [
            { "label": "Standard", "value": "standard" },
            { "label": "HD", "value": "hd" }
          ]
        }
      }
    }
  }
}

Best practices

  1. Use descriptive labels — make it clear what each setting does in the Dashboard
  2. Set appropriate ranges — define minimum and maximum values that make sense for your model
  3. Order settings logically — lower order values appear first in the prompt editor
  4. Provide sensible defaults — choose default values that work well for most use cases
  5. Document costs accurately — make sure the cost configuration matches your provider’s pricing

Have Questions?

We’re here to help! Choose the best way to reach us: