FastMCP server implementation for the Replicate API, providing resource-based access to AI model inference
Server provides 13 tools with basic structure. Tool naming follows action-verb conventions (list_, get_, create_, search_, verify_), which is good. Descriptions are present for all tools and most parameters. However, several critical issues reduce quality: (1) Some parameter descriptions lack detail or format specifications (e.g., 'model_id' format is documented as 'owner/model' but not all params have such clarity); (2) Output schemas are not explicitly documented in the provided source, we can infer Pydantic models (Collection, Hardware, Model, etc.) exist, but return type documentation is absent from the tool definitions themselves; (3) Error handling is minimal, no guidance on recovery, retryability, or actionable error messages; (4) The 'create_prediction' tool has a complex nested input structure that could benefit from clearer documentation of required vs. optional subfields; (5) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) are visible, though risk levels are informally noted in the evaluation context. Tool naming is consistent and clear (e.g., 'cancel_prediction' vs 'get_prediction' is unambiguous). Parameter descriptions are present but variable in quality, some specify enums (e.g., list_predictions status param has enum constraint), others are minimal. Overall definition quality is moderate, reflecting a functional but not exceptional implementation.
Cancel a running prediction.
Create a new prediction using a Replicate model.
Get detailed information about a specific collection.
Get detailed information about a specific model.
Get available versions for a model.
Get the current status and results of a prediction.
Output schemas not documented in tool definitions. While Pydantic models exist (Collection, Hardware, Model, etc.), the tool docstrings do not explicitly describe return types or field structures. LLMs cannot plan downstream calls without knowing what fields are returned.
No error handling or recovery guidance. Tool docstrings list potential exceptions (RuntimeError, ValueError, Exception) but provide no actionable guidance on what to do next. E.g., 'ValueError: collection not found' does not tell the LLM to try search or list_collections. No error categorization (retryable, user-fixable, fatal).
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 55 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 48 | - | v1 |
Get the signing secret for verifying webhook requests.
List available model collections on Replicate.
List available hardware options for running models.
List available models on Replicate with optional filtering by owner.
List recent predictions with optional filtering.
Search for models using semantic search.
Verify that a webhook request came from Replicate.
create_prediction tool has complex nested input (object within object) with insufficient documentation of required vs. optional fields. The nested 'input' object accepts arbitrary model-specific parameters, but no guidance is provided on what parameters to pass for different models. This invites hallucinated field names.
No tool annotations visible (readOnlyHint, destructiveHint, idempotentHint). Risk levels are noted informally (READ_ONLY, WRITE, REVERSIBLE) but not in the FastMCP tool registration. LLMs cannot infer safety/side-effect info from tool definitions alone.
Parameter descriptions lack format specifications for ID-like fields. 'model_id' is documented as 'Model identifier in format owner/model', which is good, but 'prediction_id' and 'collection_slug' lack similar clarity. Should state expected format, length, character set, or provide examples.
list_models and search_models return pagination cursors and counts but no explicit guidance on how to use them. Descriptions should state 'Call again with next_cursor to fetch more results' and document expected cursor format.