Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,552Letters: 14Defects: 1,331counted 4 min ago
teppi

Server definition

Hash
sha256:692c319057e386e984369dac3dca42fec37504a0f2a22d024fd2ba6a21455eff
What it is
What a remote MCP server returned when asked what it offers: 15 tools

The blob, as servednamed by its sha256

{ "instructions": "OpenPublica makes US local-government meetings searchable. It tracks city\ncouncils and boards (Sacramento, San Francisco, Los Angeles, Minneapolis, and\nmore), transcribes each meeting, and generates a structured AI summary.\n\nA good way to narrow down to the right meetings:\n1. WHERE — resolve the government: `find_governments_by_name` (\"Sacramento\"),\n `find_governments_by_zip` (\"95814\"), or `find_local_governments` (lat/lon).\n Each returns an `account_id` used to scope the other tools.\n2. WHAT KIND — `discover_meeting_vocabulary` lists the valid `category_tag`s and\n `topic`s to filter by. `category_tag` is an opaque UUID — never guess it; get it here.\n3. SEARCH — `search_meetings_semantic` with `match_type` semantic (meaning),\n keyword (exact terms like ordinance numbers / names), or hybrid; optionally\n filtered by government(s), `category_tag`, `topic`, and dates. Or browse newest-first\n with `list_recent_meetings`.\n4. TRIAGE — rank results by the `relevance_score` (and `highlights`) on each match.\n5. DRILL IN — `get_meeting` for the full summary and topics.\n6. QUOTE — `search_meeting_transcript` to pull exact quotes/passages (with timecodes)\n without loading the whole transcript.\n\nDates passed as filters use MM-DD-YYYY. Cite meetings by their title and date,\nand link to the OpenPublica meeting page when relevant.\n", "tools": [ { "description": "Discover the valid category and topic filter values before filtering a search.\n\n Meeting `category_tag`s are opaque UUIDs and topics have no fixed list, so you\n cannot guess them. Call this first to get the real values, then pass a returned\n `category_tag` (from `categories[].tags`) or `topic` string into\n `search_meetings_semantic` / `list_recent_meetings`. Scope with a government\n and/or date range; calls without explicit dates default to a recent window\n (returned as `default_window_days`).\n ", "inputSchema": { "properties": { "end_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional latest date, MM-DD-YYYY.", "title": "End Date" }, "government_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional account_id to scope the vocabulary to one government.", "title": "Government Id" }, "government_ids": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "Optional list of account_ids to scope to several governments. Overrides government_id.", "title": "Government Ids" }, "start_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional earliest date, MM-DD-YYYY.", "title": "Start Date" }, "topic_limit": { "default": 50, "description": "Max topics to return, most common first (1-200).", "maximum": 200, "minimum": 1, "title": "Topic Limit", "type": "integer" } }, "title": "discover_meeting_vocabularyArguments", "type": "object" }, "name": "discover_meeting_vocabulary", "outputSchema": { "additionalProperties": true, "title": "discover_meeting_vocabularyDictOutput", "type": "object" } }, { "description": "Resolve a place *name* to the governments OpenPublica tracks there.\n\n Use this when you know a city/state name but not its coordinates — it returns\n matching governments with their `account_id` (prefix matches first), which you\n then pass to the search/list tools. Prefer this over `find_local_governments`\n when starting from a name rather than a latitude/longitude.\n ", "inputSchema": { "properties": { "limit": { "default": 10, "description": "Max governments to return (1-50).", "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "query": { "description": "A place name to search for, e.g. 'Sacramento', 'San Francisco, CA', or a state like 'Texas'.", "title": "Query", "type": "string" } }, "required": [ "query" ], "title": "find_governments_by_nameArguments", "type": "object" }, "name": "find_governments_by_name", "outputSchema": { "additionalProperties": true, "title": "find_governments_by_nameDictOutput", "type": "object" } }, { "description": "Resolve a ZIP code to nearby tracked governments.\n\n Convenience wrapper: geocodes the ZIP, then finds the governments OpenPublica\n tracks nearest that point. Returns their `account_id`s plus the resolved\n location. An empty `governments` list means none are tracked near that ZIP yet.\n ", "inputSchema": { "properties": { "limit": { "default": 10, "description": "Max governments to return (1-50).", "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "postal_code": { "description": "A US ZIP code, e.g. '95814'.", "title": "Postal Code", "type": "string" } }, "required": [ "postal_code" ], "title": "find_governments_by_zipArguments", "type": "object" }, "name": "find_governments_by_zip", "outputSchema": { "additionalProperties": true, "title": "find_governments_by_zipDictOutput", "type": "object" } }, { "description": "Discover which governments OpenPublica tracks near a coordinate.\n\n Returns nearby governments with their `account_id`, which you can pass to the\n other tools to scope results to a specific city or board. Note OpenPublica\n only covers a limited set of US localities; an empty result means none are\n tracked near that point yet.\n ", "inputSchema": { "properties": { "latitude": { "description": "Latitude of the location of interest.", "maximum": 90, "minimum": -90, "title": "Latitude", "type": "number" }, "limit": { "default": 10, "description": "Max governments to return (1-50).", "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "longitude": { "description": "Longitude of the location of interest.", "maximum": 180, "minimum": -180, "title": "Longitude", "type": "number" } }, "required": [ "longitude", "latitude" ], "title": "find_local_governmentsArguments", "type": "object" }, "name": "find_local_governments", "outputSchema": { "additionalProperties": true, "title": "find_local_governmentsDictOutput", "type": "object" } }, { "description": "Get OpenPublica's overall coverage: total governments, states, and meetings\n indexed. DC is tracked but is not a state, so it is reported separately as\n `includes_dc` — read the pair as \"N states and DC\".", "inputSchema": { "properties": {}, "title": "get_coverage_overviewArguments", "type": "object" }, "name": "get_coverage_overview", "outputSchema": { "additionalProperties": true, "title": "get_coverage_overviewDictOutput", "type": "object" } }, { "description": "One document's metadata. Use read_document_pages to read it.\n\n If an `availability` key is present, read it before quoting figures: its\n `problems` are transcription-lint findings, most often a footnote marker\n that may have been merged into the number it annotates. No such key means\n the document transcribed cleanly.\n ", "inputSchema": { "properties": { "document_id": { "description": "Document id from list_government_documents or search_documents.", "title": "Document Id", "type": "string" } }, "required": [ "document_id" ], "title": "get_documentArguments", "type": "object" }, "name": "get_document", "outputSchema": null }, { "description": "Get a tracked government's profile: name, location, and meeting categories.", "inputSchema": { "properties": { "government_id": { "description": "The account_id of the government.", "title": "Government Id", "type": "string" }, "include_weekly_summary": { "default": false, "description": "If true, include the AI-generated weekly digest (markdown). Default false.", "title": "Include Weekly Summary", "type": "boolean" } }, "required": [ "government_id" ], "title": "get_government_infoArguments", "type": "object" }, "name": "get_government_info", "outputSchema": { "additionalProperties": true, "title": "get_government_infoDictOutput", "type": "object" } }, { "description": "Get meeting-activity stats for a government over a recent window.\n\n Returns total meeting count, a per-day activity map, and a breakdown of\n meeting categories — useful for \"how active has X been lately?\" questions.\n ", "inputSchema": { "properties": { "days": { "default": 30, "description": "Look-back window in days (1-365).", "maximum": 365, "minimum": 1, "title": "Days", "type": "integer" }, "government_id": { "description": "account_id of the government, or 'all' for corpus-wide stats.", "title": "Government Id", "type": "string" } }, "required": [ "government_id" ], "title": "get_government_statsArguments", "type": "object" }, "name": "get_government_stats", "outputSchema": { "additionalProperties": true, "title": "get_government_statsDictOutput", "type": "object" } }, { "description": "Get a single meeting's full AI summary and topics.\n\n Set `include_transcript=true` to also retrieve the complete transcript text\n for direct quotation. Returns an error object if the meeting is not found.\n ", "inputSchema": { "properties": { "include_transcript": { "default": false, "description": "If true, also fetch the full meeting transcript (can be long). Default false.", "title": "Include Transcript", "type": "boolean" }, "meeting_id": { "description": "The meeting_id returned by a search/list tool.", "title": "Meeting Id", "type": "string" } }, "required": [ "meeting_id" ], "title": "get_meetingArguments", "type": "object" }, "name": "get_meeting", "outputSchema": { "additionalProperties": true, "title": "get_meetingDictOutput", "type": "object" } }, { "description": "List a government's adopted plan and budget documents.\n\n Each entry carries `covers` — every general-plan element that document\n answers for. A city that publishes one bound general plan satisfies all\n eight with the same PDF, so do not conclude an element is unpublished\n because no entry is named after it.\n\n `status` says what the entry offers: `converted` is searchable and readable;\n `superseded` is a retired edition, still stored but not searchable; and\n **`failed` means we hold this document and could not read it — it is not\n evidence the city published nothing.** Cite `source_url` in that case; it is\n always the city's own copy.\n\n An `availability` block appears ONLY when something is wrong with a\n document, and `availability.reason` says what. No `availability` key means\n there is nothing to report.\n ", "inputSchema": { "properties": { "government_id": { "description": "account_id from find_local_governments.", "title": "Government Id", "type": "string" }, "include_superseded": { "default": false, "description": "Also include prior editions retired by a newer document.", "title": "Include Superseded", "type": "boolean" } }, "required": [ "government_id" ], "title": "list_government_documentsArguments", "type": "object" }, "name": "list_government_documents", "outputSchema": null }, { "description": "Browse meetings newest-first, optionally filtered by government, type, topic, or date.\n\n Use this for \"what are the most recent meetings\" or to page through a\n government's history. For topical questions, prefer `search_meetings_semantic`.\n ", "inputSchema": { "properties": { "category_tag": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional meeting-type filter — an opaque category_tag from discover_meeting_vocabulary (not a guessable slug; don't invent it).", "title": "Category Tag" }, "end_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional latest date, MM-DD-YYYY.", "title": "End Date" }, "government_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "account_id to list meetings for (from find_local_governments). Omit to list across all governments.", "title": "Government Id" }, "limit": { "default": 10, "description": "Meetings per page (1-25).", "maximum": 25, "minimum": 1, "title": "Limit", "type": "integer" }, "page": { "default": 1, "description": "1-based page number for older results.", "minimum": 1, "title": "Page", "type": "integer" }, "start_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional earliest date, MM-DD-YYYY.", "title": "Start Date" }, "topic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional topic filter — a topic name from discover_meeting_vocabulary, e.g. 'Affordable Housing'.", "title": "Topic" } }, "title": "list_recent_meetingsArguments", "type": "object" }, "name": "list_recent_meetings", "outputSchema": { "additionalProperties": true, "title": "list_recent_meetingsDictOutput", "type": "object" } }, { "description": "Read a page range of a document as markdown.\n\n Pages are transcribed from rendered pixels, so tables and scanned text come\n through as text. A page that could not be transcribed appears as a marked\n hole rather than being silently dropped — if you see one, say so instead of\n reading past it.\n\n Text is assembled from page windows, so `covered` may be slightly wider than\n what you asked for; cite the page numbers in `covered`, not `requested`.\n ", "inputSchema": { "properties": { "document_id": { "description": "Document id from list_government_documents or search_documents.", "title": "Document Id", "type": "string" }, "first_page": { "description": "First page to read (1-based, as the PDF renders).", "minimum": 1, "title": "First Page", "type": "integer" }, "last_page": { "description": "Last page to read. Spans longer than 40 pages are clamped to 40 from first_page.", "minimum": 1, "title": "Last Page", "type": "integer" } }, "required": [ "document_id", "first_page", "last_page" ], "title": "read_document_pagesArguments", "type": "object" }, "name": "read_document_pages", "outputSchema": null }, { "description": "Search adopted plan and budget documents, returning page-cited excerpts.\n\n Each hit's `text` is a short passage around the match, not the full page —\n call read_document_pages with the hit's `first_page` to read it in context.\n\n Every hit carries `first_page`/`last_page` and `source_url`. Quote those\n when citing: the page number is what makes the claim checkable against the\n city's own copy.\n\n This is word matching, not semantic search — try the terms a plan would\n actually use. Only currently-served documents are searchable, so an empty\n result is not evidence the government has no such policy; check\n list_government_documents for what is held and what could not be read.\n\n A hit with `document_complete: false` comes from a document with\n transcription findings. Verify it against `source_url` before quoting a\n number from it.\n ", "inputSchema": { "properties": { "government_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional account_id to restrict the search to one government.", "title": "Government Id" }, "limit": { "default": 10, "description": "Maximum excerpts to return.", "maximum": 50, "minimum": 1, "title": "Limit", "type": "integer" }, "query": { "description": "Words to find in plan and budget text, e.g. 'accessory dwelling unit parking'.", "title": "Query", "type": "string" } }, "required": [ "query" ], "title": "search_documentsArguments", "type": "object" }, "name": "search_documents", "outputSchema": null }, { "description": "Find exact quotes/passages inside one meeting's transcript.\n\n Use this to pull direct quotations without loading a whole (often very long)\n transcript: it fetches the transcript server-side, scans it, and returns only\n the matching passages with approximate `start`/`end` timecodes when available.\n Exact matches rank first, with a fuzzy fallback. Prefer this over\n `get_meeting(include_transcript=true)` when you only need specific quotes.\n ", "inputSchema": { "properties": { "context_chars": { "default": 300, "description": "Characters of surrounding context per side of a match (0-2000).", "maximum": 2000, "minimum": 0, "title": "Context Chars", "type": "integer" }, "max_passages": { "default": 5, "description": "Max matched passages to return (1-20).", "maximum": 20, "minimum": 1, "title": "Max Passages", "type": "integer" }, "meeting_id": { "description": "The meeting_id (from a search/list tool) whose transcript to search.", "title": "Meeting Id", "type": "string" }, "query": { "description": "The phrase or terms to find in the transcript, e.g. 'rent stabilization' or a speaker's exact words.", "title": "Query", "type": "string" } }, "required": [ "meeting_id", "query" ], "title": "search_meeting_transcriptArguments", "type": "object" }, "name": "search_meeting_transcript", "outputSchema": { "additionalProperties": true, "title": "search_meeting_transcriptDictOutput", "type": "object" } }, { "description": "Search OpenPublica meeting summaries by meaning, exact terms, or both.\n\n The best default tool for \"what has been said/decided about X\" questions.\n Results carry a `relevance_score` (semantic, 0-1) and/or `keyword_score` (BM25)\n plus `highlights`, so you can triage matches by confidence. If the response sets\n `degraded_to_vector`, the keyword index was unavailable and results are\n semantic-only — do NOT treat them as exact-term matches. Narrow with\n `category_tag`/`topic` (get valid values from `discover_meeting_vocabulary`), a\n date range, or one or more governments. Returns a summary preview; call\n `get_meeting` with a returned `meeting_id` for the full summary or transcript.\n ", "inputSchema": { "properties": { "category_tag": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional meeting-type filter — an opaque category_tag from discover_meeting_vocabulary (not a guessable slug).", "title": "Category Tag" }, "end_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional latest meeting date, MM-DD-YYYY.", "title": "End Date" }, "government_id": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional account_id (from find_local_governments) to restrict the search to one government.", "title": "Government Id" }, "government_ids": { "anyOf": [ { "items": { "type": "string" }, "type": "array" }, { "type": "null" } ], "default": null, "description": "Optional list of account_ids to search across several governments at once (e.g. to compare cities). Overrides government_id.", "title": "Government Ids" }, "limit": { "default": 10, "description": "Max meetings to return (1-25).", "maximum": 25, "minimum": 1, "title": "Limit", "type": "integer" }, "match_type": { "anyOf": [ { "enum": [ "semantic", "keyword", "hybrid" ], "type": "string" }, { "type": "null" } ], "default": null, "description": "How to match: 'semantic' (default, by meaning — best for concepts/paraphrases), 'keyword' (exact terms — best for names, ordinance numbers, quoted phrases), or 'hybrid' (both, rank-fused). Use keyword/hybrid when the query has a literal string an embedding might miss.", "title": "Match Type" }, "min_score": { "anyOf": [ { "maximum": 1, "minimum": 0, "type": "number" }, { "type": "null" } ], "default": null, "description": "Optional semantic relevance floor 0-1 (default 0.4). Raise to return only strong matches; lower to widen recall. Applies to semantic matching only — keyword (BM25) hits are not filtered by it.", "title": "Min Score" }, "query": { "description": "What to search for in plain language, e.g. 'short-term rental regulations' or 'police budget overtime'.", "title": "Query", "type": "string" }, "start_date": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional earliest meeting date, MM-DD-YYYY.", "title": "Start Date" }, "topic": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "default": null, "description": "Optional topic filter — a topic name from discover_meeting_vocabulary, e.g. 'Affordable Housing'. Restricts to meetings that discussed it.", "title": "Topic" } }, "required": [ "query" ], "title": "search_meetings_semanticArguments", "type": "object" }, "name": "search_meetings_semantic", "outputSchema": { "additionalProperties": true, "title": "search_meetings_semanticDictOutput", "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:692c319057e386e984369dac3dca42fec37504a0f2a22d024fd2ba6a21455eff | sha256sum