Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).
An API key minted in Command Center (Settings -> API Keys), sent as Authorization: Bearer 2501_ak_.... A Command Center session cookie is also accepted.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"2501.ai","colors":{"primary":"#121212","light":"#FAFAFA","dark":"#121212"},"logo":{"light":"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/logo/light.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=eeeb37b3ca386a00dde53b3e6235adce","dark":"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/logo/dark.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=4d0ac2514d479eb43fe361193d12c495","href":"/0.7/getting-started/welcome"},"favicon":"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/favicon.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=884be98d09b5672f470de49ac6430f22","appearance":{"default":"light"},"background":{"color":{"light":"#FAFAFA","dark":"#121212"}},"navbar":{"links":[{"href":"mailto:hello@2501.ai","label":"Contact"},{"href":"https://github.com/2501-ai","label":"Github"},{"href":"https://2501.ai/","label":"Website"}]},"footer":{"socials":{"website":"https://www.2501.ai/","github":"https://github.com/2501-ai","linkedin":"https://www.linkedin.com/company/99099126"}},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"2501","hasAudioNarration":false,"actualSubdomain":"2501","customDomains":["docs.2501.ai"],"gitSource":{"type":"github","owner":"2501-ai","repo":"2501","deployBranch":"main","contentDirectory":"apps/public-docs","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae99559e644b2af9be4bb4b","collectionId":"a64b271a-a494-467a-96af-8f22a7bf9363","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae99559e644b2af9be4bb4b"},"entitlements":{},"buildId":"6aeafdf5057e717ec7e8ed2a","clientVersion":"0.0.4054","searchFilterCounts":[{"language":"default","tag":"Reference","count":966},{"language":"default","tag":"API","count":498},{"language":"default","tag":"Configure","count":303},{"language":"default","tag":"Guides","count":195},{"language":"default","tag":"Docs","count":189},{"language":"default","tag":"Benchmark","count":175},{"language":"default","tag":"Deploy","count":125},{"language":"default","tag":"Agents","count":121},{"language":"default","tag":"Integration","count":119},{"language":"default","tag":"Concepts","count":111}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[],"page":{"pagePath":"0.17/api-reference/plugins/create-a-plugin","slug":"/0.17/api-reference/plugins/create-a-plugin","pageMetadata":{"title":"Create a plugin","description":"Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/plugins","href":"/0.17/api-reference/plugins/create-a-plugin","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Create a plugin","description":"Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/plugins","href":"/0.17/api-reference/plugins/create-a-plugin","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Plugins"],"summary":"Create a plugin","description":"Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).","requestBody":"1ffa621e-575f-492e-be45-c97bcb130529","responses":{"200":"a233dc9c-3287-4d22-b45d-b90b1ba29bd1","400":"0e3f2bec-3047-4371-8f8b-1f16883ee779","401":"d4148d4d-0eff-45f1-bdc2-689295411f5b","403":"6a0da83e-1fe0-47a2-b059-d70d4ea441f2","409":"cba1de6c-f6a0-49b6-affb-d88e8e387692"},"method":"post","type":"path","servers":["31d1a0a9-094d-4cde-99bb-c97eac1ddb12"],"security":["1ca2abe6-39cf-498c-9372-73a9cdf0e486"],"path":"/api/v1/plugins","baseUrlOptions":["https://{command_center_host}"],"title":"Create a plugin","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":255,"isRequired":true,"uniqueKey":"name","typeLabel":"string"},"description":{"type":"string","maxLength":2000,"default":"","uniqueKey":"description","typeLabel":"string"},"connection":{"oneOf":[{"type":"object","required":["transport","url","authentication"],"properties":{"transport":{"type":"string","enum":["streamable-http","http-sse"],"isRequired":true,"uniqueKey":"connection.oneOf.0.transport","typeLabel":"enum\u003cstring>"},"url":{"type":"string","format":"uri","isRequired":true,"uniqueKey":"connection.oneOf.0.url","typeLabel":"string\u003curi>"},"authentication":{"oneOf":[{"type":"object","required":["method"],"properties":{"method":{"type":"string","enum":["anonymous"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.0.method","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.0","typeLabel":"object"},{"type":"object","required":["method"],"properties":{"method":{"type":"string","enum":["bearer"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.1.method","typeLabel":"enum\u003cstring>"},"credential_id":{"type":"string","description":"The Secret or Vault path credential the plugin sends","uniqueKey":"connection.oneOf.0.authentication.oneOf.1.credential_id","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.1","typeLabel":"object"},{"type":"object","required":["method","client"],"properties":{"method":{"type":"string","enum":["oauth"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.method","typeLabel":"enum\u003cstring>"},"client":{"oneOf":[{"type":"object","required":["registration","client_id"],"properties":{"registration":{"type":"string","enum":["pre_registered"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.registration","typeLabel":"enum\u003cstring>"},"client_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.client_id","typeLabel":"string"},"client_secret_credential_id":{"type":"string","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.client_secret_credential_id","typeLabel":"string"},"private_key":{"type":"object","properties":{"credential_id":{"type":"string","description":"The Secret or Vault path credential holding the PKCS #8 PEM private key","isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.private_key.credential_id","typeLabel":"string"},"key_id":{"type":"string","minLength":1,"maxLength":256,"description":"The `kid` the provider knows the public key by","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.private_key.key_id","typeLabel":"string"},"algorithm":{"type":"string","enum":["RS256","ES256"],"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.private_key.algorithm","typeLabel":"enum\u003cstring>"}},"required":["credential_id"],"additionalProperties":false,"description":"Authenticate the client with a JWT signed by its private key (`private_key_jwt`, RFC 7523) instead of a client secret. RS256 unless `algorithm` says otherwise.","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.private_key","typeLabel":"object"},"callback":{"type":"string","enum":["shared","per_provider"],"description":"Where the provider sends the browser back after consent: `per_provider`, a callback address of the plugin's authorization server alone, so a provider that does not name itself in its answer can sign in a client without a secret; absent or `shared`, the address every provider shares.","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.callback","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0","typeLabel":"object"},{"type":"object","required":["registration"],"properties":{"registration":{"type":"string","enum":["automatic"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.1.registration","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.1","typeLabel":"object"},{"type":"object","required":["registration"],"properties":{"registration":{"type":"string","enum":["dynamic"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.2.registration","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client","typeLabel":"object"},"scopes":{"type":"array","items":{"type":"string","pattern":"^[\\x21\\x23-\\x5B\\x5D-\\x7E]+$","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.scopes","typeLabel":"string[]"},"audience":{"type":"string","minLength":1,"maxLength":2048,"description":"The API the tokens are for, sent as the `audience` parameter of the authorization and token requests, as Auth0 asks for.","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.audience","typeLabel":"string"},"metadata_url":{"type":"string","maxLength":2048,"format":"uri","description":"Where the authorization server publishes its metadata, for a server whose metadata does not live at its issuer, such as Azure AD B2C. Discovery reads it instead of the server the MCP server names, and the plugin trusts the issuer it names.","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.metadata_url","typeLabel":"string\u003curi>"},"grant":{"type":"string","enum":["authorization_code","client_credentials"],"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.grant","typeLabel":"enum\u003cstring>"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2","typeLabel":"object"},{"type":"object","required":["method","header_name"],"properties":{"method":{"type":"string","enum":["api-key"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.3.method","typeLabel":"enum\u003cstring>"},"header_name":{"type":"string","pattern":"^[!#$%\u0026'*+.^_`|~0-9A-Za-z-]+$","description":"HTTP authentication header. Reserved HTTP transport and MCP session headers are not accepted.","isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.3.header_name","typeLabel":"string"},"credential_id":{"type":"string","description":"The Secret or Vault path credential the plugin sends","uniqueKey":"connection.oneOf.0.authentication.oneOf.3.credential_id","typeLabel":"string"}},"additionalProperties":false,"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication","typeLabel":"object"}},"additionalProperties":false,"uniqueKey":"connection.oneOf.0","typeLabel":"object"},{"type":"object","required":["transport","image","args","env"],"properties":{"transport":{"type":"string","enum":["stdio"],"isRequired":true,"uniqueKey":"connection.oneOf.1.transport","typeLabel":"enum\u003cstring>"},"image":{"type":"string","maxLength":255,"pattern":"^(?:[A-Za-z0-9-]+(?:\\.[A-Za-z0-9-]+)*(?::\\d+)?\\/)?[a-z0-9]+(?:(?:[._]|__|-+)[a-z0-9]+)*(?:\\/[a-z0-9]+(?:(?:[._]|__|-+)[a-z0-9]+)*)*(?::\\w[\\w.-]{0,127})?(?:@sha256:[a-f0-9]{64})?$","isRequired":true,"uniqueKey":"connection.oneOf.1.image","typeLabel":"string"},"args":{"type":"array","items":{"type":"string","maxLength":4096,"uniqueKey":"connection.oneOf.1.args.items.[INDEX]","typeLabel":"string"},"maxItems":64,"isRequired":true,"uniqueKey":"connection.oneOf.1.args","typeLabel":"string[]"},"env":{"type":"array","items":{"oneOf":[{"type":"object","required":["name","value"],"properties":{"name":{"type":"string","maxLength":128,"pattern":"^[A-Za-z_][A-Za-z0-9_]*$","isRequired":true,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.0.name","typeLabel":"string"},"value":{"type":"string","maxLength":4096,"isRequired":true,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.0.value","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["name","credential_id"],"properties":{"name":{"type":"string","maxLength":128,"pattern":"^[A-Za-z_][A-Za-z0-9_]*$","isRequired":true,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.1.name","typeLabel":"string"},"credential_id":{"type":"string","isRequired":true,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.1.credential_id","typeLabel":"string"}},"additionalProperties":false,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"connection.oneOf.1.env.items.[INDEX]","typeLabel":"object"},"maxItems":64,"isRequired":true,"uniqueKey":"connection.oneOf.1.env","typeLabel":"object[]"}},"additionalProperties":false,"uniqueKey":"connection.oneOf.1","typeLabel":"object"},{},{"type":"null","uniqueKey":"connection.oneOf.3","typeLabel":"null"}],"uniqueKey":"connection","typeLabel":"object · object · null"},"enabled":{"type":"boolean","uniqueKey":"enabled","typeLabel":"boolean"},"org_id":{"oneOf":[{"type":"string","uniqueKey":"org_id.oneOf.0","typeLabel":"string"},{"type":"null","uniqueKey":"org_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"org_id","typeLabel":"string | null"},"trusted_issuer":{"type":"string","maxLength":2048,"format":"uri","description":"OAuth only: the authorization server the MCP server names, trusted from this save on. Ignored when the plugin already trusts one.","uniqueKey":"trusted_issuer","typeLabel":"string\u003curi>"}},"required":["name"],"additionalProperties":false,"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"name":"\u003cstring>","description":"","connection":{"url":"\u003cstring>","authentication":{"method":"anonymous"}},"enabled":true,"org_id":"\u003cstring>","trusted_issuer":"\u003cstring>"}}},"exampleType":"generated"}},"exampleType":"generated"},"responses":{"a233dc9c-3287-4d22-b45d-b90b1ba29bd1":{"description":"The created plugin","content":{"application/json":{"schema":{"type":"object","properties":{"description":{"type":"string","isRequired":true,"uniqueKey":"description","typeLabel":"string"},"connection":{"oneOf":[{"type":"object","required":["transport","url","authentication"],"properties":{"transport":{"type":"string","enum":["streamable-http","http-sse"],"isRequired":true,"uniqueKey":"connection.oneOf.0.transport","typeLabel":"enum\u003cstring>"},"url":{"type":"string","isRequired":true,"uniqueKey":"connection.oneOf.0.url","typeLabel":"string"},"authentication":{"oneOf":[{"type":"object","required":["method"],"properties":{"method":{"type":"string","enum":["anonymous"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.0.method","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.0","typeLabel":"object"},{"type":"object","required":["method"],"properties":{"method":{"type":"string","enum":["bearer"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.1.method","typeLabel":"enum\u003cstring>"},"credential_id":{"type":"string","description":"The Secret or Vault path credential the plugin sends","uniqueKey":"connection.oneOf.0.authentication.oneOf.1.credential_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.1","typeLabel":"object"},{"type":"object","required":["method","client"],"properties":{"method":{"type":"string","enum":["oauth"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.method","typeLabel":"enum\u003cstring>"},"client":{"oneOf":[{"type":"object","required":["registration","client_id"],"properties":{"registration":{"type":"string","enum":["pre_registered"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.registration","typeLabel":"enum\u003cstring>"},"client_id":{"type":"string","minLength":1,"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.client_id","typeLabel":"string"},"client_secret_credential_id":{"type":"string","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.client_secret_credential_id","typeLabel":"string"},"private_key":{"type":"object","properties":{"credential_id":{"type":"string","description":"The Secret or Vault path credential holding the PKCS #8 PEM private key","isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.private_key.credential_id","typeLabel":"string"},"key_id":{"type":"string","minLength":1,"maxLength":256,"description":"The `kid` the provider knows the public key by","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.private_key.key_id","typeLabel":"string"},"algorithm":{"type":"string","enum":["RS256","ES256"],"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.private_key.algorithm","typeLabel":"enum\u003cstring>"}},"required":["credential_id"],"description":"Authenticate the client with a JWT signed by its private key (`private_key_jwt`, RFC 7523) instead of a client secret. RS256 unless `algorithm` says otherwise.","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.private_key","typeLabel":"object"},"callback":{"type":"string","enum":["shared","per_provider"],"description":"Where the provider sends the browser back after consent: `per_provider`, a callback address of the plugin's authorization server alone, so a provider that does not name itself in its answer can sign in a client without a secret; absent or `shared`, the address every provider shares.","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0.callback","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.0","typeLabel":"object"},{"type":"object","required":["registration"],"properties":{"registration":{"type":"string","enum":["automatic"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.1.registration","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.1","typeLabel":"object"},{"type":"object","required":["registration"],"properties":{"registration":{"type":"string","enum":["dynamic"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.2.registration","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client.oneOf.2","typeLabel":"object"}],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.client","typeLabel":"object"},"scopes":{"type":"array","items":{"type":"string","pattern":"^[\\x21\\x23-\\x5B\\x5D-\\x7E]+$","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.scopes.items.[INDEX]","typeLabel":"string"},"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.scopes","typeLabel":"string[]"},"audience":{"type":"string","minLength":1,"maxLength":2048,"description":"The API the tokens are for, sent as the `audience` parameter of the authorization and token requests, as Auth0 asks for.","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.audience","typeLabel":"string"},"metadata_url":{"type":"string","description":"Where the authorization server publishes its metadata, for a server whose metadata does not live at its issuer, such as Azure AD B2C. Discovery reads it instead of the server the MCP server names, and the plugin trusts the issuer it names.","uniqueKey":"connection.oneOf.0.authentication.oneOf.2.metadata_url","typeLabel":"string"},"grant":{"type":"string","enum":["authorization_code","client_credentials"],"uniqueKey":"connection.oneOf.0.authentication.oneOf.2.grant","typeLabel":"enum\u003cstring>"}},"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.2","typeLabel":"object"},{"type":"object","required":["method","header_name"],"properties":{"method":{"type":"string","enum":["api-key"],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.3.method","typeLabel":"enum\u003cstring>"},"header_name":{"type":"string","isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.3.header_name","typeLabel":"string"},"credential_id":{"type":"string","description":"The Secret or Vault path credential the plugin sends","uniqueKey":"connection.oneOf.0.authentication.oneOf.3.credential_id","typeLabel":"string"}},"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication.oneOf.3","typeLabel":"object"}],"isRequired":true,"uniqueKey":"connection.oneOf.0.authentication","typeLabel":"object"}},"isRequired":true,"uniqueKey":"connection.oneOf.0","typeLabel":"object"},{"type":"object","required":["transport","image","args","env"],"properties":{"transport":{"type":"string","enum":["stdio"],"isRequired":true,"uniqueKey":"connection.oneOf.1.transport","typeLabel":"enum\u003cstring>"},"image":{"type":"string","isRequired":true,"uniqueKey":"connection.oneOf.1.image","typeLabel":"string"},"args":{"type":"array","items":{"type":"string","uniqueKey":"connection.oneOf.1.args.items.[INDEX]","typeLabel":"string"},"maxItems":64,"isRequired":true,"uniqueKey":"connection.oneOf.1.args","typeLabel":"string[]"},"env":{"type":"array","items":{"oneOf":[{"type":"object","required":["name","value"],"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.0.name","typeLabel":"string"},"value":{"type":"string","isRequired":true,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.0.value","typeLabel":"string"}},"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.0","typeLabel":"object"},{"type":"object","required":["name","credential_id"],"properties":{"name":{"type":"string","isRequired":true,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.1.name","typeLabel":"string"},"credential_id":{"type":"string","isRequired":true,"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.1.credential_id","typeLabel":"string"}},"uniqueKey":"connection.oneOf.1.env.items.[INDEX].oneOf.1","typeLabel":"object"}],"uniqueKey":"connection.oneOf.1.env.items.[INDEX]","typeLabel":"object"},"maxItems":64,"isRequired":true,"uniqueKey":"connection.oneOf.1.env","typeLabel":"object[]"}},"isRequired":true,"uniqueKey":"connection.oneOf.1","typeLabel":"object"},{"isRequired":true},{"type":"null","isRequired":true,"uniqueKey":"connection.oneOf.3","typeLabel":"null"}],"isRequired":true,"uniqueKey":"connection","typeLabel":"object · object · null"},"hosted_server":{"type":"boolean","description":"Whether the plugin runs a hosted MCP server, also when its stored connection is unreadable and sent as null.","isRequired":true,"uniqueKey":"hosted_server","typeLabel":"boolean"},"id":{"type":"string","isRequired":true,"uniqueKey":"id","typeLabel":"string"},"name":{"type":"string","isRequired":true,"uniqueKey":"name","typeLabel":"string"},"enabled":{"type":"boolean","isRequired":true,"uniqueKey":"enabled","typeLabel":"boolean"},"tenant_id":{"type":"string","isRequired":true,"uniqueKey":"tenant_id","typeLabel":"string"},"org_id":{"oneOf":[{"type":"string","isRequired":true,"uniqueKey":"org_id.oneOf.0","typeLabel":"string"},{"type":"null","isRequired":true,"uniqueKey":"org_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"org_id","typeLabel":"string | null"},"created_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"created_at","typeLabel":"string\u003cdate-time>"},"updated_at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"updated_at","typeLabel":"string\u003cdate-time>"}},"required":["description","connection","hosted_server","id","name","enabled","tenant_id","org_id","created_at","updated_at"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"description":"\u003cstring>","connection":{"transport":"streamable-http","url":"\u003cstring>","authentication":{"method":"anonymous"}},"hosted_server":true,"id":"\u003cstring>","name":"\u003cstring>","enabled":true,"tenant_id":"\u003cstring>","org_id":"\u003cstring>","created_at":"2023-11-07T05:31:56Z","updated_at":"2023-11-07T05:31:56Z"}}},"exampleType":"generated"}},"exampleType":"generated"},"0e3f2bec-3047-4371-8f8b-1f16883ee779":{"description":"Bad request - a field is missing, malformed, or not allowed (VALIDATION_FAILED, BAD_REQUEST, INVALID_CURSOR)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"VALIDATION_FAILED","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"request_id":{"type":"string","example":"req_3702b7e7-...","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"field":{"type":"string","description":"Set when one input is at fault","uniqueKey":"field","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"required":["field","message"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Set when several inputs are at fault","uniqueKey":"errors","typeLabel":"object[]"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"uniqueKey":"details","typeLabel":"object"}},"required":["code","message","request_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"VALIDATION_FAILED","message":"Validation failed","request_id":"req_3702b7e7-...","field":"\u003cstring>","errors":[{"field":"\u003cstring>","message":"\u003cstring>"}],"details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"d4148d4d-0eff-45f1-bdc2-689295411f5b":{"description":"No credentials, or a key that is invalid, revoked, or expired (UNAUTHORIZED)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"VALIDATION_FAILED","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"request_id":{"type":"string","example":"req_3702b7e7-...","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"field":{"type":"string","description":"Set when one input is at fault","uniqueKey":"field","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"required":["field","message"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Set when several inputs are at fault","uniqueKey":"errors","typeLabel":"object[]"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"uniqueKey":"details","typeLabel":"object"}},"required":["code","message","request_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"VALIDATION_FAILED","message":"Validation failed","request_id":"req_3702b7e7-...","field":"\u003cstring>","errors":[{"field":"\u003cstring>","message":"\u003cstring>"}],"details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"6a0da83e-1fe0-47a2-b059-d70d4ea441f2":{"description":"Authenticated but not allowed (FORBIDDEN, ORG_ACCESS_DENIED, STEP_UP_REFUSED, TWO_FACTOR_ENROLLMENT_REQUIRED, LICENSE_CAP_REACHED, LICENSE_EXPIRED)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"VALIDATION_FAILED","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"request_id":{"type":"string","example":"req_3702b7e7-...","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"field":{"type":"string","description":"Set when one input is at fault","uniqueKey":"field","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"required":["field","message"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Set when several inputs are at fault","uniqueKey":"errors","typeLabel":"object[]"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"uniqueKey":"details","typeLabel":"object"}},"required":["code","message","request_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"VALIDATION_FAILED","message":"Validation failed","request_id":"req_3702b7e7-...","field":"\u003cstring>","errors":[{"field":"\u003cstring>","message":"\u003cstring>"}],"details":{}}}},"exampleType":"generated"}},"exampleType":"generated"},"cba1de6c-f6a0-49b6-affb-d88e8e387692":{"description":"The write conflicts with existing data (CONFLICT, DUPLICATE_KEY, FOREIGN_KEY_VIOLATION, RESOURCE_IN_USE)","content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","example":"VALIDATION_FAILED","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"message":{"type":"string","example":"Validation failed","isRequired":true,"uniqueKey":"message","typeLabel":"string"},"request_id":{"type":"string","example":"req_3702b7e7-...","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"field":{"type":"string","description":"Set when one input is at fault","uniqueKey":"field","typeLabel":"string"},"errors":{"type":"array","items":{"type":"object","properties":{"field":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].field","typeLabel":"string"},"message":{"type":"string","isRequired":true,"uniqueKey":"errors.items.[INDEX].message","typeLabel":"string"}},"required":["field","message"],"uniqueKey":"errors.items.[INDEX]","typeLabel":"object"},"description":"Set when several inputs are at fault","uniqueKey":"errors","typeLabel":"object[]"},"details":{"type":"object","additionalProperties":{"oneOf":[{},{"type":"null","uniqueKey":"details.additionalProperties.oneOf.1","typeLabel":"null"}],"uniqueKey":"details.additionalProperties","typeLabel":"null"},"uniqueKey":"details","typeLabel":"object"}},"required":["code","message","request_id"],"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"VALIDATION_FAILED","message":"Validation failed","request_id":"req_3702b7e7-...","field":"\u003cstring>","errors":[{"field":"\u003cstring>","message":"\u003cstring>"}],"details":{}}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"1ca2abe6-39cf-498c-9372-73a9cdf0e486":{"bearerAuth":{"type":"http","scheme":"bearer","description":"An API key minted in Command Center (Settings -> API Keys), sent as `Authorization: Bearer 2501_ak_...`. A Command Center session cookie is also accepted.","scopes":[],"schemeName":"bearerAuth"}}},"servers":{"31d1a0a9-094d-4cde-99bb-c97eac1ddb12":{"url":"https://{command_center_host}","variables":{"command_center_host":{"default":"your-command-center-host","description":"Your Command Center host"}}}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"An API key minted in Command Center (Settings -> API Keys), sent as `Authorization: Bearer 2501_ak_...`. A Command Center session cookie is also accepted.","scopes":[],"schemeName":"bearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"An API key minted in Command Center (Settings -> API Keys), sent as `Authorization: Bearer 2501_ak_...`. A Command Center session cookie is also accepted.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearerAuth","name":"Authorization"}],"title":"bearerAuth"}]},"originalFileLocation":"0.17/openapi.json"},"subdomain":"2501","siteName":"2501.ai","title":"Create a plugin - 2501.ai","navMaps":{"firstHrefInVersion":{"0.19":{"href":"/0.19/api-reference/plugins/create-a-plugin","matchLevel":1},"0.18":{"href":"/0.18/api-reference/plugins/create-a-plugin","matchLevel":1},"0.17":{"href":"/0.17/api-reference/plugins/create-a-plugin","matchLevel":0},"0.16":{"href":"/0.16/api/overview","matchLevel":2},"0.15":{"href":"/0.15/api/overview","matchLevel":2},"0.14":{"href":"/0.14/api/overview","matchLevel":2},"0.13":{"href":"/0.13/api/overview","matchLevel":2},"0.12":{"href":"/0.12/api/overview","matchLevel":2},"0.11":{"href":"/0.11/getting-started/welcome","matchLevel":4},"0.10":{"href":"/0.10/getting-started/welcome","matchLevel":4},"0.9":{"href":"/0.9/getting-started/welcome","matchLevel":4},"0.8":{"href":"/0.8/getting-started/welcome","matchLevel":4},"0.7":{"href":"/0.7/getting-started/welcome","matchLevel":4},"0.4":{"href":"/0.4/command-center","matchLevel":4},"0.3.0":{"href":"/0.3.0/command-center","matchLevel":4},"0.2.6":{"href":"/0.2.6/command-center","matchLevel":4}},"firstHrefInLanguage":{}},"lastModified":"2026-10-15T12:43:12.674Z","originalFileLocation":"0.17/api-reference/plugins/create-a-plugin.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).\">\u003cmeta data-mint-head name=\"application-name\" content=\"2501.ai\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Create a plugin - 2501.ai\">\u003cmeta data-mint-head property=\"og:description\" content=\"Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"2501.ai\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://2501.mintlify.app/_mintlify/api/og/v2?division=Plugins\u0026amp;title=Create+a+plugin\u0026amp;description=Omitting+org_id+creates+a+tenant-wide+plugin+and+requires+tenant-level+access.+A+connection+allows+a+custom+name.+A+plugin+of+an+organization+cannot+share+its+n\u0026amp;theme=f33d4ade6ddd98c4a45fdcd4\u0026amp;signature=d213cc5a1128376f3c437668a9ca610b718a19b516de6ed7706d45f55669deec\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Create a plugin - 2501.ai\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://2501.mintlify.app/_mintlify/api/og/v2?division=Plugins\u0026amp;title=Create+a+plugin\u0026amp;description=Omitting+org_id+creates+a+tenant-wide+plugin+and+requires+tenant-level+access.+A+connection+allows+a+custom+name.+A+plugin+of+an+organization+cannot+share+its+n\u0026amp;theme=f33d4ade6ddd98c4a45fdcd4\u0026amp;signature=d213cc5a1128376f3c437668a9ca610b718a19b516de6ed7706d45f55669deec\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/2501/ur2ley-wQyHAsGwc/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"2501.ai\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#121212\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/0.17/api-reference/plugins/create-a-plugin.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.2501.ai/#organization\",\"name\":\"2501.ai\",\"url\":\"https://docs.2501.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/2501/gMl_w8qww9Zl47hO/logo/light.png?fit=max\u0026auto=format\u0026n=gMl_w8qww9Zl47hO\u0026q=85\u0026s=eeeb37b3ca386a00dde53b3e6235adce\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.2501.ai#website\",\"name\":\"2501.ai\",\"url\":\"https://docs.2501.ai\",\"publisher\":{\"@id\":\"https://docs.2501.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin#webpage\",\"url\":\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin\",\"name\":\"Create a plugin\",\"description\":\"Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).\",\"dateModified\":\"2026-10-15T12:43:12.674Z\",\"isPartOf\":{\"@id\":\"https://docs.2501.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API\",\"item\":\"https://docs.2501.ai/0.17/api/overview\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Plugins\",\"item\":\"https://docs.2501.ai/0.17/api-reference/plugins/list-plugins\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Create a plugin\",\"item\":\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin#apireference\",\"headline\":\"Create a plugin\",\"name\":\"Create a plugin\",\"description\":\"Omitting org_id creates a tenant-wide plugin and requires tenant-level access. A connection allows a custom name. A plugin of an organization cannot share its name with another plugin of that organization or with a tenant-wide plugin, and a tenant-wide plugin cannot share it with any plugin of the tenant, ignoring case (409 otherwise). Every new plugin, a legacy one included, starts enabled unless enabled is false. A bearer or API key connection sends one Secret or Vault path credential of the plugin organization or tenant-wide, named in authentication.credential_id; without one the plugin is saved only with enabled false, and 400 otherwise. For a token per agent, use an anonymous plugin and the accessible credentials of the agent; for two authentication methods, create two plugins. Legacy creation keeps its supported names. A hosted MCP server (transport stdio) is a container image the engine starts, with its arguments and environment variables, each a plain value or a Secret or Vault path credential; adding one takes a tenant-level administrator (403 otherwise).\",\"url\":\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin\",\"mainEntityOfPage\":{\"@id\":\"https://docs.2501.ai/0.17/api-reference/plugins/create-a-plugin#webpage\"},\"dateModified\":\"2026-10-15T12:43:12.674Z\",\"publisher\":{\"@id\":\"https://docs.2501.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.2501.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"2501.ai\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"2501.ai","nav":{"global":null,"versions":[{"version":"0.19","pages":[{"title":"0.19","href":"/0.19/api-reference/plugins/create-a-plugin"}]},{"version":"0.18","pages":[{"title":"0.18","href":"/0.18/api-reference/plugins/create-a-plugin"}]},{"version":"0.17","tabs":[{"tab":"Docs","pages":[{"title":"Docs","href":"/0.17/getting-started/welcome"}]},{"tab":"Reference","groups":[{"group":"API","pages":[{"title":"API Overview","href":"/0.17/api/overview"},{"group":"Plugins","pages":[{"title":"List plugins","description":"org_id filters to that org plus tenant-wide plugins. Omit it to list the caller accessible scope.","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/plugins","href":"/0.17/api-reference/plugins/list-plugins"},{"title":"Create a plugin","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/plugins","href":"/0.17/api-reference/plugins/create-a-plugin"},{"title":"Search plugins","description":"Matches q against the id and name. tenant_wide=true keeps only the tenant-wide plugins, tenant_wide=false only the ones an organization owns.","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/plugins/search","href":"/0.17/api-reference/plugins/search-plugins"},{"title":"Get a plugin","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/plugins/{id}","href":"/0.17/api-reference/plugins/get-a-plugin"},{"title":"Update a plugin","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/plugins/{id}","href":"/0.17/api-reference/plugins/update-a-plugin"},{"title":"Delete a plugin","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/plugins/{id}","href":"/0.17/api-reference/plugins/delete-a-plugin"},{"title":"List the specialties that inherit a plugin","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/plugins/{id}/specialties","href":"/0.17/api-reference/plugins/list-the-specialties-that-inherit-a-plugin"},{"title":"Assign a plugin to a specialty","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/plugins/{id}/specialties/{specialtyId}","href":"/0.17/api-reference/plugins/assign-a-plugin-to-a-specialty"},{"title":"Stop a specialty inheriting a plugin","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/plugins/{id}/specialties/{specialtyId}","href":"/0.17/api-reference/plugins/stop-a-specialty-inheriting-a-plugin"},{"title":"List the agents that have a plugin","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/plugins/{id}/agents","href":"/0.17/api-reference/plugins/list-the-agents-that-have-a-plugin"},{"title":"Assign a plugin to an agent","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/plugins/{id}/agents/{agentId}","href":"/0.17/api-reference/plugins/assign-a-plugin-to-an-agent"},{"title":"Remove a plugin from an agent","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/plugins/{id}/agents/{agentId}","href":"/0.17/api-reference/plugins/remove-a-plugin-from-an-agent"},{"title":"Read the OAuth account status of a plugin for an organization","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/plugins/{id}/oauth","href":"/0.17/api-reference/plugins/read-the-oauth-account-status-of-a-plugin-for-an-organization"},{"title":"Forget the authorization server a plugin trusts","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/plugins/{id}/oauth/trusted-issuer","href":"/0.17/api-reference/plugins/forget-the-authorization-server-a-plugin-trusts"}]},{"group":"Specialties","pages":[{"title":"List specialties","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/specialties","href":"/0.17/api-reference/specialties/list-specialties"},{"title":"Create a specialty","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/specialties","href":"/0.17/api-reference/specialties/create-a-specialty"},{"title":"Search specialties","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/specialties/search","href":"/0.17/api-reference/specialties/search-specialties"},{"title":"Get a specialty","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/specialties/{id}","href":"/0.17/api-reference/specialties/get-a-specialty"},{"title":"Update a specialty","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/specialties/{id}","href":"/0.17/api-reference/specialties/update-a-specialty"},{"title":"Delete a specialty","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/specialties/{id}","href":"/0.17/api-reference/specialties/delete-a-specialty"},{"title":"Count what references a specialty","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/specialties/{id}/references","href":"/0.17/api-reference/specialties/count-what-references-a-specialty"}]},{"group":"Blacklists","pages":[{"title":"List blacklisted commands","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/blacklists","href":"/0.17/api-reference/blacklists/list-blacklisted-commands"},{"title":"Create a blacklisted command","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/blacklists","href":"/0.17/api-reference/blacklists/create-a-blacklisted-command"},{"title":"Search blacklisted commands","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/blacklists/search","href":"/0.17/api-reference/blacklists/search-blacklisted-commands"},{"title":"Get a blacklisted command","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/blacklists/{id}","href":"/0.17/api-reference/blacklists/get-a-blacklisted-command"},{"title":"Update a blacklisted command","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/blacklists/{id}","href":"/0.17/api-reference/blacklists/update-a-blacklisted-command"},{"title":"Delete a blacklisted command","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/blacklists/{id}","href":"/0.17/api-reference/blacklists/delete-a-blacklisted-command"}]},{"group":"Gateways","pages":[{"title":"List gateways","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/gateways","href":"/0.17/api-reference/gateways/list-gateways"},{"title":"Create a gateway","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/gateways","href":"/0.17/api-reference/gateways/create-a-gateway"},{"title":"Search gateways","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/gateways/search","href":"/0.17/api-reference/gateways/search-gateways"},{"title":"Get a gateway","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/gateways/{id}","href":"/0.17/api-reference/gateways/get-a-gateway"},{"title":"Update a gateway","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/gateways/{id}","href":"/0.17/api-reference/gateways/update-a-gateway"},{"title":"Delete a gateway","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/gateways/{id}","href":"/0.17/api-reference/gateways/delete-a-gateway"},{"title":"Count what references a gateway","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/gateways/{id}/references","href":"/0.17/api-reference/gateways/count-what-references-a-gateway"}]},{"group":"Hosts","pages":[{"title":"List hosts","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/hosts","href":"/0.17/api-reference/hosts/list-hosts"},{"title":"Create a host","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/hosts","href":"/0.17/api-reference/hosts/create-a-host"},{"title":"Search hosts","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/hosts/search","href":"/0.17/api-reference/hosts/search-hosts"},{"title":"Bulk import hosts","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/hosts/batch","href":"/0.17/api-reference/hosts/bulk-import-hosts"},{"title":"Bulk export hosts","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/hosts/export","href":"/0.17/api-reference/hosts/bulk-export-hosts"},{"title":"Get a host","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/hosts/{id}","href":"/0.17/api-reference/hosts/get-a-host"},{"title":"Update a host","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/hosts/{id}","href":"/0.17/api-reference/hosts/update-a-host"},{"title":"Delete a host","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/hosts/{id}","href":"/0.17/api-reference/hosts/delete-a-host"},{"title":"List a host agents","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/hosts/{id}/agents","href":"/0.17/api-reference/hosts/list-a-host-agents"}]},{"group":"Agents","pages":[{"title":"List agents","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/agents","href":"/0.17/api-reference/agents/list-agents"},{"title":"Create an agent","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/agents","href":"/0.17/api-reference/agents/create-an-agent"},{"title":"Search agents","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/agents/search","href":"/0.17/api-reference/agents/search-agents"},{"title":"Bulk import agents","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/agents/batch","href":"/0.17/api-reference/agents/bulk-import-agents"},{"title":"Bulk export agents","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/agents/export","href":"/0.17/api-reference/agents/bulk-export-agents"},{"title":"Get an agent","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/agents/{id}","href":"/0.17/api-reference/agents/get-an-agent"},{"title":"Update an agent","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/agents/{id}","href":"/0.17/api-reference/agents/update-an-agent"},{"title":"Archive an agent","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/agents/{id}/archive","href":"/0.17/api-reference/agents/archive-an-agent"},{"title":"Archive idle tasks","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/agents/{id}/archive-tasks","href":"/0.17/api-reference/agents/archive-idle-tasks"},{"title":"List an agent tasks","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/agents/{id}/tasks","href":"/0.17/api-reference/agents/list-an-agent-tasks"},{"title":"Test the connection","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/agents/{id}/test-connection","href":"/0.17/api-reference/agents/test-the-connection"},{"title":"List an agent plugins","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/agents/{id}/plugins","href":"/0.17/api-reference/agents/list-an-agent-plugins"},{"title":"Save a plugin assignment","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/agents/{id}/plugins","href":"/0.17/api-reference/agents/save-a-plugin-assignment"},{"title":"Replace an agent's plugin assignments","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/agents/{id}/replace-plugins","href":"/0.17/api-reference/agents/replace-an-agents-plugin-assignments"},{"title":"Read one plugin assignment","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/agents/{id}/plugins/{pluginId}","href":"/0.17/api-reference/agents/read-one-plugin-assignment"},{"title":"Detach a plugin","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/agents/{id}/plugins/{pluginId}","href":"/0.17/api-reference/agents/detach-a-plugin"},{"title":"Check an assigned MCP connection","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/agents/{id}/plugins/{pluginId}/check","href":"/0.17/api-reference/agents/check-an-assigned-mcp-connection"}]},{"group":"Credentials","pages":[{"title":"List credentials","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/credentials","href":"/0.17/api-reference/credentials/list-credentials"},{"title":"Create a credential","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/credentials","href":"/0.17/api-reference/credentials/create-a-credential"},{"title":"Search credentials","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/credentials/search","href":"/0.17/api-reference/credentials/search-credentials"},{"title":"Get a credential","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/credentials/{id}","href":"/0.17/api-reference/credentials/get-a-credential"},{"title":"Update a credential","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/credentials/{id}","href":"/0.17/api-reference/credentials/update-a-credential"},{"title":"Delete a credential","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/credentials/{id}","href":"/0.17/api-reference/credentials/delete-a-credential"},{"title":"Get credential usage","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/credentials/{id}/references","href":"/0.17/api-reference/credentials/get-credential-usage"}]},{"group":"Operational Rules","pages":[{"title":"List operational rules","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/operational-rules","href":"/0.17/api-reference/operational-rules/list-operational-rules"},{"title":"Create an operational rule","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/operational-rules","href":"/0.17/api-reference/operational-rules/create-an-operational-rule"},{"title":"Search operational rules","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/operational-rules/search","href":"/0.17/api-reference/operational-rules/search-operational-rules"},{"title":"Get an operational rule","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/operational-rules/{id}","href":"/0.17/api-reference/operational-rules/get-an-operational-rule"},{"title":"Update an operational rule","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/operational-rules/{id}","href":"/0.17/api-reference/operational-rules/update-an-operational-rule"},{"title":"Delete an operational rule","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/operational-rules/{id}","href":"/0.17/api-reference/operational-rules/delete-an-operational-rule"}]},{"group":"Scenarios","pages":[{"title":"List scenarios","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/scenarios","href":"/0.17/api-reference/scenarios/list-scenarios"},{"title":"Create a scenario","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/scenarios","href":"/0.17/api-reference/scenarios/create-a-scenario"},{"title":"Get a scenario","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/scenarios/{id}","href":"/0.17/api-reference/scenarios/get-a-scenario"},{"title":"Update a scenario","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/scenarios/{id}","href":"/0.17/api-reference/scenarios/update-a-scenario"},{"title":"Delete a scenario","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/scenarios/{id}","href":"/0.17/api-reference/scenarios/delete-a-scenario"},{"title":"Run a scenario","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/scenarios/{id}/run","href":"/0.17/api-reference/scenarios/run-a-scenario"},{"title":"List runs of a scenario","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/scenarios/{id}/runs","href":"/0.17/api-reference/scenarios/list-runs-of-a-scenario"},{"title":"Get a run","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/scenarios/{id}/runs/{reportId}","href":"/0.17/api-reference/scenarios/get-a-run"},{"title":"Stop a run","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/scenarios/{id}/runs/{reportId}/stop","href":"/0.17/api-reference/scenarios/stop-a-run"}]},{"group":"Benchmarks","pages":[{"title":"List benchmarks","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/benchmarks","href":"/0.17/api-reference/benchmarks/list-benchmarks"},{"title":"Run a benchmark","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/benchmarks","href":"/0.17/api-reference/benchmarks/run-a-benchmark"},{"title":"Get a benchmark","deprecated":null,"version":null,"openapi":"/0.17/openapi.json get /api/v1/benchmarks/{id}","href":"/0.17/api-reference/benchmarks/get-a-benchmark"},{"title":"Delete a benchmark","deprecated":null,"version":null,"openapi":"/0.17/openapi.json delete /api/v1/benchmarks/{id}","href":"/0.17/api-reference/benchmarks/delete-a-benchmark"},{"title":"Cancel a benchmark","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/benchmarks/{id}/cancel","href":"/0.17/api-reference/benchmarks/cancel-a-benchmark"}]},{"group":"Signals","pages":[{"title":"Receive a Splunk alert","deprecated":null,"version":null,"openapi":"/0.17/openapi.json post /api/v1/signals","href":"/0.17/api-reference/signals/receive-a-splunk-alert"}]}]},{"group":"CLI","pages":[{"title":"2501 CLI","href":"/0.17/cli/overview"},{"title":"login \u0026 status","href":"/0.17/cli/login-status"},{"title":"resources","href":"/0.17/cli/resources"},{"title":"infra","href":"/0.17/cli/infra"},{"title":"chat","href":"/0.17/cli/chat"}]},{"group":"Deploy","pages":[{"title":"Overview","href":"/0.17/deployment/overview"},{"title":"Init Command","href":"/0.17/deployment/init-command"},{"title":"Configuration","href":"/0.17/deployment/configuration"},{"title":"Docker Swarm","href":"/0.17/deployment/docker-swarm"},{"title":"Kubernetes","href":"/0.17/deployment/kubernetes"},{"title":"LLM Providers","href":"/0.17/deployment/llm-providers"},{"title":"Users \u0026 Organizations","href":"/0.17/deployment/users-organizations"},{"title":"Troubleshooting","href":"/0.17/deployment/troubleshooting"},{"title":"Feature Toggles","href":"/0.17/deployment/feature-toggles"},{"title":"Verify Image Signatures","href":"/0.17/deployment/verify-downloads"}]},{"group":"Configure","pages":[{"group":"Agent Behavior","pages":[{"title":"Specialties","href":"/0.17/configure/specialties"},{"title":"Operational Rules","href":"/0.17/configure/operational-rules"},{"title":"Blacklist","href":"/0.17/configure/blacklist"}]},{"title":"Clusters","href":"/0.17/configure/clusters"},{"title":"Knowledge Base","href":"/0.17/configure/knowledge"},{"title":"Import and Export","href":"/0.17/configure/import-export"},{"group":"Access \u0026 Secrets","pages":[{"title":"Credentials","href":"/0.17/configure/credentials"},{"title":"API Keys","href":"/0.17/configure/api-keys"},{"title":"Plugins","href":"/0.17/configure/plugins"}]},{"group":"Integration","pages":[{"title":"Webhooks","href":"/0.17/configure/webhooks"},{"title":"Configuration as Code","href":"/0.17/configure/configuration-as-code"},{"group":"Resource Reference","pages":[{"title":"Agent","href":"/0.17/configure/resources/agents"},{"title":"Host","href":"/0.17/configure/resources/hosts"},{"title":"Specialty","href":"/0.17/configure/resources/specialties"},{"title":"Operational Rule","href":"/0.17/configure/resources/operational-rules"},{"title":"Credential","href":"/0.17/configure/resources/credentials"},{"title":"Gateway","href":"/0.17/configure/resources/gateways"},{"title":"Blacklist","href":"/0.17/configure/resources/blacklist"}]},{"title":"Network Discovery","href":"/0.17/configure/discovery"}]},{"group":"LLM","pages":[{"title":"Providers","href":"/0.17/configure/providers"},{"title":"Models","href":"/0.17/configure/models"}]},{"title":"Users","href":"/0.17/configure/users"},{"title":"Licensing \u0026 Usage","href":"/0.17/configure/licensing"}]}]},{"tab":"Benchmark","pages":[{"title":"Benchmark","href":"/0.17/benchmark/overview"}]},{"tab":"Guides","pages":[{"title":"Guides","href":"/0.17/configure/prompting"}]}]},{"version":"0.16","pages":[{"title":"0.16","href":"/0.16/api/overview"}]},{"version":"0.15","pages":[{"title":"0.15","href":"/0.15/api/overview"}]},{"version":"0.14","pages":[{"title":"0.14","href":"/0.14/api/overview"}]},{"version":"0.13","pages":[{"title":"0.13","href":"/0.13/api/overview"}]},{"version":"0.12","pages":[{"title":"0.12","href":"/0.12/api/overview"}]},{"version":"0.11","pages":[{"title":"0.11","href":"/0.11/getting-started/welcome"}]},{"version":"0.10","pages":[{"title":"0.10","href":"/0.10/getting-started/welcome"}]},{"version":"0.9","pages":[{"title":"0.9","href":"/0.9/getting-started/welcome"}]},{"version":"0.8","pages":[{"title":"0.8","href":"/0.8/getting-started/welcome"}]},{"version":"0.7","pages":[{"title":"0.7","href":"/0.7/getting-started/welcome"}]},{"version":"0.4","pages":[{"title":"0.4","href":"/0.4/command-center"}]},{"version":"0.3.0","pages":[{"title":"0.3.0","href":"/0.3.0/command-center"}]},{"version":"0.2.6","pages":[{"title":"0.2.6","href":"/0.2.6/command-center"}]}]},"basePath":"","title":"Create a plugin - 2501.ai","buildId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","deploymentId":"dpl_345ReqzYaAjzS9QpeJemsKdb7KDj","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C8RPHPxo.js","utils-0BK-9q6z.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DfjzsUJT.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B4v9psJ4.js","snippetPresets-CpTQv-Ez.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-BNP-Fvr0.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BSgu6h1D.js","shallow-Biv1i9Gs.js","getApiPlaygroundDisplay-BoGOXhtF.js","CodeSnippet-DvQoT18_.js","CodeSnippets-Dnpa15xT.js","Page-Buji1S4J.js","getPastedJson-xAIyhUFE.js","icon-S6FBih11.js","MethodPill-SaYeUZyk.js","DuplicateIcon-Cs-p3v2Q.js","createIcon-DjCFEoHq.js","DynamicMarkdown-BcnBltEQ.js","SectionHeading-BUBl0eEF.js","axios-vUo_bRtp.js","Markdown-h4cOoD8d.js","clsx-B2v50t8t.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-DJnKvr0g.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-BHrrjR1K.js"]}