installs_appdoc
const url = 'https://api.canopyhq.dev/appdoc';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://api.canopyhq.dev/appdoc \ --header 'Authorization: Bearer <token>'Authorizations
Section titled “Authorizations”Responses
Section titled “Responses”The document this install runs under.
The composed document served to an install or the console.
object
What the tenant lands at consent. Inference must be selected; an empty policy
list allows every tool and an empty extra-tools list adds nothing. The
policies name tools as the model sees them and compile in policy, against
the surface the resolved connections give, which is not this type’s to know.
object
A tool the tenant brings that the vendor did not state: a pre-registered remote, such as an MCP server the tenant already links to.
object
The name by which an MCP server identifies and invokes a tool.
The tenant’s rules for one tool, named by the name the model sees.
object
The tool enable. Off, nothing else here matters.
What a tool’s allow items do: nothing under Permissive, where only deny
items bind; bind under Restrictive, where a conditioned arg must satisfy
one of them.
Args projected for evidence alone, conditioned or not.
A vendor document with its wire version beside the vendor fields.
object
The vendor document version, read through the same shape chain as storage.
Example
{ "tenant": { "policies": [ { "items": [ { "effect": "allow", "op": "is" } ], "posture": "permissive" } ] }}No install key, or one no install answers.
The install the key names is gone.