MCP Server Replicate

by gerred
Verified
"""Data models for Replicate predictions.""" from datetime import datetime from enum import Enum from typing import Any, Dict, List, Optional from pydantic import BaseModel, Field class PredictionStatus(str, Enum): """Status of a prediction.""" STARTING = "starting" PROCESSING = "processing" SUCCEEDED = "succeeded" FAILED = "failed" CANCELED = "canceled" class PredictionInput(BaseModel): """Input parameters for creating a prediction.""" model_version: str = Field(..., description="Model version to use for prediction") input: Dict[str, Any] = Field(..., description="Model-specific input parameters") template_id: Optional[str] = Field(None, description="Optional template ID to use") webhook_url: Optional[str] = Field(None, description="URL for webhook notifications") webhook_events: Optional[List[str]] = Field(None, description="Events to trigger webhooks") wait: bool = Field(False, description="Whether to wait for prediction completion") wait_timeout: Optional[int] = Field(None, description="Max seconds to wait if wait=True (1-60)") stream: bool = Field(False, description="Whether to request streaming output") class Prediction(BaseModel): """A prediction (model run) on Replicate.""" id: str = Field(..., description="Unique identifier for this prediction") version: str = Field(..., description="Model version used for this prediction") status: PredictionStatus = Field(..., description="Current status of the prediction") input: Dict[str, Any] = Field(..., description="Input parameters used for the prediction") output: Optional[Any] = Field(None, description="Output from the prediction if completed") error: Optional[str] = Field(None, description="Error message if prediction failed") logs: Optional[str] = Field(None, description="Execution logs from the prediction") created_at: datetime started_at: Optional[datetime] = None completed_at: Optional[datetime] = None urls: Dict[str, str] = Field(..., description="Related API URLs for this prediction") metrics: Optional[Dict[str, float]] = Field(None, description="Performance metrics if available") stream_url: Optional[str] = Field(None, description="URL for streaming output if requested")