Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .release-please-manifest.json
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
{
".": "1.6.0"
".": "1.7.0"
}
8 changes: 4 additions & 4 deletions .stats.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
configured_endpoints: 113
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-37187e72e61b850045924e6cb40207159ab794114add75a2bf36c87915326306.yml
openapi_spec_hash: 33510c114bef0847855cdaf8f55c0774
config_hash: 9f86425631c30497276e58b744dd3654
configured_endpoints: 117
openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai%2Frunloop-15b7fd06098d8cb3639efb3b401a03d7d97a8ab4960b08077aa871f0cacb33d3.yml
openapi_spec_hash: 93ab2fe88f9e57d8f262ad6d1179190e
config_hash: eb28692edd68a6ae95cf92af931c9976
21 changes: 21 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
# Changelog

## 1.7.0 (2026-02-05)

Full Changelog: [v1.6.0...v1.7.0](https://github.com/runloopai/api-client-ts/compare/v1.6.0...v1.7.0)

### Features

* adding MCP Config routes ([#7331](https://github.com/runloopai/api-client-ts/issues/7331)) ([81054b5](https://github.com/runloopai/api-client-ts/commit/81054b5b53a4e5244d1bf8489b610deda650600e))
* **devbox:** add mcp configuration to devbox create ([#7341](https://github.com/runloopai/api-client-ts/issues/7341)) ([6ed219b](https://github.com/runloopai/api-client-ts/commit/6ed219bbbc44d105ca43be3f2e4265263d259b22))


### Bug Fixes

* publish-docs.yml on main failing b/c yarn binary missing in ubuntu-slim ([#712](https://github.com/runloopai/api-client-ts/issues/712)) ([13c187b](https://github.com/runloopai/api-client-ts/commit/13c187b3efa409ecad35910b11bf041217dd7679))


### Chores

* additional e2e tests for gatewayconfig + network config ([#709](https://github.com/runloopai/api-client-ts/issues/709)) ([ed48249](https://github.com/runloopai/api-client-ts/commit/ed482490613dc503893edaa2808aaad10c7f75c5))
* **ci:** migrate fast and simple actions to ubuntu-slim runner ([#703](https://github.com/runloopai/api-client-ts/issues/703)) ([3c06589](https://github.com/runloopai/api-client-ts/commit/3c06589447650885fe143c8e5470e6231473f4e8))
* fix workflow using slim not having yarn ([#713](https://github.com/runloopai/api-client-ts/issues/713)) ([261fc58](https://github.com/runloopai/api-client-ts/commit/261fc580c7ccd3aeda0dbd99af31c2b42b4882ae))

## 1.6.0 (2026-02-04)

Full Changelog: [v1.5.1...v1.6.0](https://github.com/runloopai/api-client-ts/compare/v1.5.1...v1.6.0)
Expand Down
19 changes: 17 additions & 2 deletions api.md
Original file line number Diff line number Diff line change
Expand Up @@ -267,15 +267,13 @@ Types:
- <code><a href="./src/resources/scenarios/scorers.ts">ScorerRetrieveResponse</a></code>
- <code><a href="./src/resources/scenarios/scorers.ts">ScorerUpdateResponse</a></code>
- <code><a href="./src/resources/scenarios/scorers.ts">ScorerListResponse</a></code>
- <code><a href="./src/resources/scenarios/scorers.ts">ScorerValidateResponse</a></code>

Methods:

- <code title="post /v1/scenarios/scorers">client.scenarios.scorers.<a href="./src/resources/scenarios/scorers.ts">create</a>({ ...params }) -> ScorerCreateResponse</code>
- <code title="get /v1/scenarios/scorers/{id}">client.scenarios.scorers.<a href="./src/resources/scenarios/scorers.ts">retrieve</a>(id) -> ScorerRetrieveResponse</code>
- <code title="post /v1/scenarios/scorers/{id}">client.scenarios.scorers.<a href="./src/resources/scenarios/scorers.ts">update</a>(id, { ...params }) -> ScorerUpdateResponse</code>
- <code title="get /v1/scenarios/scorers">client.scenarios.scorers.<a href="./src/resources/scenarios/scorers.ts">list</a>({ ...params }) -> ScorerListResponsesScenarioScorersCursorIDPage</code>
- <code title="post /v1/scenarios/scorers/{id}/validate">client.scenarios.scorers.<a href="./src/resources/scenarios/scorers.ts">validate</a>(id, { ...params }) -> ScorerValidateResponse</code>

# Objects

Expand Down Expand Up @@ -368,3 +366,20 @@ Methods:
- <code title="post /v1/gateway-configs/{id}">client.gatewayConfigs.<a href="./src/resources/gateway-configs.ts">update</a>(id, { ...params }) -> GatewayConfigView</code>
- <code title="get /v1/gateway-configs">client.gatewayConfigs.<a href="./src/resources/gateway-configs.ts">list</a>({ ...params }) -> GatewayConfigViewsGatewayConfigsCursorIDPage</code>
- <code title="post /v1/gateway-configs/{id}/delete">client.gatewayConfigs.<a href="./src/resources/gateway-configs.ts">delete</a>(id) -> GatewayConfigView</code>

# McpConfigs

Types:

- <code><a href="./src/resources/mcp-configs.ts">McpConfigCreateParameters</a></code>
- <code><a href="./src/resources/mcp-configs.ts">McpConfigListView</a></code>
- <code><a href="./src/resources/mcp-configs.ts">McpConfigUpdateParameters</a></code>
- <code><a href="./src/resources/mcp-configs.ts">McpConfigView</a></code>

Methods:

- <code title="post /v1/mcp-configs">client.mcpConfigs.<a href="./src/resources/mcp-configs.ts">create</a>({ ...params }) -> McpConfigView</code>
- <code title="get /v1/mcp-configs/{id}">client.mcpConfigs.<a href="./src/resources/mcp-configs.ts">retrieve</a>(id) -> McpConfigView</code>
- <code title="post /v1/mcp-configs/{id}">client.mcpConfigs.<a href="./src/resources/mcp-configs.ts">update</a>(id, { ...params }) -> McpConfigView</code>
- <code title="get /v1/mcp-configs">client.mcpConfigs.<a href="./src/resources/mcp-configs.ts">list</a>({ ...params }) -> McpConfigViewsMcpConfigsCursorIDPage</code>
- <code title="post /v1/mcp-configs/{id}/delete">client.mcpConfigs.<a href="./src/resources/mcp-configs.ts">delete</a>(id) -> McpConfigView</code>
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@runloop/api-client",
"version": "1.6.0",
"version": "1.7.0",
"description": "The official TypeScript library for the Runloop API",
"author": "Runloop <support@runloop.ai>",
"types": "dist/sdk.d.ts",
Expand Down
36 changes: 36 additions & 0 deletions src/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,8 @@ import {
DiskSnapshotsCursorIDPageResponse,
type GatewayConfigsCursorIDPageParams,
GatewayConfigsCursorIDPageResponse,
type McpConfigsCursorIDPageParams,
McpConfigsCursorIDPageResponse,
type NetworkPoliciesCursorIDPageParams,
NetworkPoliciesCursorIDPageResponse,
type ObjectsCursorIDPageParams,
Expand Down Expand Up @@ -106,6 +108,18 @@ import {
GatewayConfigViewsGatewayConfigsCursorIDPage,
GatewayConfigs,
} from './resources/gateway-configs';
import {
McpConfigCreateParameters,
McpConfigCreateParams,
McpConfigDeleteParams,
McpConfigListParams,
McpConfigListView,
McpConfigUpdateParameters,
McpConfigUpdateParams,
McpConfigView,
McpConfigViewsMcpConfigsCursorIDPage,
McpConfigs,
} from './resources/mcp-configs';
import {
NetworkPolicies,
NetworkPolicyCreateParameters,
Expand Down Expand Up @@ -359,6 +373,7 @@ export class Runloop extends Core.APIClient {
secrets: API.Secrets = new API.Secrets(this);
networkPolicies: API.NetworkPolicies = new API.NetworkPolicies(this);
gatewayConfigs: API.GatewayConfigs = new API.GatewayConfigs(this);
mcpConfigs: API.McpConfigs = new API.McpConfigs(this);

/**
* Check whether the base URL is set to its default.
Expand Down Expand Up @@ -426,6 +441,8 @@ Runloop.NetworkPolicies = NetworkPolicies;
Runloop.NetworkPolicyViewsNetworkPoliciesCursorIDPage = NetworkPolicyViewsNetworkPoliciesCursorIDPage;
Runloop.GatewayConfigs = GatewayConfigs;
Runloop.GatewayConfigViewsGatewayConfigsCursorIDPage = GatewayConfigViewsGatewayConfigsCursorIDPage;
Runloop.McpConfigs = McpConfigs;
Runloop.McpConfigViewsMcpConfigsCursorIDPage = McpConfigViewsMcpConfigsCursorIDPage;

export declare namespace Runloop {
export type RequestOptions = Core.RequestOptions;
Expand Down Expand Up @@ -508,6 +525,12 @@ export declare namespace Runloop {
type GatewayConfigsCursorIDPageResponse as GatewayConfigsCursorIDPageResponse,
};

export import McpConfigsCursorIDPage = Pagination.McpConfigsCursorIDPage;
export {
type McpConfigsCursorIDPageParams as McpConfigsCursorIDPageParams,
type McpConfigsCursorIDPageResponse as McpConfigsCursorIDPageResponse,
};

export {
Benchmarks as Benchmarks,
type BenchmarkCreateParameters as BenchmarkCreateParameters,
Expand Down Expand Up @@ -708,6 +731,19 @@ export declare namespace Runloop {
type GatewayConfigDeleteParams as GatewayConfigDeleteParams,
};

export {
McpConfigs as McpConfigs,
type McpConfigCreateParameters as McpConfigCreateParameters,
type McpConfigListView as McpConfigListView,
type McpConfigUpdateParameters as McpConfigUpdateParameters,
type McpConfigView as McpConfigView,
McpConfigViewsMcpConfigsCursorIDPage as McpConfigViewsMcpConfigsCursorIDPage,
type McpConfigCreateParams as McpConfigCreateParams,
type McpConfigUpdateParams as McpConfigUpdateParams,
type McpConfigListParams as McpConfigListParams,
type McpConfigDeleteParams as McpConfigDeleteParams,
};

export type AfterIdle = API.AfterIdle;
export type AgentMount = API.AgentMount;
export type AgentSource = API.AgentSource;
Expand Down
74 changes: 74 additions & 0 deletions src/pagination.ts
Original file line number Diff line number Diff line change
Expand Up @@ -963,3 +963,77 @@ export class GatewayConfigsCursorIDPage<Item extends { id: string }>
return { params: { starting_after: id } };
}
}

export interface McpConfigsCursorIDPageResponse<Item> {
mcp_configs: Array<Item>;

has_more: boolean;

total_count: number;
}

export interface McpConfigsCursorIDPageParams {
starting_after?: string;

limit?: number;
}

export class McpConfigsCursorIDPage<Item extends { id: string }>
extends AbstractPage<Item>
implements McpConfigsCursorIDPageResponse<Item>
{
mcp_configs: Array<Item>;

has_more: boolean;

total_count: number;

constructor(
client: APIClient,
response: Response,
body: McpConfigsCursorIDPageResponse<Item>,
options: FinalRequestOptions,
) {
super(client, response, body, options);

this.mcp_configs = body.mcp_configs || [];
this.has_more = body.has_more || false;
this.total_count = body.total_count || 0;
}

getPaginatedItems(): Item[] {
return this.mcp_configs ?? [];
}

override hasNextPage(): boolean {
if (this.has_more === false) {
return false;
}

return super.hasNextPage();
}

// @deprecated Please use `nextPageInfo()` instead
nextPageParams(): Partial<McpConfigsCursorIDPageParams> | null {
const info = this.nextPageInfo();
if (!info) return null;
if ('params' in info) return info.params;
const params = Object.fromEntries(info.url.searchParams);
if (!Object.keys(params).length) return null;
return params;
}

nextPageInfo(): PageInfo | null {
const mcpConfigs = this.getPaginatedItems();
if (!mcpConfigs.length) {
return null;
}

const id = mcpConfigs[mcpConfigs.length - 1]?.id;
if (!id) {
return null;
}

return { params: { starting_after: id } };
}
}
26 changes: 26 additions & 0 deletions src/resources/devboxes/devboxes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1104,6 +1104,14 @@ export interface DevboxCreateParams {
*/
launch_parameters?: Shared.LaunchParameters | null;

/**
* [Beta] (Optional) MCP specifications for MCP server access. Each spec links an
* MCP config to a secret. The devbox will receive environment variables
* (RL_MCP_URL, RL_MCP_TOKEN) for accessing MCP servers through the MCP hub.
* Example: [{'mcp_config': 'github-readonly', 'secret': 'MY_GITHUB_TOKEN'}]
*/
mcp?: Array<DevboxCreateParams.Mcp> | null;

/**
* User defined metadata to attach to the devbox for organization.
*/
Expand Down Expand Up @@ -1164,6 +1172,24 @@ export namespace DevboxCreateParams {
secret: string;
}

/**
* [Beta] McpSpec links an MCP configuration to a secret for MCP server access in a
* devbox. The MCP hub will proxy requests to upstream MCP servers using the
* specified credential, with tool-level access control based on the MCP config's
* allowed_tools.
*/
export interface Mcp {
/**
* The MCP config to use. Can be an MCP config ID (mcp_xxx) or name.
*/
mcp_config: string;

/**
* The secret containing the MCP server credential. Can be a secret ID or name.
*/
secret: string;
}

/**
* (Optional) Configuration for creating a V2 tunnel at Devbox launch time. When
* specified, a tunnel will be automatically provisioned and the tunnel details
Expand Down
12 changes: 12 additions & 0 deletions src/resources/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -113,6 +113,18 @@ export {
type GatewayConfigListParams,
type GatewayConfigDeleteParams,
} from './gateway-configs';
export {
McpConfigViewsMcpConfigsCursorIDPage,
McpConfigs,
type McpConfigCreateParameters,
type McpConfigListView,
type McpConfigUpdateParameters,
type McpConfigView,
type McpConfigCreateParams,
type McpConfigUpdateParams,
type McpConfigListParams,
type McpConfigDeleteParams,
} from './mcp-configs';
export {
NetworkPolicyViewsNetworkPoliciesCursorIDPage,
NetworkPolicies,
Expand Down
Loading
Loading