Skip to main content
Glama
requests.py2.05 kB
"""Request data models.""" from pydantic import BaseModel, Field, field_validator class PANVerificationRequest(BaseModel): """Request model for PAN verification.""" pan: str = Field( ..., pattern=r"^[A-Z]{5}[0-9]{4}[A-Z]$", description="10-character PAN number", examples=["XXXPX1234A"], ) name_as_per_pan: str = Field( ..., min_length=1, max_length=100, description="Full name as per PAN card", ) date_of_birth: str = Field( ..., pattern=r"^\d{2}/\d{2}/\d{4}$", description="Date of birth in DD/MM/YYYY format", examples=["01/01/1990"], ) consent: str = Field( ..., description="User consent (must be 'Y' or 'y')", pattern=r"^[Yy]$" ) reason: str = Field(..., min_length=1, description="Reason for verification") @field_validator("pan") @classmethod def validate_pan(cls, v: str) -> str: """Validate PAN format.""" if not v.isupper(): raise ValueError("PAN must be in uppercase") return v class PANAadhaarLinkRequest(BaseModel): """Request model for PAN-Aadhaar link status check.""" pan: str = Field( ..., pattern=r"^[A-Z]{3}P[A-Z][0-9]{4}[A-Z]$", description="Individual PAN number (4th character must be 'P')", examples=["XXXPX1234A"], ) aadhaar_number: str = Field( ..., pattern=r"^[0-9]{12}$", description="12-digit Aadhaar number", examples=["123456789012"], ) consent: str = Field( ..., description="User consent (must be 'Y' or 'y')", pattern=r"^[Yy]$" ) reason: str = Field( ..., min_length=1, description="Reason for checking link status" ) @field_validator("pan") @classmethod def validate_individual_pan(cls, v: str) -> str: """Validate that PAN is for an individual.""" if v[3] != "P": raise ValueError("Only individual PAN cards (4th character 'P') are allowed") return v

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/CTD-Techs/CTD-MCP'

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