run402-mcp
Version:
MCP server for Run402 — full-stack backend infrastructure for AI agents: Postgres, auth, storage, serverless functions and atomic deploys. Paid with x402/MPP. Includes $0.03 image generation.
137 lines • 4.61 kB
TypeScript
/**
* `apps` namespace — marketplace browse/fork and app version publishing.
*/
import type { Client } from "../kernel.js";
import type { ProjectTier } from "./projects.types.js";
export interface AppSummary {
id: string;
project_id: string;
version: number;
name: string;
description: string | null;
visibility: "public" | "unlisted" | "private";
fork_allowed: boolean;
fork_pricing?: Record<string, string>;
min_tier: ProjectTier;
derived_min_tier: ProjectTier;
status: "published" | "draft" | "archived";
table_count: number;
function_count: number;
site_file_count: number;
site_total_bytes: number;
required_secrets: Array<{
key: string;
description?: string;
}>;
required_actions: Array<{
action: string;
description?: string;
}>;
tags: string[];
live_url: string | null;
bootstrap_variables: unknown[] | null;
created_at: string;
compatibility_warnings: string[];
}
export interface BrowseAppsResult {
apps: AppSummary[];
total: number;
}
export interface ForkAppOptions {
versionId: string;
name: string;
subdomain?: string;
}
export interface ForkAppResult {
project_id: string;
anon_key: string;
service_key: string;
schema_slot: string;
site_url?: string;
subdomain_url?: string;
functions?: Array<{
name: string;
url: string;
}>;
}
export interface PublishAppOptions {
description?: string;
tags?: string[];
visibility?: "public" | "unlisted" | "private";
fork_allowed?: boolean;
}
export type PublishedVersion = AppSummary;
export interface VersionSummary {
id: string;
description: string | null;
tags: string[];
visibility: "public" | "unlisted" | "private";
fork_allowed: boolean;
created_at: string;
}
export interface ListVersionsResult {
versions: VersionSummary[];
}
export interface UpdateVersionOptions {
description?: string;
tags?: string[];
visibility?: "public" | "unlisted" | "private";
fork_allowed?: boolean;
}
export type AppDetails = AppSummary;
export type AppInstallStateStatus = "requested" | "planning" | "applying" | "active" | "failed";
export interface AppInstallStateInput {
project_id: string;
app_key: string;
status?: AppInstallStateStatus;
manifest_digest?: string | null;
graph_digest?: string | null;
source?: Record<string, unknown>;
manifest?: Record<string, unknown>;
resources?: Record<string, unknown>;
bindings?: Record<string, unknown>;
last_operation_id?: string | null;
error?: Record<string, unknown> | null;
}
export interface AppInstallState {
id: string;
project_id: string;
app_key: string;
status: AppInstallStateStatus;
manifest_digest: string | null;
graph_digest: string | null;
source: Record<string, unknown>;
manifest: Record<string, unknown>;
resources: Record<string, unknown>;
bindings: Record<string, unknown>;
last_operation_id: string | null;
error: Record<string, unknown> | null;
created_at: string;
updated_at: string;
}
export declare class Apps {
private readonly client;
constructor(client: Client);
/** Browse public forkable apps. Optional `tags` filter is OR-combined. */
browse(tags?: string[]): Promise<BrowseAppsResult>;
/** Upsert declarative app-install convergence state for `run402 up`. */
upsertInstallState(input: AppInstallStateInput): Promise<AppInstallState>;
/** Read declarative app-install convergence state for diagnostics/resume. */
getInstallState(projectId: string, appKey: string): Promise<AppInstallState>;
/**
* Fork a published app into a new project. Payment flows through x402
* when the fork has a price.
*/
fork(opts: ForkAppOptions): Promise<ForkAppResult>;
/** Publish a project as a forkable app version. */
publish(projectId: string, opts?: PublishAppOptions): Promise<PublishedVersion>;
/** List all published versions of a project. */
listVersions(projectId: string): Promise<ListVersionsResult>;
/** Update metadata (description/tags/visibility/fork_allowed) of a published version. */
updateVersion(projectId: string, versionId: string, opts: UpdateVersionOptions): Promise<void>;
/** Delete a published version. */
deleteVersion(projectId: string, versionId: string): Promise<void>;
/** Inspect a published app by version id. Public — no auth. */
getApp(versionId: string): Promise<AppDetails>;
}
//# sourceMappingURL=apps.d.ts.map