Data Models
Authoritative, auto-generated reference for the Pydantic models that define tool
inputs and outputs. These are generated directly from
gopher_mcp.models,
so they never drift from the code. For usage examples and error-handling
recipes, see the API Reference.
Request Models
gopher_mcp.models.GopherFetchRequest
Bases: BaseModel
Request model for gopher.fetch tool.
url
class-attribute
instance-attribute
url: str = Field(..., description='Gopher URL to fetch (e.g., gopher://gopher.floodgap.com/1/)', examples=['gopher://gopher.floodgap.com/1/', 'gopher://gopher.floodgap.com/0/about.txt'])
validate_gopher_url
classmethod
Validate that the URL is a proper Gopher URL.
Source code in src/gopher_mcp/models.py
gopher_mcp.models.GeminiFetchRequest
Bases: BaseModel
Request model for gemini_fetch tool.
url
class-attribute
instance-attribute
url: str = Field(..., description='Gemini URL to fetch (e.g., gemini://gemini.circumlunar.space/)', examples=['gemini://gemini.circumlunar.space/', 'gemini://gemini.circumlunar.space/docs/specification.gmi'])
validate_gemini_url
classmethod
Validate that the URL is a proper Gemini URL.
Source code in src/gopher_mcp/models.py
Gopher Result Models
gopher_mcp.models.GopherMenuItem
Bases: BaseModel
Model for a single Gopher menu item.
type
class-attribute
instance-attribute
title
class-attribute
instance-attribute
selector
class-attribute
instance-attribute
host
class-attribute
instance-attribute
port
class-attribute
instance-attribute
gopher_mcp.models.MenuResult
Bases: BaseModel
Result model for Gopher menu responses.
items
class-attribute
instance-attribute
items: list[GopherMenuItem] = Field(..., description='List of menu items')
gopher_mcp.models.TextResult
Bases: BaseModel
Result model for Gopher text responses.
gopher_mcp.models.BinaryResult
Bases: BaseModel
Result model for Gopher binary responses.
gopher_mcp.models.ErrorResult
Bases: BaseModel
Result model for error responses.
error
class-attribute
instance-attribute
Gemini Result Models
gopher_mcp.models.GeminiSuccessResult
Bases: BaseModel
Result model for successful Gemini responses.
mime_type
class-attribute
instance-attribute
mime_type: GeminiMimeType = Field(..., alias='mimeType', description='Content MIME type')
content
class-attribute
instance-attribute
size
class-attribute
instance-attribute
gopher_mcp.models.GeminiGemtextResult
Bases: BaseModel
Result model for gemtext content responses.
document
class-attribute
instance-attribute
document: GemtextDocument = Field(..., description='Parsed gemtext document')
raw_content
class-attribute
instance-attribute
charset
class-attribute
instance-attribute
gopher_mcp.models.GeminiInputResult
Bases: BaseModel
Result model for input request responses (status 10/11).
sensitive
class-attribute
instance-attribute
gopher_mcp.models.GeminiRedirectResult
Bases: BaseModel
Result model for redirect responses (status 30/31).
new_url
class-attribute
instance-attribute
permanent
class-attribute
instance-attribute
gopher_mcp.models.GeminiErrorResult
Bases: BaseModel
Result model for error responses.
error
class-attribute
instance-attribute
gopher_mcp.models.GeminiCertificateResult
Bases: BaseModel
Result model for certificate request responses (status 60-62).
message
class-attribute
instance-attribute
status
class-attribute
instance-attribute
status: int = Field(default=60, ge=60, le=69, description='Gemini certificate status code: 60 required, 61 not authorized, 62 not valid')
Gemtext Document Models
gopher_mcp.models.GemtextDocument
Bases: BaseModel
Model for parsed gemtext document.
lines
class-attribute
instance-attribute
lines: list[GemtextLine] = Field(..., description='Document lines')
links
class-attribute
instance-attribute
links: list[GemtextLink] = Field(default_factory=list, description='Extracted links')
content_summary
property
Get summary of content types for LLM consumption.
heading_hierarchy
property
Get document heading structure for navigation.
gopher_mcp.models.GemtextLine
Bases: BaseModel
Model for a single line in gemtext format.
type
class-attribute
instance-attribute
type: GemtextLineType = Field(..., description='Type of gemtext line')
link
class-attribute
instance-attribute
link: GemtextLink | None = Field(None, description='Link data (for link lines)')
level
class-attribute
instance-attribute
alt_text
class-attribute
instance-attribute
heading
class-attribute
instance-attribute
heading: GemtextHeading | None = Field(None, description='Heading data (for heading lines)')
list_item
class-attribute
instance-attribute
list_item: GemtextList | None = Field(None, description='List data (for list lines)')
quote
class-attribute
instance-attribute
quote: GemtextQuote | None = Field(None, description='Quote data (for quote lines)')
preformat
class-attribute
instance-attribute
preformat: GemtextPreformat | None = Field(None, description='Preformat data (for preformat lines)')
gopher_mcp.models.GemtextLink
Bases: BaseModel
Model for gemtext link lines.
url
class-attribute
instance-attribute
text
class-attribute
instance-attribute
is_external
property
Whether the link points outside the current capsule.
External links carry a URL scheme (gemini://, https://,
mailto: ...) or are protocol-relative (//host/...). Scheme-less
relative links (foo.gmi, /abs, ./page) are internal.
validate_url_not_empty
classmethod
gopher_mcp.models.GemtextHeading
Bases: BaseModel
Model for gemtext heading lines.
level
class-attribute
instance-attribute
gopher_mcp.models.GemtextList
gopher_mcp.models.GemtextQuote
gopher_mcp.models.GemtextPreformat
Bases: BaseModel
Model for gemtext preformat content.
content
class-attribute
instance-attribute
alt_text
class-attribute
instance-attribute
is_toggle
class-attribute
instance-attribute
language
class-attribute
instance-attribute
gopher_mcp.models.GemtextLineType
Bases: str, Enum
Types of lines in gemtext format.
MIME and Protocol Types
gopher_mcp.models.GeminiMimeType
Bases: BaseModel
Model for Gemini MIME type parsing.
type
class-attribute
instance-attribute
subtype
class-attribute
instance-attribute
charset
class-attribute
instance-attribute
lang
class-attribute
instance-attribute
supports_charset
get_file_extension
Get common file extension for this MIME type.
Source code in src/gopher_mcp/models.py
gopher_mcp.models.GeminiStatusCode
Bases: IntEnum
Gemini protocol status codes.
gopher_mcp.models.GeminiResponse
Bases: BaseModel
Base model for Gemini protocol responses.
status
class-attribute
instance-attribute
status: GeminiStatusCode | int = Field(..., description='Gemini status code')
meta
class-attribute
instance-attribute
body
class-attribute
instance-attribute
validate_meta_length
classmethod
Validate meta field length (reasonable limit).
URL Models
gopher_mcp.models.GopherURL
Bases: BaseModel
Model for parsed Gopher URLs.
gopher_type
class-attribute
instance-attribute
selector
class-attribute
instance-attribute
search
class-attribute
instance-attribute
validate_port
classmethod
validate_gopher_type
classmethod
Validate Gopher type is a single character.
validate_host
classmethod
Validate hostname is not empty (mirrors GeminiURL).
gopher_mcp.models.GeminiURL
Bases: BaseModel
Model for parsed Gemini URLs.
Based on the gemini://<host>[:<port>][/<path>][?<query>] format.
host
class-attribute
instance-attribute
port
class-attribute
instance-attribute
query
class-attribute
instance-attribute
validate_port
classmethod
validate_host
classmethod
Caching and Security Models
gopher_mcp.models.CacheEntry
Bases: _BaseCacheEntry[GopherFetchResponse]
Model for Gopher cache entries.
value
class-attribute
instance-attribute
timestamp
class-attribute
instance-attribute
gopher_mcp.models.GeminiCacheEntry
Bases: _BaseCacheEntry[GeminiFetchResponse]
Model for Gemini cache entries.
value
class-attribute
instance-attribute
timestamp
class-attribute
instance-attribute
gopher_mcp.models.GeminiCertificateInfo
Bases: BaseModel
Model for client certificate information.
fingerprint
class-attribute
instance-attribute
subject
class-attribute
instance-attribute
issuer
class-attribute
instance-attribute
not_before
class-attribute
instance-attribute
not_after
class-attribute
instance-attribute
port
class-attribute
instance-attribute
gopher_mcp.models.TOFUEntry
Bases: BaseModel
Model for Trust-on-First-Use certificate storage.