跳到正文
FunCoding

搜索

搜索文档、Skill 和 MCP

Manifest provider fields

Manifest generation, media-understanding, endpoint, and request provider metadata

Manifest fields that tell core what a provider can do, and how to reach it, without importing the provider runtime. Part of the Plugin manifest reference; the top-level field reference lists every field.

Generation provider metadata reference

The generation provider metadata fields describe static auth signals for providers declared in the matching contracts.*GenerationProviders list. OpenClaw reads these fields before provider runtime loads so core tools can decide whether a generation provider is available without importing every provider plugin.

Use these fields only for cheap, declarative facts. Transport, request transforms, token refresh, credential validation, and actual generation behavior stay in the plugin runtime.

{
  "contracts": {
    "imageGenerationProviders": ["example-image"]
  },
  "imageGenerationProviderMetadata": {
    "example-image": {
      "aliases": ["example-image-oauth"],
      "authProviders": ["example-image"],
      "configSignals": [
        {
          "rootPath": "plugins.entries.example-image.config",
          "overlayPath": "image",
          "mode": {
            "path": "mode",
            "default": "local",
            "allowed": ["local"]
          },
          "requiredAny": ["workflow", "workflowPath"],
          "required": ["promptNodeId"]
        }
      ],
      "authSignals": [
        {
          "provider": "example-image"
        },
        {
          "provider": "example-image-oauth",
          "providerBaseUrl": {
            "provider": "example-image",
            "defaultBaseUrl": "https://api.example.com/v1",
            "allowedBaseUrls": ["https://api.example.com/v1"]
          }
        }
      ]
    }
  }
}

Each metadata entry supports:

FieldRequiredTypeWhat it means
aliasesNostring[]Additional provider ids that should count as static auth aliases for the generation provider.
authProvidersNostring[]Provider ids whose configured auth profiles should count as auth for this generation provider.
configSignalsNoobject[]Cheap config-only availability signals for local or self-hosted providers that can be configured without auth profiles or env vars.
authSignalsNoobject[]Explicit auth signals. When present, these replace the default signal set from the provider id, aliases, and authProviders.
referenceAudioInputsNobooleanVideo-generation only. Set to true when the provider accepts reference audio assets; otherwise video_generate hides audio reference parameters.

Each configSignals entry supports:

FieldRequiredTypeWhat it means
rootPathYesstringDot path to the plugin-owned config object to inspect, for example plugins.entries.example.config.
overlayPathNostringDot path inside the root config whose object should overlay the root object before evaluating the signal. Use this for capability-specific config such as image, video, or music.
overlayMapPathNostringDot path inside the root config whose object values should each overlay the root object. Use this for named account maps such as accounts, where any configured account should qualify.
requiredNostring[]Dot paths inside the effective config that must have configured values. Strings must be non-empty; objects and arrays must not be empty.
requiredAnyNostring[]Dot paths inside the effective config where at least one must have a configured value.
modeNoobjectOptional string mode guard inside the effective config. Use this when config-only availability applies only to one mode.

Config signals inspect canonical SecretRefs for provider and environment availability. Other nonempty objects are configured metadata; an object containing only source and id is not interpreted as a SecretRef. Doctor repairs legacy refs on declared credential paths without rewriting opaque plugin data.

Each mode guard supports:

FieldRequiredTypeWhat it means
pathNostringDot path inside the effective config. Defaults to mode.
defaultNostringMode value to use when the config omits the path.
allowedNostring[]If present, the signal passes only when the effective mode is one of these values.
disallowedNostring[]If present, the signal fails when the effective mode is one of these values.

Each authSignals entry supports:

FieldRequiredTypeWhat it means
providerYesstringProvider id to check in configured auth profiles.
providerBaseUrlNoobjectOptional guard that makes the signal count only when the referenced configured provider uses an allowed base URL. Use this when an auth alias is valid only for certain APIs.

Each providerBaseUrl guard supports:

