Search what U.S. officials said on camera, with timestamps and citations. Not a government site.
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Totals for the whole index, video and official transcripts counted apart: video sessions, hours and words transcribed; official transcripts (text, no timing); each source; date ranges, last update, items awaiting review and known gaps. Cite this with any count. For the list of sessions use govtube_list_sessions.
This tool takes no arguments.
Totals for the whole index, video and official transcripts counted apart: video sessions, hours and words transcribed; official transcripts (text, no timing); each source; date ranges, last update, items awaiting review and known gaps. Cite this with any count. For the list of sessions use govtube_list_sessions.
No arguments.
{
"type": "object",
"title": "get_coverageArguments",
"properties": {}
}Return speaker turns overlapping [start_ms, end_ms] with their text, for checking context. A turn with cluster null and speaker "No speaker label" holds words no voice was found for. The words are as heard; don't attribute them to a neighbouring speaker. Not available for official transcripts without timing (timing_granularity "document"): read those at the result's document_url, or resolve the citation for the surrounding turns.
| Argument | Type | Description |
|---|---|---|
| end_ms* | integer | End, in milliseconds; at most 5 minutes after start_ms. |
| start_ms* | integer | Start, in milliseconds from the start of the video, e.g. an instance's start_ms minus 30000. |
| video_id* | string | video_id from a search result. |
{
"type": "object",
"title": "get_transcript_windowArguments",
"required": [
"video_id",
"start_ms",
"end_ms"
],
"properties": {
"end_ms": {
"type": "integer",
"title": "End Ms",
"minimum": 1,
"description": "End, in milliseconds; at most 5 minutes after start_ms."
},
"start_ms": {
"type": "integer",
"title": "Start Ms",
"minimum": 0,
"description": "Start, in milliseconds from the start of the video, e.g. an instance's start_ms minus 30000."
},
"video_id": {
"type": "string",
"title": "Video Id",
"description": "video_id from a search result."
}
}
}Metadata, speakers, playback asset and the rights and use restrictions of the video's source.
| Argument | Type | Description |
|---|---|---|
| video_id* | string | video_id from a search result. |
{
"type": "object",
"title": "get_videoArguments",
"required": [
"video_id"
],
"properties": {
"video_id": {
"type": "string",
"title": "Video Id",
"description": "video_id from a search result."
}
}
}Every indexed item, one page at a time: video sessions and official transcripts (White House transcripts, Congressional Record speeches, one item per speech). Newest first; on the same day, video sessions before official transcripts. Each has title, date, source, length, words, whether it plays, and how many speakers are confirmed. `total` matches govtube_get_coverage's counts for the same source.
| Argument | Type | Description |
|---|---|---|
| kind | any | Only one kind: "video" (video sessions, timed transcripts) or "document" (official transcripts without video timing: White House transcripts, Congressional Record speeches). Omit for both. |
| limit | integer | Sessions per page, 1 to 100. |
| cursor | any | next_cursor from the previous page (same filters). |
| source | any | Only one source: house_floor_clerk (U.S. House floor), senate_floor_and_committees (U.S. Senate floor and committee hearings), govinfo_dcpd (White House transcripts, no video timing), govinfo_crec (Congressional Record, House and Senate speeches as printed, no video timing) or us_gov_youtube (official U.S. government YouTube channels; see source_caveats). A source can hold nothing yet: govtube_get_coverage lists what each one holds. |
| date_to | any | Latest event date, YYYY-MM-DD. |
| date_from | any |
Page through one video's matches by passage, in time order. A passage is a run of instances whose excerpts overlap, shown as one quote. `offset` and `limit` count passages; `next_offset` is null on the last page. `passage_count` and `instance_count` cover the whole video. With detail="full", `instances` also lists every instance of the page one by one.
| Argument | Type | Description |
|---|---|---|
| limit | any | Passages per page, 1 to 100. Default 10, or 20 with detail="full". |
| query* | string | The same query as the search. |
| detail | string | compact (default): small pages, passages only. full: the larger pages of the REST API (default 10 videos x 5), with every instance listed one by one as well as in passages. |
| offset | integer | Passages to skip; use next_offset from the previous page. |
| speaker | any | Bioguide ID of a member of Congress, e.g. 'C001053' (Rep. Tom Cole). Matches speakers a person has confirmed. Names matched only from the on-screen caption are left out (the result counts them in unreviewed_excluded) unless include_unreviewed is true. Omit to search everyone. |
| video_id* | string | video_id from a search result. |
Check that a cited instance still says the quoted words after corrections, and return its context. The result has a share_url to link. gd2./gd1. ids cite words in an official transcript: the result has positions instead of times, citation_text to paste, document_highlight_url, and `certifies` saying what is (and is not) certified.
| Argument | Type | Description |
|---|---|---|
| citation_id* | string | An instance id (gt2.... or gd2...., or an older gt1.... or gd1....). |
{
"type": "object",
"title": "resolve_citationArguments",
"required": [
"citation_id"
],
"properties": {
"citation_id": {
"type": "string",
"title": "Citation Id",
"description": "An instance id (gt2.... or gd2...., or an older gt1.... or gd1....)."
}
}
}Find spoken instances of words or a phrase across official videos and White House transcripts. Returns one small page: counts for the whole result, then up to 5 videos (newest first, or most instances first with sort="most_instances"), each with up to 3 passages (quotes; overlapping instances merged), each passage listing its instances with citation id and share_url. `notes` and `more_passages` say what else there is: use `next_cursor` for more videos, govtube_list_video_instances for the rest of one video, and detail="full" for larger pages. White House transcripts have no timing (`timing_granularity` "document", null times, a `position` and a `document_url`).
| Argument | Type | Description |
|---|---|---|
| sort | string | newest (default): event date, newest first; on the same day, video sessions before official transcripts. most_instances: most instances first; check order_exact in the response. |
| query* | string | Words to find. Put an exact phrase in double quotes: "no tax on tips". Unquoted words must occur within 8 words of each other. |
| cursor | any | next_cursor from the previous page of the same search (same query and filters). |
| detail | string | compact (default): small pages, passages only. full: the larger pages of the REST API (default 10 videos x 5), with every instance listed one by one as well as in passages. |
| source | any |
| Earliest event date, YYYY-MM-DD. |
{
"type": "object",
"title": "list_sessionsArguments",
"properties": {
"kind": {
"anyOf": [
{
"enum": [
"video",
"document"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Kind",
"default": null,
"description": "Only one kind: \"video\" (video sessions, timed transcripts) or \"document\" (official transcripts without video timing: White House transcripts, Congressional Record speeches). Omit for both."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "Sessions per page, 1 to 100."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null,
"description": "next_cursor from the previous page (same filters)."
},
"source": {
"anyOf": [
{
"enum": [
"house_floor_clerk",
"senate_floor_and_committees",
"govinfo_dcpd",
"govinfo_crec",
"us_gov_youtube"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Source",
"default": null,
"description": "Only one source: house_floor_clerk (U.S. House floor), senate_floor_and_committees (U.S. Senate floor and committee hearings), govinfo_dcpd (White House transcripts, no video timing), govinfo_crec (Congressional Record, House and Senate speeches as printed, no video timing) or us_gov_youtube (official U.S. government YouTube channels; see source_caveats). A source can hold nothing yet: govtube_get_coverage lists what each one holds."
},
"date_to": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date To",
"default": null,
"description": "Latest event date, YYYY-MM-DD."
},
"date_from": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date From",
"default": null,
"description": "Earliest event date, YYYY-MM-DD."
}
}
}| include_unreviewed | boolean | With speaker: also return moments where that person was named from the on-screen caption and nobody has reviewed the name yet. They are labelled 'matched from on-screen name, not reviewed'; say so when you quote them. |
{
"type": "object",
"title": "list_video_instancesArguments",
"required": [
"video_id",
"query"
],
"properties": {
"limit": {
"anyOf": [
{
"type": "integer",
"maximum": 100,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Limit",
"default": null,
"description": "Passages per page, 1 to 100. Default 10, or 20 with detail=\"full\"."
},
"query": {
"type": "string",
"title": "Query",
"description": "The same query as the search."
},
"detail": {
"enum": [
"compact",
"full"
],
"type": "string",
"title": "Detail",
"default": "compact",
"description": "compact (default): small pages, passages only. full: the larger pages of the REST API (default 10 videos x 5), with every instance listed one by one as well as in passages."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Passages to skip; use next_offset from the previous page."
},
"speaker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Speaker",
"default": null,
"examples": [
"C001053"
],
"description": "Bioguide ID of a member of Congress, e.g. 'C001053' (Rep. Tom Cole). Matches speakers a person has confirmed. Names matched only from the on-screen caption are left out (the result counts them in unreviewed_excluded) unless include_unreviewed is true. Omit to search everyone."
},
"video_id": {
"type": "string",
"title": "Video Id",
"description": "video_id from a search result."
},
"include_unreviewed": {
"type": "boolean",
"title": "Include Unreviewed",
"default": false,
"description": "With speaker: also return moments where that person was named from the on-screen caption and nobody has reviewed the name yet. They are labelled 'matched from on-screen name, not reviewed'; say so when you quote them."
}
}
}| Only one source: house_floor_clerk (U.S. House floor), senate_floor_and_committees (U.S. Senate floor and committee hearings), govinfo_dcpd (White House transcripts, no video timing), govinfo_crec (Congressional Record, House and Senate speeches as printed, no video timing) or us_gov_youtube (official U.S. government YouTube channels; see source_caveats). A source can hold nothing yet: govtube_get_coverage lists what each one holds. |
| date_to | any | Latest event date, YYYY-MM-DD. |
| speaker | any | Bioguide ID of a member of Congress, e.g. 'C001053' (Rep. Tom Cole). Matches speakers a person has confirmed. Names matched only from the on-screen caption are left out (the result counts them in unreviewed_excluded) unless include_unreviewed is true. Omit to search everyone. |
| date_from | any | Earliest event date, YYYY-MM-DD. |
| max_videos | any | Videos per page, 1 to 25. Default 5, or 10 with detail="full". |
| playable_only | boolean | true: only results with playable video; transcript-only results (no video) are left out and counted in counts.transcript_only. |
| include_unreviewed | boolean | With speaker: also return moments where that person was named from the on-screen caption and nobody has reviewed the name yet. They are labelled 'matched from on-screen name, not reviewed'; say so when you quote them. |
| max_instances_per_video | any | Passages per video, 1 to 20 (with detail="full", also instances). Default 3, or 5 with detail="full". |
{
"type": "object",
"title": "search_instancesArguments",
"required": [
"query"
],
"properties": {
"sort": {
"enum": [
"newest",
"most_instances"
],
"type": "string",
"title": "Sort",
"default": "newest",
"description": "newest (default): event date, newest first; on the same day, video sessions before official transcripts. most_instances: most instances first; check order_exact in the response."
},
"query": {
"type": "string",
"title": "Query",
"description": "Words to find. Put an exact phrase in double quotes: \"no tax on tips\". Unquoted words must occur within 8 words of each other."
},
"cursor": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Cursor",
"default": null,
"description": "next_cursor from the previous page of the same search (same query and filters)."
},
"detail": {
"enum": [
"compact",
"full"
],
"type": "string",
"title": "Detail",
"default": "compact",
"description": "compact (default): small pages, passages only. full: the larger pages of the REST API (default 10 videos x 5), with every instance listed one by one as well as in passages."
},
"source": {
"anyOf": [
{
"enum": [
"house_floor_clerk",
"senate_floor_and_committees",
"govinfo_dcpd",
"govinfo_crec",
"us_gov_youtube"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Source",
"default": null,
"description": "Only one source: house_floor_clerk (U.S. House floor), senate_floor_and_committees (U.S. Senate floor and committee hearings), govinfo_dcpd (White House transcripts, no video timing), govinfo_crec (Congressional Record, House and Senate speeches as printed, no video timing) or us_gov_youtube (official U.S. government YouTube channels; see source_caveats). A source can hold nothing yet: govtube_get_coverage lists what each one holds."
},
"date_to": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date To",
"default": null,
"description": "Latest event date, YYYY-MM-DD."
},
"speaker": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Speaker",
"default": null,
"examples": [
"C001053"
],
"description": "Bioguide ID of a member of Congress, e.g. 'C001053' (Rep. Tom Cole). Matches speakers a person has confirmed. Names matched only from the on-screen caption are left out (the result counts them in unreviewed_excluded) unless include_unreviewed is true. Omit to search everyone."
},
"date_from": {
"anyOf": [
{
"type": "string",
"format": "date"
},
{
"type": "null"
}
],
"title": "Date From",
"default": null,
"description": "Earliest event date, YYYY-MM-DD."
},
"max_videos": {
"anyOf": [
{
"type": "integer",
"maximum": 25,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Videos",
"default": null,
"description": "Videos per page, 1 to 25. Default 5, or 10 with detail=\"full\"."
},
"playable_only": {
"type": "boolean",
"title": "Playable Only",
"default": false,
"description": "true: only results with playable video; transcript-only results (no video) are left out and counted in counts.transcript_only."
},
"include_unreviewed": {
"type": "boolean",
"title": "Include Unreviewed",
"default": false,
"description": "With speaker: also return moments where that person was named from the on-screen caption and nobody has reviewed the name yet. They are labelled 'matched from on-screen name, not reviewed'; say so when you quote them."
},
"max_instances_per_video": {
"anyOf": [
{
"type": "integer",
"maximum": 20,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Instances Per Video",
"default": null,
"description": "Passages per video, 1 to 20 (with detail=\"full\", also instances). Default 3, or 5 with detail=\"full\"."
}
}
}