Skip to main content
Glama
exceptions.py1.9 kB
import logging # Configure logging logger = logging.getLogger("mcp.server.reltio") class ReltioApiError(Exception): """Base exception for Reltio API errors""" def __init__(self, code, message, details=None): self.code = code self.message = message self.details = details or {} super().__init__(f"{code}: {message}") class ValidationError(ReltioApiError): """Exception for input validation errors""" def __init__(self, message, field=None, details=None): super().__init__(400, message, details) self.field = field class AuthenticationError(ReltioApiError): """Exception for authentication errors""" def __init__(self, message, details=None): super().__init__(401, message, details) class AuthorizationError(ReltioApiError): """Exception for authorization errors""" def __init__(self, message, details=None): super().__init__(403, message, details) class ResourceNotFoundError(ReltioApiError): """Exception for resource not found errors""" def __init__(self, resource_type, resource_id, details=None): message = f"{resource_type} with ID {resource_id} not found" super().__init__(404, message, details) class SecurityError(ReltioApiError): """Exception for security-related errors""" def __init__(self, message, details=None): # Don't include sensitive details in the message safe_message = "Security requirements not met" # Log the actual issue securely logger.error(f"Security error: {message}", extra={"details": details}) super().__init__(403, safe_message, None) class TimeoutError(ReltioApiError): """Exception for timeout errors""" def __init__(self, operation, timeout, details=None): message = f"Operation {operation} timed out after {timeout} seconds" super().__init__(408, message, details)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/reltio-ai/reltio-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server