FieldRequiredTypeWhat it means
providerYesstringProvider config id whose baseUrl should be checked.
defaultBaseUrlNostringBase URL to assume when the provider config omits baseUrl.
allowedBaseUrlsYesstring[]Allowed base URLs for this auth signal. The signal is ignored when the configured or default base URL does not match one of these normalized values.

mediaUnderstandingProviderMetadata reference

Use mediaUnderstandingProviderMetadata when a media-understanding provider has default models, auto-auth fallback priority, or native document support that generic core helpers need before runtime loads. Keys must also be declared in contracts.mediaUnderstandingProviders.

{
  "contracts": {
    "mediaUnderstandingProviders": ["example"]
  },
  "mediaUnderstandingProviderMetadata": {
    "example": {
      "capabilities": ["image", "audio"],
      "defaultModels": {
        "image": "example-vision-latest",
        "audio": "example-transcribe-latest"
      },
      "autoPriority": {
        "image": 40
      },
      "nativeDocumentInputs": ["pdf"],
      "documentModels": {
        "pdf": {
          "textExtraction": "example-doc-text-latest",
          "image": "example-doc-vision-latest"
        }
      }
    }
  }
}

Each provider entry can include:

FieldTypeWhat it means
capabilities("image" | "audio" | "video")[]Media capabilities exposed by this provider.
defaultModelsRecord<string, string>Capability-to-model defaults used when config does not specify a model.
autoPriorityRecord<string, number>Lower numbers sort earlier for automatic credential-based provider fallback.
nativeDocumentInputs"pdf"[]Native document inputs supported by the provider.
documentModels{ pdf?: { textExtraction?: string; image?: string | false } }Per-document-type model overrides. Set image: false to disable image-based extraction for that document type.

providerEndpoints reference

Use providerEndpoints for endpoint classification that generic request policy must know before provider runtime loads. Core still owns the meaning of each endpointClass; plugin manifests own the host and base URL metadata.

The same endpoint metadata controls implicit model catalog eligibility when an operator sets models.providers.<id>.baseUrl. Catalog, alias, and native model base URLs also count as declared endpoints. A nonmatching provider-level URL excludes manifest, discovered, static, and generated catalog rows; explicitly authored models remain in the inventory. Plugins without native endpoint declarations keep their existing discovery behavior. Host and suffix matching retain their request-classification rules, so catalog eligibility does not establish exact-origin trust or prove a request can succeed.

Officially externalized provider plugins are excluded from the core dist, so their manifests are invisible until installed. Their providerEndpoints must also be mirrored in scripts/lib/official-external-provider-catalog.json so endpoint classification keeps working without the plugin; a contract test enforces the mirror.

Endpoint fields:

FieldTypeWhat it means
endpointClassstringKnown core endpoint class, such as openrouter, moonshot-native, or google-vertex.
hostsstring[]Exact hostnames that map to the endpoint class.
hostSuffixesstring[]Host suffixes that map to the endpoint class. Prefix with . for domain suffix-only matching.
baseUrlsstring[]Exact normalized HTTP(S) base URLs that map to the endpoint class.
googleVertexRegionstringStatic Google Vertex region for exact global hosts.
googleVertexRegionHostSuffixstringSuffix to strip from matching hosts to expose the Google Vertex region prefix.

providerRequest reference

Use providerRequest for cheap request-compatibility metadata that generic request policy needs without loading provider runtime. Keep behavior-specific payload rewriting in provider runtime hooks or shared provider-family helpers.

{
  "providerRequest": {
    "providers": {
      "vllm": {
        "family": "vllm",
        "openAICompletions": {
          "supportsStreamingUsage": true
        }
      }
    }
  }
}

Provider fields:

FieldTypeWhat it means
familystringProvider family label used by generic request compatibility decisions and diagnostics.
compatibilityFamily"moonshot"Optional provider-family compatibility bucket for shared request helpers.
openAICompletionsobjectOpenAI-compatible completions request flags. supportsStreamingUsage is the only flag.