MCP server for Opus Job Operator API - Programmatically interact with Opus workflows
Server has 7 tools with complete input schemas and descriptions. Naming follows verb_noun convention (get_, initiate_, generate_, execute_). Descriptions are present (avg ~120 chars) but lack depth on WHEN to use tools and prerequisites. Parameters are typed and mostly described, but lack constraints (enums, ranges, formats). Output schemas are not documented, LLMs cannot plan downstream calls. Error handling returns text but lacks recovery guidance or categorization. No tool annotations (readOnlyHint/destructiveHint). Missing pagination for list-like operations.
Execute a job with populated input values. Use jobPayloadSchema from get_workflow_details to structure inputs correctly
Generate presigned URL for file upload. Returns presignedUrl (for uploading) and fileUrl (to reference in job execution)
Get detailed audit log of all system actions during job execution
Get the results of a completed job execution. Only works when job status is COMPLETED
Get the current status of a job execution (e.g., IN PROGRESS, COMPLETED, FAILED)
Get workflow details including jobPayloadSchema that defines required inputs for a workflow
Output schemas not documented. LLMs cannot infer what fields are returned, breaking downstream tool chaining and forcing discovery calls.
Parameter 'jobPayloadSchemaInstance' in execute_job is type 'object' with no property schema. LLMs cannot validate structure before calling.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes without reading descriptions.
Error handling returns plain text without recovery guidance. 'Error: <message>' does not tell LLM what to do next or whether to retry.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 68 | 2026-07-28+ | v2 |
Initiate a new job for a workflow. Returns jobExecutionId required for subsequent operations
Descriptions lack dependency hints and prerequisites. E.g., execute_job should state 'Call initiate_job first to get jobExecutionId' and 'Call get_workflow_details to understand jobPayloadSchema structure'.