diff --git a/.release-please-manifest.json b/.release-please-manifest.json
index bac4ebcfd..6103afc2b 100644
--- a/.release-please-manifest.json
+++ b/.release-please-manifest.json
@@ -1,3 +1,3 @@
{
- ".": "1.28.0"
+ ".": "1.29.0"
}
diff --git a/.stats.yml b/.stats.yml
index 63705699e..02013546c 100644
--- a/.stats.yml
+++ b/.stats.yml
@@ -1,4 +1,4 @@
-configured_endpoints: 120
-openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-c1b0e0d2c2bf9d7888ddef0cfdfb390458875cd2c1feb48a06fcd06e92105326.yml
-openapi_spec_hash: ec61cf6d205251b54e1a6d68d9dd9860
-config_hash: 6d102da8b9fcc3d0deb42d7a707e78c6
+configured_endpoints: 121
+openapi_spec_url: https://storage.googleapis.com/stainless-sdk-openapi-specs/runloop-ai/runloop-a9327279b1ba17f0983d92a3065b04a2bc1b5e5e830cf099aef4f79072fe4075.yml
+openapi_spec_hash: b63815af36cf18c8cc70be416f9c0f71
+config_hash: 2b0535779b180339d10766ba74a96700
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 71fe49d45..b4c5bc0c3 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,5 +1,21 @@
# Changelog
+## 1.29.0 (2026-08-10)
+
+Full Changelog: [v1.28.0...v1.29.0](https://github.com/runloopai/api-client-ts/compare/v1.28.0...v1.29.0)
+
+### Features
+
+* **axon:** add registry delete endpoint ([#10769](https://github.com/runloopai/api-client-ts/issues/10769)) ([e82b606](https://github.com/runloopai/api-client-ts/commit/e82b606f189f91751fb636a2b8878daea69a74af))
+* **broker:** plumb Pi protocol selection ([#10256](https://github.com/runloopai/api-client-ts/issues/10256)) ([84893cc](https://github.com/runloopai/api-client-ts/commit/84893cc2ca7e97176bb24c917b1fcd08c1cc2fd5))
+* **converter:** add Helm chart, container image, and enable in dev ([#10405](https://github.com/runloopai/api-client-ts/issues/10405)) ([3d08f4d](https://github.com/runloopai/api-client-ts/commit/3d08f4d5771cb771101fb479d5bb8d72b62a2092))
+* **devbox:** recover resume provisioning failures ([#10597](https://github.com/runloopai/api-client-ts/issues/10597)) ([b85737e](https://github.com/runloopai/api-client-ts/commit/b85737ef21a61dd4ed6c0f4c669cc313346e3af4))
+
+
+### Bug Fixes
+
+* **mcp:** remove stale createFromInspection metadata ([#811](https://github.com/runloopai/api-client-ts/issues/811)) ([0842f40](https://github.com/runloopai/api-client-ts/commit/0842f402cc4a7ddc73d89e4643c3a5984e1bdb4a))
+
## 1.28.0 (2026-07-29)
Full Changelog: [v1.27.0...v1.28.0](https://github.com/runloopai/api-client-ts/compare/v1.27.0...v1.28.0)
diff --git a/api.md b/api.md
index 3af4951ad..563a339ee 100644
--- a/api.md
+++ b/api.md
@@ -105,12 +105,14 @@ Types:
- AxonView
- PublishParams
- PublishResultView
+- AxonDeleteResponse
Methods:
- client.axons.create({ ...params }) -> AxonView
- client.axons.retrieve(id) -> AxonView
- client.axons.list({ ...params }) -> AxonViewsAxonsCursorIDPage
+- client.axons.delete(id) -> unknown
- client.axons.publish(id, { ...params }) -> PublishResultView
- client.axons.subscribeSse(id, { ...params }) -> AxonEventView
diff --git a/package.json b/package.json
index 9732d37b5..f534c35b2 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "@runloop/api-client",
- "version": "1.28.0",
+ "version": "1.29.0",
"description": "The official TypeScript library for the Runloop API",
"author": "Runloop ",
"types": "dist/sdk.d.ts",
diff --git a/packages/mcp-server/manifest.json b/packages/mcp-server/manifest.json
index baed81029..9be530795 100644
--- a/packages/mcp-server/manifest.json
+++ b/packages/mcp-server/manifest.json
@@ -1,7 +1,7 @@
{
"dxt_version": "0.2",
"name": "@runloop/api-client-mcp",
- "version": "1.28.0",
+ "version": "1.29.0",
"description": "The official MCP Server for the Runloop API",
"author": {
"name": "Runloop",
diff --git a/packages/mcp-server/package.json b/packages/mcp-server/package.json
index c897256cd..4791bec49 100644
--- a/packages/mcp-server/package.json
+++ b/packages/mcp-server/package.json
@@ -1,6 +1,6 @@
{
"name": "@runloop/api-client-mcp",
- "version": "1.28.0",
+ "version": "1.29.0",
"description": "The official MCP Server for the Runloop API",
"author": "Runloop ",
"types": "dist/index.d.ts",
diff --git a/packages/mcp-server/src/code-tool-worker.ts b/packages/mcp-server/src/code-tool-worker.ts
index 7f6bb184a..b298e8737 100644
--- a/packages/mcp-server/src/code-tool-worker.ts
+++ b/packages/mcp-server/src/code-tool-worker.ts
@@ -124,7 +124,6 @@ const fuse = new Fuse(
'client.agents.list',
'client.agents.retrieve',
'client.blueprints.create',
- 'client.blueprints.createFromInspection',
'client.blueprints.delete',
'client.blueprints.list',
'client.blueprints.listPublic',
diff --git a/packages/mcp-server/src/methods.ts b/packages/mcp-server/src/methods.ts
index 9bd369130..b7cf06691 100644
--- a/packages/mcp-server/src/methods.ts
+++ b/packages/mcp-server/src/methods.ts
@@ -148,12 +148,6 @@ export const sdkMethods: SdkMethod[] = [
httpMethod: 'post',
httpPath: '/v1/blueprints/{id}/delete',
},
- {
- clientCallName: 'client.blueprints.createFromInspection',
- fullyQualifiedName: 'blueprints.createFromInspection',
- httpMethod: 'post',
- httpPath: '/v1/blueprints/create_from_inspection',
- },
{
clientCallName: 'client.blueprints.listPublic',
fullyQualifiedName: 'blueprints.listPublic',
diff --git a/packages/mcp-server/src/server.ts b/packages/mcp-server/src/server.ts
index 2ab66aec9..8ba74e597 100644
--- a/packages/mcp-server/src/server.ts
+++ b/packages/mcp-server/src/server.ts
@@ -16,7 +16,7 @@ export const newMcpServer = async (stainlessApiKey: string | undefined) =>
new McpServer(
{
name: 'runloop_api_client_api',
- version: '1.28.0',
+ version: '1.29.0',
},
{
instructions: await getInstructions(stainlessApiKey),
diff --git a/src/index.ts b/src/index.ts
index b4ac078fd..ea7c1bce1 100644
--- a/src/index.ts
+++ b/src/index.ts
@@ -178,6 +178,7 @@ import {
} from './resources/secrets';
import {
AxonCreateParams,
+ AxonDeleteResponse,
AxonEventView,
AxonListParams,
AxonListView,
@@ -649,6 +650,7 @@ export declare namespace Runloop {
type AxonView as AxonView,
type PublishParams as PublishParams,
type PublishResultView as PublishResultView,
+ type AxonDeleteResponse as AxonDeleteResponse,
AxonViewsAxonsCursorIDPage as AxonViewsAxonsCursorIDPage,
type AxonListParams as AxonListParams,
type AxonPublishParams as AxonPublishParams,
diff --git a/src/resources/axons/axons.ts b/src/resources/axons/axons.ts
index b674680e7..4455c248b 100644
--- a/src/resources/axons/axons.ts
+++ b/src/resources/axons/axons.ts
@@ -67,6 +67,13 @@ export class Axons extends APIResource {
return this._client.getAPIList('/v1/axons', AxonViewsAxonsCursorIDPage, { query, ...options });
}
+ /**
+ * [Beta] Mark an axon deleted.
+ */
+ delete(id: string, options?: Core.RequestOptions): Core.APIPromise {
+ return this._client.delete(`/v1/axons/${id}`, options);
+ }
+
/**
* [Beta] Publish an event to a specified axon.
*/
@@ -220,6 +227,8 @@ export interface PublishResultView {
timestamp_ms: number;
}
+export type AxonDeleteResponse = unknown;
+
export interface AxonCreateParams {
/**
* (Optional) Name for the axon.
@@ -292,6 +301,7 @@ export declare namespace Axons {
type AxonView as AxonView,
type PublishParams as PublishParams,
type PublishResultView as PublishResultView,
+ type AxonDeleteResponse as AxonDeleteResponse,
AxonViewsAxonsCursorIDPage as AxonViewsAxonsCursorIDPage,
type AxonListParams as AxonListParams,
type AxonPublishParams as AxonPublishParams,
diff --git a/src/resources/axons/index.ts b/src/resources/axons/index.ts
index 9c5b7033c..d85145ea3 100644
--- a/src/resources/axons/index.ts
+++ b/src/resources/axons/index.ts
@@ -9,6 +9,7 @@ export {
type AxonView,
type PublishParams,
type PublishResultView,
+ type AxonDeleteResponse,
type AxonListParams,
type AxonPublishParams,
type AxonSubscribeSseParams,
diff --git a/src/resources/blueprints.ts b/src/resources/blueprints.ts
index f6ed91e77..e8c9818c0 100644
--- a/src/resources/blueprints.ts
+++ b/src/resources/blueprints.ts
@@ -449,7 +449,7 @@ export interface BlueprintView {
/**
* The status of the Blueprint build.
*/
- status: 'queued' | 'provisioning' | 'building' | 'failed' | 'build_complete';
+ status: 'queued' | 'provisioning' | 'building' | 'awaiting_upload' | 'failed' | 'build_complete';
/**
* The ID of the base Blueprint.
diff --git a/src/resources/devboxes/devboxes.ts b/src/resources/devboxes/devboxes.ts
index af8bc6aa6..d81f2f84b 100644
--- a/src/resources/devboxes/devboxes.ts
+++ b/src/resources/devboxes/devboxes.ts
@@ -968,6 +968,11 @@ export interface DevboxView {
export namespace DevboxView {
export interface StateTransition {
+ /**
+ * The failure that caused this state transition, if applicable.
+ */
+ failure_reason?: string | null;
+
/**
* The status of the Devbox.
*
diff --git a/src/resources/index.ts b/src/resources/index.ts
index fe0f43691..8e7799bea 100644
--- a/src/resources/index.ts
+++ b/src/resources/index.ts
@@ -29,6 +29,7 @@ export {
type AxonView,
type PublishParams,
type PublishResultView,
+ type AxonDeleteResponse,
type AxonListParams,
type AxonPublishParams,
type AxonSubscribeSseParams,
diff --git a/src/resources/shared.ts b/src/resources/shared.ts
index 9e83d3071..97e1af3f0 100644
--- a/src/resources/shared.ts
+++ b/src/resources/shared.ts
@@ -162,20 +162,20 @@ export interface BrokerMount {
/**
* Binary to launch the agent (e.g., 'opencode'). Used by protocols that launch a
- * subprocess (acp, claude_json, codex_json).
+ * subprocess (acp, claude_json, codex_json, pi_json).
*/
agent_binary?: string | null;
/**
* Arguments to pass to the agent command (e.g., ['acp']). Used by protocols that
- * launch a subprocess (acp, claude_json, codex_json).
+ * launch a subprocess (acp, claude_json, codex_json, pi_json).
*/
launch_args?: Array | null;
/**
* The protocol used by the broker to deliver events to the agent.
*/
- protocol?: 'acp' | 'claude_json' | 'codex_json' | null;
+ protocol?: 'acp' | 'claude_json' | 'codex_json' | 'pi_json' | null;
/**
* Working directory in which to launch the agent binary. Defaults to the home
diff --git a/src/version.ts b/src/version.ts
index df29c98cf..ec0d2ee29 100644
--- a/src/version.ts
+++ b/src/version.ts
@@ -1 +1 @@
-export const VERSION = '1.28.0'; // x-release-please-version
+export const VERSION = '1.29.0'; // x-release-please-version
diff --git a/tests/api-resources/axons/axons.test.ts b/tests/api-resources/axons/axons.test.ts
index c0e97978b..4f67d7ec7 100644
--- a/tests/api-resources/axons/axons.test.ts
+++ b/tests/api-resources/axons/axons.test.ts
@@ -87,6 +87,24 @@ describe('resource axons', () => {
).rejects.toThrow(Runloop.NotFoundError);
});
+ test('delete', async () => {
+ const responsePromise = client.axons.delete('id');
+ const rawResponse = await responsePromise.asResponse();
+ expect(rawResponse).toBeInstanceOf(Response);
+ const response = await responsePromise;
+ expect(response).not.toBeInstanceOf(Response);
+ const dataAndResponse = await responsePromise.withResponse();
+ expect(dataAndResponse.data).toBe(response);
+ expect(dataAndResponse.response).toBe(rawResponse);
+ });
+
+ test('delete: request options instead of params are passed correctly', async () => {
+ // ensure the request options are being passed correctly by passing an invalid HTTP method in order to cause an error
+ await expect(client.axons.delete('id', { path: '/_stainless_unknown_path' })).rejects.toThrow(
+ Runloop.NotFoundError,
+ );
+ });
+
test('publish: only required params', async () => {
const responsePromise = client.axons.publish('id', {
event_type: 'event_type',