MCPBundler Docs
MCPBundler Docs
Back to marketplaceGetting StartedAuthenticationTutorial - Bundle to Connected Agent
API Reference
Agent A2A Tools
Agent Channels
Agent Configuration (Staging)
Agent Configuration (Versions)
Agent Tools
Agents
Auth
Billing
Bundler
Bundler Tool
Bundles
Call Campaigns
Catalog
Conversations
Credentials
Deployments
Discover
Embedding
Fleet
Knowledge Bases
LLM
MCP Listings
Media
OAuth Clients
Create Oauth ClientGet Oauth Client Mcp ExposureList Mcp ToolsList Oauth ClientsRevoke Oauth ClientSet Oauth Client Mcp ExposureSet Oauth Client Resource Grants
OAuth2
Observability
Organisations
Realtime
Reviews
Roadmap
SCIM
STT
Suppression
Triggers
TTS
Users
Utils
Voices
Webhooks
Workflows
API ReferenceOAuth Clients

Set Oauth Client Resource Grants

PUT
/v1/organisations/{org_id}/oauth-clients/{client_id}/resource-grants

Replace one credential's instance-grant allow-list for one resource type.

The only writer of OAuthClientResourceGrant rows besides the auto-grant-on-create hook (see CreatableMixin.create) - without it a credential holding a scope but no grant rows reads nothing at all, which is the spec's deliberate default-deny state.

The supplied ids are not validated against the organisation: the org floor is enforced independently of and prior to instance grants (see the design spec's verification list), so a granted id belonging to another org still resolves to 404 for this credential.

A credential belonging to a different organisation is a 404, not a 403 - matching revoke_oauth_client's own opacity for the same case.

Authorization

OAuth2AuthorizationCodeBearer
AuthorizationBearer <token>

In: header

Path Parameters

org_id*Org Id
Formatuuid
client_id*Client Id
Formatuuid

Query Parameters

verify_locally?Verify Locally
Defaulttrue

Request Body

application/json

TypeScript Definitions

Use the request body type in TypeScript.

Instance-grant allow-list for one resource type of one credential.

resource_ids is required and explicitly nullable, never defaulted - per the spec, unrestricted must be a deliberate write:

  • null -> the unrestricted-within-org sentinel row,
  • [] -> deny-all (zero rows for this pair),
  • [...] -> allow-listed to exactly those instance ids.

Response Body

application/json

curl -X PUT "https://example.com/v1/organisations/497f6eca-6276-4993-bfeb-53cbbbba6f08/oauth-clients/497f6eca-6276-4993-bfeb-53cbbbba6f08/resource-grants" \  -H "Content-Type: application/json" \  -d '{    "resource": "string",    "resource_ids": [      "f3aaf7b6-b51a-43c8-8627-9e1a7630b22a"    ]  }'
Empty
{  "detail": [    {      "loc": [        "string"      ],      "msg": "string",      "type": "string"    }  ]}

Set Oauth Client Mcp Exposure

Previous Page

OAuth2

Endpoints in the OAuth2 group.

resource*Resource
resource_ids*array<>|null