Developer experience
Build a tool in a single file. Register a county in another. Wire it into Claude, GPT, or a local Ollama model with the same MCP client.
Developer experience
Build a tool in a single file. Register a county in another. Wire it into Claude, GPT, or a local Ollama model with the same MCP client.
from titlemcp.server import build_server, tool
from titlemcp.schemas import AssessmentRecord
from .auditor import FranklinCountyAuditor
server = build_server(
name="titlemcp-us-oh-franklin-recorder",
version="0.4.1",
)
@tool(
name="franklin_county_auditor_search",
description="Search the Franklin County, OH auditor by parcel, address, or owner.",
output_schema=AssessmentRecord,
requires_review=False,
)
async def search(parcel_id: str | None = None,
address: str | None = None,
owner_name: str | None = None) -> AssessmentRecord:
"""Return the canonical assessment record for a Franklin County parcel."""
auditor = FranklinCountyAuditor()
raw = await auditor.lookup(
parcel_id=parcel_id,
address=address,
owner_name=owner_name,
)
return AssessmentRecord.from_franklin(raw)
if __name__ == "__main__":
server.run(transport="stdio")Star the repo, ship an adapter, or wire your first MCP-powered title workflow today.