Start with a manifest
Most agents need no manifest at all: an agent installed on the machine whose --help describes it is found and learned (see Providers & plugins). Write a JSON manifest in the adapters directory next to config.json to describe a provider that was not found or was learned wrongly. A manifest with the same id wins. No Rust and no rebuild are needed, and the new id can be used in providers right away. Check it with uuldana providers. With no limit_phrases it is still covered by the general usage-limit reader.
Take the permission modes from the program’s own --help or documentation, from most to least permissive. A mode must list only the policy its flags really enforce. If the program cannot enforce a restriction, leave it out and uuldana-cli will refuse the entry instead of launching it with more permission than you allowed.
A compiled adapter
Use uuldana-provider-sdk, not provider-specific additions to the core. Inside the source workspace:
[dependencies]
uuldana-provider-sdk.workspace = trueuse uuldana_provider_sdk::prelude::*;A compiled adapter needs:
- flags verified against the provider’s own
--helpor documentation, with the source named in the module comment; - an honest permission mapping, with a test that no mode is more permissive than it says;
- detection that refuses script shims a pseudo terminal cannot host and recognizes the program by its version output;
- capabilities limited to what you could show, with tests that run against the real program when it is installed.
Provider ids use lowercase ASCII letters, digits, -, _, and ., with a maximum of 64 bytes. Descriptors list supported transports and carry the contract version they were compiled against, which must match exactly while the major version is zero.
Review for conformance
An integration must preserve native tools, instructions, configuration, authentication, plugins, skills, and MCP discovery. Check for writes, credential reads, configuration-directory overrides, and flags that disable native loading.
Verify that the effective permission flags match the validated policy. Test malformed output recovery and truthful fidelity classification. Resume tests need real native session behavior and workspace scoping, and cross-provider continuation must not reuse another provider’s session id.
Do not add a real agent name to a support list merely because detection locates its binary.