@marlinjai/studio-mcp 0.4.0 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -929,12 +929,41 @@ interface JobResponse {
929
929
  [k: string]: unknown;
930
930
  }>;
931
931
  }
932
+ /**
933
+ * How many images a job will really make for the count that was asked for.
934
+ * Mirrors `CandidatePlan` in the Studio's `src/lib/jobs/candidates.ts`.
935
+ */
936
+ interface CandidatePlan {
937
+ /** How many candidates the request asked for (one when it named none). */
938
+ requested: number;
939
+ /** How many images to expect. */
940
+ rendered: number;
941
+ /** For an automatic route whose fallback renders more: the most the job can render. */
942
+ mayRender?: number;
943
+ }
944
+ /** `POST /api/generate` for an image job. `candidates` and `notice` are absent
945
+ * from a Studio older than 2026-10-11; `notice` is present only when fewer
946
+ * images will be made than were asked for. */
947
+ interface GenerateImageResponse {
948
+ jobId: string;
949
+ kind: string;
950
+ candidates?: CandidatePlan;
951
+ notice?: string;
952
+ }
932
953
  interface CharacterSummary {
954
+ /** Unique within the key's company, not across companies. */
933
955
  slug: string;
934
956
  name: string;
935
957
  descriptorPrompt: string;
936
958
  negativePrompt?: string | null;
937
959
  defaultModel?: string | null;
960
+ /** True when the character's owner shared it with every company. */
961
+ shared?: boolean;
962
+ /**
963
+ * False for a character another company shared: usable in generations,
964
+ * never editable (uploads, edits and deletes answer 403).
965
+ */
966
+ owned?: boolean;
938
967
  }
