11import { z } from "zod" ;
22import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js" ;
33import { getRenderItem } from "../sdk" ;
4- import { PLAINLY_APP_URL } from "../constants " ;
4+ import env from "../env " ;
55
66export function registerCheckRenderStatus ( server : McpServer ) {
77 const Input = {
@@ -11,15 +11,29 @@ export function registerCheckRenderStatus(server: McpServer) {
1111 } ;
1212
1313 const Output = {
14- // Status information
15- message : z
16- . string ( )
17- . describe ( "A human-readable message for the render status." ) ,
14+ // Render information
15+ message : z . string ( ) . describe ( "A message describing the render status." ) ,
1816 renderId : z . string ( ) . describe ( "The render job ID." ) ,
1917 renderDetailsPageUrl : z
2018 . string ( )
2119 . optional ( )
2220 . describe ( "URL to the render details page." ) ,
21+ projectDesignId : z
22+ . string ( )
23+ . describe ( "Parent identifier (projectId or designId)." ) ,
24+ templateVariantId : z
25+ . string ( )
26+ . describe (
27+ "Template/variant identifier (the renderable leaf under the parent)."
28+ ) ,
29+ projectDesignName : z
30+ . string ( )
31+ . optional ( )
32+ . describe ( "Name of the project or design." ) ,
33+ templateVariantName : z
34+ . string ( )
35+ . optional ( )
36+ . describe ( "Name of the template or variant." ) ,
2337 state : z
2438 . enum ( [
2539 "PENDING" ,
@@ -32,14 +46,6 @@ export function registerCheckRenderStatus(server: McpServer) {
3246 "CANCELLED" ,
3347 ] )
3448 . describe ( "The current state of the render job." ) ,
35- projectName : z
36- . string ( )
37- . optional ( )
38- . describe ( "Name of the project or design." ) ,
39- templateName : z
40- . string ( )
41- . optional ( )
42- . describe ( "Name of the template or variant." ) ,
4349
4450 // Success output
4551 output : z
@@ -50,7 +56,7 @@ export function registerCheckRenderStatus(server: McpServer) {
5056 // Error information
5157 errorMessage : z . string ( ) . optional ( ) . describe ( "Error message, if any." ) ,
5258 errorSolution : z . string ( ) . optional ( ) . describe ( "Error solution, if any." ) ,
53- errorDetails : z . any ( ) . optional ( ) . describe ( "Error details, if any." ) ,
59+ errorDetails : z . string ( ) . optional ( ) . describe ( "Error details, if any." ) ,
5460 } ;
5561
5662 server . registerTool (
@@ -60,6 +66,22 @@ export function registerCheckRenderStatus(server: McpServer) {
6066 description : `
6167Check the status of a render job.
6268
69+ Available states:
70+ - PENDING: The render job has been created but not yet added to the queue.
71+ - THROTTLED: The render job is waiting due to rate limiting.
72+ - QUEUED: The render job is in the queue and will start soon.
73+ - IN_PROGRESS: The render job is currently being processed.
74+ - DONE: The render job has completed successfully. The output URL will be provided.
75+ - FAILED: The render job encountered an error and did not complete successfully. Error details will be provided.
76+ - INVALID: The render job was invalid (e.g., due to incorrect parameters). Error details will be provided.
77+ - CANCELLED: The render job was cancelled by the user.
78+
79+ Response format:
80+ - Always include a link to the render details page.
81+ - If the render is still in progress (PENDING, THROTTLED, QUEUED, IN_PROGRESS) tell user to check the status again later.
82+ - If the render is DONE, return the output URL and the render page details.
83+ - If the render FAILED or is INVALID, return the error message and details.
84+
6385Use when:
6486- You need to check the progress of a render job
6587- You want to retrieve the final render output URL
@@ -79,10 +101,12 @@ Use when:
79101 structuredContent : {
80102 message : "Render completed successfully." ,
81103 renderId : render . id ,
82- renderDetailsPageUrl : `${ PLAINLY_APP_URL } /dashboard/renders/${ render . id } ` ,
104+ renderDetailsPageUrl : `${ env . PLAINLY_APP_URL } /dashboard/renders/${ render . id } ` ,
105+ projectDesignId : render . projectId ,
106+ templateVariantId : render . templateId ,
107+ projectDesignName : render . projectName ,
108+ templateVariantName : render . templateName ,
83109 state : render . state ,
84- projectName : render . projectName ,
85- templateName : render . templateName ,
86110 output : render . output ,
87111 } ,
88112 } ;
@@ -94,9 +118,12 @@ Use when:
94118 structuredContent : {
95119 message : "Render was cancelled." ,
96120 renderId : render . id ,
121+ renderDetailsPageUrl : `${ env . PLAINLY_APP_URL } /dashboard/renders/${ render . id } ` ,
122+ projectDesignId : render . projectId ,
123+ templateVariantId : render . templateId ,
124+ projectDesignName : render . projectName ,
125+ templateVariantName : render . templateName ,
97126 state : render . state ,
98- projectName : render . projectName ,
99- templateName : render . templateName ,
100127 } ,
101128 } ;
102129 }
@@ -108,9 +135,12 @@ Use when:
108135 structuredContent : {
109136 message : "Render failed." ,
110137 renderId : render . id ,
138+ renderDetailsPageUrl : `${ env . PLAINLY_APP_URL } /dashboard/renders/${ render . id } ` ,
139+ projectDesignId : render . projectId ,
140+ templateVariantId : render . templateId ,
141+ projectDesignName : render . projectName ,
142+ templateVariantName : render . templateName ,
111143 state : render . state ,
112- projectName : render . projectName ,
113- templateName : render . templateName ,
114144 errorMessage : render . error . message ,
115145 errorDetails : JSON . stringify ( render . error . details ) ,
116146 } ,
@@ -124,9 +154,12 @@ Use when:
124154 structuredContent : {
125155 message : "Render is processing. Please wait and check back later." ,
126156 renderId : render . id ,
157+ renderDetailsPageUrl : `${ env . PLAINLY_APP_URL } /dashboard/renders/${ render . id } ` ,
158+ projectDesignId : render . projectId ,
159+ templateVariantId : render . templateId ,
160+ projectDesignName : render . projectName ,
161+ templateVariantName : render . templateName ,
127162 state : render . state ,
128- projectName : render . projectName ,
129- templateName : render . templateName ,
130163 } ,
131164 } ;
132165 } catch ( err : any ) {
0 commit comments