939
968
  interface CharacterReference {
940
969
  id: string;
@@ -1057,8 +1086,18 @@ interface TenantUsageResponse {
1057
1086
  tenantId?: string;
1058
1087
  month: string;
1059
1088
  plan: string;
1060
- /** `null` = explicitly unlimited (only an operator-set plan can be). */
1089
+ /** `null` = no monthly cap: an operator-set unlimited plan, or a company on
1090
+ * prepaid credits, whose balance is the cap (see `credits`). */
1061
1091
  capUsd: number | null;
1092
+ /** A company on prepaid credits: its balance, its daily limit (null: none)
1093
+ * and what left the balance today, all in US dollars of credit. Null for a
1094
+ * company not on credits; absent from a Studio older than 2026-10-10. */
1095
+ credits?: {
1096
+ balanceUsd: number;
1097
+ dailyLimitUsd: number | null;
1098
+ usedTodayUsd: number;
1099
+ dailyResetsAt: string;
1100
+ } | null;
1062
1101
  /** `default`: no plan of its own, the default cap applies. `row`: an
1063
1102
  * operator-set plan. Absent from a Studio older than 2026-09-23. */
1064
1103
  capSource?: 'row' | 'default';
@@ -1202,16 +1241,22 @@ declare class StudioClient {
1202
1241
  listProjects(): Promise<{
1203
1242
  projects: ProjectSummary[];
1204
1243
  }>;
1244
+ /**
1245
+ * One image job. `brandSlug` is optional: without it the image is generated
1246
+ * with no brand. A `brandSlug` or `characterSlug` the key's company cannot
1247
+ * use is refused with 404 `input_not_found` before anything is spent (since
1248
+ * 2026-10-11; it used to generate without the brand). `projectId` chooses the
1249
+ * project; without it the job lands in the project named after the brand, or
1250
+ * in `default`.
1251
+ */
1205
1252
  generate(body: {
1206
- brandSlug: string;
1253
+ brandSlug?: string;
1207
1254
  brandMode?: string;
1208
1255
  prompt: string;
1209
1256
  characterSlug?: string;
1257
+ projectId?: string;
1210
1258
  settings?: Record<string, unknown>;
1211
- }): Promise<{
1212
- jobId: string;
1213
- kind: string;
1214
- }>;
1259
+ }): Promise<GenerateImageResponse>;
1215
1260
  /**
1216
1261
  * One 3D generation. `/api/generate` routes to its 3D branch on `?force=3d`
1217
1262
  * (a prompt alone would be classified by its words); the model and its flags
@@ -1500,7 +1545,7 @@ declare function registerTools(server: McpServer, ctx: ToolContext): void;
1500
1545
  */
1501
1546
 
1502
1547
  declare const SERVER_NAME = "lumitra-studio";
1503
- declare const SERVER_VERSION = "0.4.0";
1548
+ declare const SERVER_VERSION = "0.5.0";
1504
1549
  interface CreateServerOptions {
1505
1550
  config?: StudioConfig;
1506
1551
  env?: NodeJS.ProcessEnv;
@@ -2860,4 +2905,4 @@ declare function parseArgs(argv: string[]): CliArgs;
2860
2905
  declare function createHttpHandler(): (req: IncomingMessage, res: ServerResponse) => Promise<void>;
2861
2906
  declare function main(argv?: string[]): Promise<void>;
2862
2907
 
2863
- export { type AllTenantsUsageResponse, type Binding, CHARACTER_SHEET_DEFINITION, CHARACTER_SHEET_NODES, type CharacterReference, type CharacterSummary, type CharacterSwapInput, ConfigError, ContractError, type CreateServerOptions, DEFAULT_BASE_URL, DEFAULT_MOTION_PROMPT, DEFAULT_SWAP_EDIT_MODEL, DEFAULT_SWAP_PROMPT, DEFAULT_SWAP_VIDEO_MODEL, DEFAULT_TIMEOUT_MS, type DocumentSummary, type FetchLike, type JobResponse, type JobStatus, type JudgeCandidate, MINT_REFERENCE_CATEGORIES, type NodeResultResponse, type NodeRun, type NodeStatus, type NodeSummary, type NodeTypesResponse, type PollOptions, PollTimeoutError, type ProjectSummary, type Projection, type RemovedNode, type RunResponse, type RunStartResponse, type RunStatus, SERVER_NAME, SERVER_VERSION, SUMMARY_TEXT_CHARS, SWAP_SCOPES, type SpendLedger, StudioApiError, StudioClient, type StudioClientOptions, type StudioConfig, type StudioMcp, type SummaryMeta, type SwapPromptOptions, type SwapScope, TOOLS, TOOL_NAMES, type TaskDescriptor, type TenantSpendSummary, type TenantUsageResponse, type ToolContext, type ToolDef, ToolInputError, type ToolResult, type TurnaroundView, type UploadFile, type UsageByModel, type UsageResponse, WORKFLOW_TOOLS, type WorkflowApplyResponse, type WorkflowCreateResponse, type WorkflowDefinition, type WorkflowDocumentResponse, type WorkflowNode, type WorkflowValidateResponse, affectedNodes, buildCharacterSheetParams, buildCharacterSwapDefinition, categoryForNode, characterSheetDefinition, composeSwapPrompt, createHttpHandler, createStudioMcpServer, extensionForMime, filenameFromUrl, invokeTool, main, mimeForFilename, parseArgs, parseDocument, parseOps, pollUntil, projectionOf, redactSecret, registerTools, resolveConfig, seedFacePrompt, studioWorkflowApply, studioWorkflowCreate, studioWorkflowDescribe, studioWorkflowGet, studioWorkflowScreenshot, studioWorkflowValidate, summarizeDocument, summarizeNode, touchedNodeIds, turnaroundViewPrompt, waitForJob, waitForRun };
2908
+ export { type AllTenantsUsageResponse, type Binding, CHARACTER_SHEET_DEFINITION, CHARACTER_SHEET_NODES, type CandidatePlan, type CharacterReference, type CharacterSummary, type CharacterSwapInput, ConfigError, ContractError, type CreateServerOptions, DEFAULT_BASE_URL, DEFAULT_MOTION_PROMPT, DEFAULT_SWAP_EDIT_MODEL, DEFAULT_SWAP_PROMPT, DEFAULT_SWAP_VIDEO_MODEL, DEFAULT_TIMEOUT_MS, type DocumentSummary, type FetchLike, type GenerateImageResponse, type JobResponse, type JobStatus, type JudgeCandidate, MINT_REFERENCE_CATEGORIES, type NodeResultResponse, type NodeRun, type NodeStatus, type NodeSummary, type NodeTypesResponse, type PollOptions, PollTimeoutError, type ProjectSummary, type Projection, type RemovedNode, type RunResponse, type RunStartResponse, type RunStatus, SERVER_NAME, SERVER_VERSION, SUMMARY_TEXT_CHARS, SWAP_SCOPES, type SpendLedger, StudioApiError, StudioClient, type StudioClientOptions, type StudioConfig, type StudioMcp, type SummaryMeta, type SwapPromptOptions, type SwapScope, TOOLS, TOOL_NAMES, type TaskDescriptor, type TenantSpendSummary, type TenantUsageResponse, type ToolContext, type ToolDef, ToolInputError, type ToolResult, type TurnaroundView, type UploadFile, type UsageByModel, type UsageResponse, WORKFLOW_TOOLS, type WorkflowApplyResponse, type WorkflowCreateResponse, type WorkflowDefinition, type WorkflowDocumentResponse, type WorkflowNode, type WorkflowValidateResponse, affectedNodes, buildCharacterSheetParams, buildCharacterSwapDefinition, categoryForNode, characterSheetDefinition, composeSwapPrompt, createHttpHandler, createStudioMcpServer, extensionForMime, filenameFromUrl, invokeTool, main, mimeForFilename, parseArgs, parseDocument, parseOps, pollUntil, projectionOf, redactSecret, registerTools, resolveConfig, seedFacePrompt, studioWorkflowApply, studioWorkflowCreate, studioWorkflowDescribe, studioWorkflowGet, studioWorkflowScreenshot, studioWorkflowValidate, summarizeDocument, summarizeNode, touchedNodeIds, turnaroundViewPrompt, waitForJob, waitForRun };