GovTube
Server Details
Search what U.S. officials said on camera, with timestamps and citations. Not a government site.
- Status
- Healthy
- Uptime
- 100.0% over 22 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 7 tools
Each tool targets a distinct operation: stats (get_coverage), whole-index listing (list_sessions), per-video metadata (get_video), cross-video search (search_instances), within-video drill-down (list_video_instances), citation verification (resolve_citation), and context windows (get_transcript_window). The main overlap is between search_instances and list_video_instances, which both return passages/instances, but descriptions clarify that one is the cross-video entry point and the other a single-video drill-down.
All tools share the govtube_ prefix and a consistent verb_noun snake_case pattern (get_coverage, get_video, list_sessions, list_video_instances, resolve_citation, search_instances, get_transcript_window). No style mixing or vague verbs.
Seven tools is well within the 3-15 sweet spot and each maps to a clear step in the search-cite-verify workflow. Nothing feels redundant or padded.
The surface covers search, pagination, per-video metadata, citation resolution, coverage stats, and transcript context, which covers most of the domain. Minor gaps exist, such as no direct document-fetch tool for official transcripts (agents must use document_url), but core workflows are well served.
Available Tools
7 toolsgovtube_get_coverageWhat the index coversARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| video | Yes | |
| videos | Yes | |
| revised | No | |
| sources | Yes | |
| by_timing | Yes | |
| documents | Yes | |
| known_gaps | Yes | |
| collections | Yes | |
| corrections | No | |
| total_hours | Yes | |
| total_words | Yes | |
| awaiting_review | Yes | |
| last_event_date | Yes | |
| first_event_date | Yes | |
| last_ingested_at | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, closed-world and non-destructive, so the safety profile is covered. The description goes further by describing the shape of the content it reports—separate video vs. official transcript counts, no timing on official transcripts, last update, pending review, known gaps—which is genuine behavioral context beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Dense but front-loaded: what is counted first, then what metadata accompanies it, then citation guidance and the sibling pointer. Every sentence carries information, though the 'counted apart' phrasing is slightly compressed and the coverage list is packed into one long clause.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be spelled out, and the description still previews the reported dimensions. Combined with annotations covering the read-only profile, an agent has everything needed to select and call it; only explicit exclusions or a note on the gap definition are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate; the baseline for a parameterless tool applies. The description correctly implies no input is needed, consistent with the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific resource and scope: totals for the entire index, with video and official transcripts counted separately, plus date ranges, last update, pending review and known gaps. It also contrasts itself against the sibling govtube_list_sessions, so an agent can distinguish the two without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a clear use condition (cite this with any count) and routes to an alternative for a related need (use govtube_list_sessions for the list of sessions). It does not mention when not to use it or the other siblings (search, get_video), but the primary alternative is named explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govtube_get_transcript_windowRead transcript around a momentARead-onlyIdempotentInspect
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.| Name | Required | Description | Default |
|---|---|---|---|
| end_ms | Yes | End, in milliseconds; at most 5 minutes after start_ms. | |
| start_ms | Yes | Start, in milliseconds from the start of the video, e.g. an instance's start_ms minus 30000. | |
| video_id | Yes | video_id from a search result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only/idempotent safety profile, but the description adds domain-specific behavior beyond them: what a null cluster with speaker 'No speaker label' means, the instruction not to attribute those words to a neighbour, and the availability limitation for document-granularity transcripts. This is exactly the kind of caveat structured fields cannot express.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core behavior in the first sentence, followed by a caveat paragraph and an availability paragraph. Every sentence carries information, though the multi-paragraph layout is slightly heavier than strictly needed for a three-parameter tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail is unnecessary; the description instead covers the gaps an agent needs — special-case turn semantics and the transcript-type limitation that would otherwise cause a wrong call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real semantics: the window is defined by overlap with the interval rather than containment, which changes what turns come back. It does not restate the 5-minute cap, but the schema already carries that.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a precise verb and resource — 'Return speaker turns overlapping [start_ms, end_ms] with their text' — plus the intent ('for checking context'). It also differentiates itself from the citation/document route for transcripts without timing, so an agent can tell when this tool is the right one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit when ('for checking context' around a moment) and an explicit when-not ('Not available for official transcripts without timing (timing_granularity "document")'), naming the alternatives: the result's document_url or resolve_citation for surrounding turns. Nothing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govtube_get_videoVideo details, provenance and rightsBRead-onlyIdempotentInspect
Metadata, speakers, playback asset and the rights and use restrictions of the video's source.
| Name | Required | Description | Default |
|---|---|---|---|
| video_id | Yes | video_id from a search result. |
Output Schema
| Name | Required | Description |
|---|---|---|
| video | Yes | |
| rights | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is fully covered and the read-only, side-effect-free nature is known. The description adds no behavioral context beyond that (no auth requirements, rate limits or failure modes), but for a closed-world idempotent lookup there is little behavior left to disclose, so a middling score is fair.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One compact sentence with no filler, and the most decision-relevant content (metadata, rights restrictions) is stated up front. It is a sentence fragment rather than a complete statement of action, which is the only structural weakness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one required parameter, full schema coverage, complete annotations and an output schema that documents the return shape, the description supplies enough for correct invocation. The only gap is the absence of routing guidance among the six sibling tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage ('video_id from a search result'), so the schema already explains its origin. The description contributes nothing further about the id's format or validation, which is the expected baseline when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the resource and enumerates the payload precisely (metadata, speakers, playback asset, rights/use restrictions), so an agent can tell it returns a video record rather than a transcript window or a coverage summary. It lacks an explicit verb and never names a contrasting sibling, so it clears the 'clear but undifferentiated' bar rather than the top one.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to call this tool versus govtube_get_transcript_window, govtube_get_coverage or govtube_list_video_instances, and no stated precondition that the video_id must come from a prior search or listing. The only implied usage is the tool name itself, which is weak given six siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govtube_list_sessionsList indexed sessionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | 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 | No | Sessions per page, 1 to 100. | |
| cursor | No | next_cursor from the previous page (same filters). | |
| source | No | 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 | No | Latest event date, YYYY-MM-DD. | |
| date_from | No | Earliest event date, YYYY-MM-DD. |
Output Schema
| Name | Required | Description |
|---|---|---|
| total | Yes | |
| sessions | Yes | |
| next_cursor | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the read-only, idempotent, non-destructive safety profile. The description adds useful behavioral context beyond annotations: pagination ('one page at a time'), ordering ('Newest first; on the same day, video sessions before official transcripts'), item fields, and the fact that `total` matches govtube_get_coverage counts.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: it opens with the resource and pagination model, then covers ordering and included fields. Every sentence adds relevant information without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return-value details need not be fully spelled out, but the description still summarizes key fields and ordering. It covers pagination and total-count consistency well, though it could more explicitly note that omitting kind/source returns everything.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the parameter meanings, enums, defaults, and bounds are already fully documented in the schema. The description adds minor context by noting the source-scoped total count, but does not add meaning beyond the schema for the filter, pagination, or date parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb and resource ('Every indexed item', 'video sessions and official transcripts') and describes the scope clearly. It distinguishes its output consistency from govtube_get_coverage, but it does not distinguish itself from siblings like govtube_search_instances or govtube_list_video_instances.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains what the tool returns and its ordering, but gives no explicit guidance on when to use it instead of sibling tools such as govtube_search_instances or govtube_list_video_instances. It references govtube_get_coverage only for count consistency, not as an alternative workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govtube_list_video_instancesList instances in one videoARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Passages per page, 1 to 100. Default 10, or 20 with detail="full". | |
| query | Yes | The same query as the search. | |
| detail | No | 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. | compact |
| offset | No | Passages to skip; use next_offset from the previous page. | |
| speaker | No | 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 | Yes | video_id from a search result. | |
| include_unreviewed | No | 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. |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| video | Yes | |
| offset | Yes | |
| rights | Yes | |
| passages | Yes | |
| instances | No | |
| next_offset | Yes | |
| more_passages | Yes | |
| passage_count | Yes | |
| instance_count | Yes | |
| unreviewed_excluded | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, idempotent=true, destructive=false, so the safety profile is covered. The description adds valuable behavioral context beyond annotations: pagination semantics (offset/limit count passages, next_offset null on last page), aggregation scope (passage_count and instance_count cover whole video), and the detail='full' effect. Missing information about rate limits or auth requirements keeps it from a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact paragraphs, front-loaded with the core purpose and pagination model. No wasted words. Slightly dense but every sentence carries information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given an output schema exists (so return shapes needn't be explained), the description covers pagination model, detail modes, and scoping well. The main gap is explicit routing between this and sibling tools like search_instances, which is left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description clarifies that offset/limit operate on passages (not instances), which is a semantic distinction not explicit in the parameter names. It also explains next_offset behavior. This adds meaning beyond the schema's own descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (page through), resource (one video's matches), and organizing unit (passages, in time order). Clearly distinguishes it from search_instances (which would find the matches) and from get_video by scoping to a single video_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage by referencing 'the same query as the search' and 'video_id from a search result', suggesting this is a follow-up drill-down tool. However, it never explicitly states when to use this instead of govtube_search_instances or govtube_get_transcript_window, leaving the alternative selection to be inferred from context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govtube_resolve_citationResolve a citation idARead-onlyIdempotentInspect
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.| Name | Required | Description | Default |
|---|---|---|---|
| citation_id | Yes | An instance id (gt2.... or gd2...., or an older gt1.... or gd1....). |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| signed | No | |
| status | Yes | |
| video_id | Yes | |
| withheld | No | |
| certifies | No | |
| cited_rev | Yes | |
| share_url | Yes | |
| current_rev | Yes | |
| quoted_text | Yes | |
| replacement | No | |
| canonical_id | No | |
| corrected_at | No | |
| document_url | No | |
| verification | No | |
| caption_check | No | |
| citation_text | No | |
| words_checked | No | |
| low_confidence | No | |
| source_caveats | No | |
| current_position | No | |
| current_start_ms | Yes | |
| replacement_note | No | |
| source_certainty | No | |
| original_position | No | |
| original_start_ms | Yes | |
| timing_granularity | No | |
| transcript_context | No | |
| verification_source | No | |
| document_highlight_url | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so safety is covered. The description adds genuine behavioral context beyond them: the tool re-checks the quote against the corrected transcript rather than just fetching it, and it explains what `certifies` means (what is and is not certified). It does not say what happens on a stale/mismatched citation, which is the one notable gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core purpose. The inserted 'The result has a share_url to link' sentence interrupts the flow before the gd2/gd1 explanation and partly duplicates the output schema, but overall it is tight.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be enumerated; annotations cover safety and idempotency; the single parameter is fully documented in both schema and description. The missing piece is failure behavior when the quoted words no longer match after corrections, which matters for a verification tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema already describes the id formats, so baseline is 3. The description adds real meaning: gd2./gd1. ids point to words in an official transcript, so the result carries positions rather than times – useful semantics the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: re-verify that a cited instance still contains the quoted words after corrections and return its context. That is distinct from the fetch/list siblings, though it never names an alternative to route away from, so it falls short of a 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied – an agent infers 'use when you have a citation id and need to confirm the quote still holds.' There is no explicit when-not condition or pointer to a sibling (e.g. for gt1/gt2 ids), leaving the choice to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
govtube_search_instancesSearch spoken instancesARead-onlyIdempotentInspect
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`).
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | 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. | newest |
| query | Yes | 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 | No | next_cursor from the previous page of the same search (same query and filters). | |
| detail | No | 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. | compact |
| source | No | 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 | No | Latest event date, YYYY-MM-DD. | |
| speaker | No | 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 | No | Earliest event date, YYYY-MM-DD. | |
| max_videos | No | Videos per page, 1 to 25. Default 5, or 10 with detail="full". | |
| playable_only | No | true: only results with playable video; transcript-only results (no video) are left out and counted in counts.transcript_only. | |
| include_unreviewed | No | 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 | No | Passages per video, 1 to 20 (with detail="full", also instances). Default 3, or 5 with detail="full". |
Output Schema
| Name | Required | Description |
|---|---|---|
| sort | Yes | |
| notes | Yes | |
| query | Yes | |
| counts | Yes | |
| detail | Yes | |
| limits | Yes | |
| videos | Yes | |
| next_cursor | Yes | |
| order_exact | Yes | |
| normalized_query | Yes | |
| unreviewed_excluded | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, closed-world), so the description's job is to add operational context — and it does: page shape (up to 5 videos, up to 3 passages each), overlap merging of instances, newest-first vs most_instances ordering, the presence of `notes`/`more_passages`, and the White House transcript quirk (timing_granularity 'document', null times, position, document_url). This is rich disclosure well beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, with return-shape and pagination details following in a single dense but readable block. It is slightly longer than needed given an output schema exists, but no sentence is filler — each covers a distinct behavioral fact (paging, sorting, merging, transcript handling).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 12-parameter, paginated search tool with an output schema, the description covers everything an agent needs: what is searched, how pages are shaped, how to continue, and how transcript-only sources differ. Since an output schema exists, the return-format prose is bonus rather than a required burden, and nothing material is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all 12 parameters, including the sort enum, detail enum, cursor semantics, and per-page defaults. The description restates a few of these (sort="most_instances", detail="full" page sizes) but adds no syntax, format, or constraint meaning the schema lacks. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Find spoken instances of words or a phrase across official videos and White House transcripts.' The scope (spoken word/phrase occurrences, across two content types) is precise enough to distinguish it from sibling tools like govtube_get_transcript_window or govtube_get_video, and the closing sentence names govtube_list_video_instances as the per-video alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly routes continuation: 'use `next_cursor` for more videos, govtube_list_video_instances for the rest of one video, and detail="full" for larger pages.' That is clear when-to-use guidance with a named alternative. It stops short of stating when NOT to use this tool (e.g. versus govtube_get_transcript_window or listing tools), so it is strong but not fully exclusionary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
govtube_get_coverage6 fields changed- added
Output schema / $defs / CitationCountsAdded value: +{ + "properties": { + "capped": { + "default": false, + "type": "boolean" + }, + "moved": { + "minimum": 0, + "type": "integer" + }, + "probes": { + "minimum": 0, + "type": "integer" + }, + "reanchored": { + "minimum": 0, + "type": "integer" + }, + "superseded": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "probes", + "reanchored", + "moved", + "superseded" + ], + "type": "object" +} - added
Output schema / $defs / CorrectionChangeAdded value: +{ + "properties": { + "after": { + "type": "string" + }, + "before": { + "type": "string" + }, + "end_ms": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "start_ms": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ] + }, + "word": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "start_ms", + "end_ms", + "word", + "before", + "after" + ], + "type": "object" +} - changed
Output schema / $defs / CorrectionEntry / properties / action / enumPrevious value: -[ - "hidden", - "restored" -]New value: +[ + "hidden", + "restored", + "corrected" +] - added
Output schema / $defs / CorrectionEntry / properties / changesAdded value: +{ + "items": { + "$ref": "#/$defs/CorrectionChange" + }, + "type": "array" +} - added
Output schema / $defs / CorrectionEntry / properties / citationsAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/CitationCounts" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / CorrectionEntry / properties / from_revAdded value: +{ + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null +}
4 tool updates
- Changed
govtube_list_sessions2 fields changed- added
Output schema / $defs / McpSession / properties / verificationAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/SessionVerification" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / SessionVerificationAdded value: +{ + "properties": { + "caption_source": { + "anyOf": [ + { + "enum": [ + "house_captions", + "senate_captions", + "dvids_captions", + "reviewer", + "asr_word_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "computed_at": { + "type": "string" + }, + "conf_source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "held_share": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "sentences": { + "minimum": 0, + "type": "integer" + }, + "sentences_held": { + "minimum": 0, + "type": "integer" + }, + "words": { + "minimum": 0, + "type": "integer" + }, + "words_checked": { + "minimum": 0, + "type": "integer" + }, + "words_held": { + "minimum": 0, + "type": "integer" + }, + "words_scored": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "words", + "words_scored", + "words_checked", + "words_held", + "sentences", + "sentences_held", + "held_share", + "computed_at" + ], + "type": "object" +}
- Changed
govtube_list_video_instances4 fields changed- added
Output schema / $defs / McpInstance / properties / verificationAdded value: +{ + "anyOf": [ + { + "enum": [ + "checked", + "unverified", + "low_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / McpInstance / properties / verification_sourceAdded value: +{ + "anyOf": [ + { + "enum": [ + "house_captions", + "senate_captions", + "dvids_captions", + "reviewer", + "asr_word_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / McpPassageInstance / properties / verificationAdded value: +{ + "anyOf": [ + { + "enum": [ + "checked", + "unverified", + "low_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / McpPassageInstance / properties / verification_sourceAdded value: +{ + "anyOf": [ + { + "enum": [ + "house_captions", + "senate_captions", + "dvids_captions", + "reviewer", + "asr_word_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
govtube_resolve_citation2 fields changed- added
Output schema / properties / verificationAdded value: +{ + "anyOf": [ + { + "enum": [ + "checked", + "unverified", + "low_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / properties / verification_sourceAdded value: +{ + "anyOf": [ + { + "enum": [ + "house_captions", + "senate_captions", + "dvids_captions", + "reviewer", + "asr_word_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
govtube_search_instances4 fields changed- added
Output schema / $defs / McpInstance / properties / verificationAdded value: +{ + "anyOf": [ + { + "enum": [ + "checked", + "unverified", + "low_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / McpInstance / properties / verification_sourceAdded value: +{ + "anyOf": [ + { + "enum": [ + "house_captions", + "senate_captions", + "dvids_captions", + "reviewer", + "asr_word_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / McpPassageInstance / properties / verificationAdded value: +{ + "anyOf": [ + { + "enum": [ + "checked", + "unverified", + "low_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / McpPassageInstance / properties / verification_sourceAdded value: +{ + "anyOf": [ + { + "enum": [ + "house_captions", + "senate_captions", + "dvids_captions", + "reviewer", + "asr_word_confidence" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
5 tool updates
- Changed
govtube_get_coverage3 fields changed- added
Output schema / $defs / CorrectionEntryAdded value: +{ + "properties": { + "action": { + "enum": [ + "hidden", + "restored" + ], + "type": "string" + }, + "at": { + "type": "string" + }, + "event_date": { + "format": "date", + "type": "string" + }, + "id": { + "type": "integer" + }, + "reason": { + "type": "string" + }, + "rev": { + "type": "integer" + }, + "source_id": { + "type": "string" + }, + "source_name": { + "type": "string" + }, + "title": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "video_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "id", + "at", + "action", + "video_id", + "title", + "event_date", + "source_id", + "source_name", + "rev", + "reason" + ], + "type": "object" +} - added
Output schema / properties / correctionsAdded value: +{ + "items": { + "$ref": "#/$defs/CorrectionEntry" + }, + "type": "array" +} - added
Output schema / properties / revisedAdded value: +{ + "default": 0, + "type": "integer" +}
- Changed
govtube_get_video3 fields changed- added
Output schema / $defs / VideoLinkAdded value: +{ + "properties": { + "coverage": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "end_ms": { + "minimum": 0, + "type": "integer" + }, + "method": { + "const": "text_alignment", + "default": "text_alignment", + "type": "string" + }, + "start_ms": { + "minimum": 0, + "type": "integer" + }, + "tier": { + "enum": [ + "high", + "standard", + "bracketed" + ], + "type": "string" + }, + "video_id": { + "type": "string" + }, + "video_rev": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "video_id", + "video_rev", + "start_ms", + "end_ms", + "coverage", + "tier" + ], + "type": "object" +} - added
Output schema / $defs / VideoMeta / properties / video_deliveryAdded value: +{ + "anyOf": [ + { + "enum": [ + "delivered", + "not_found" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / VideoMeta / properties / video_linkAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/VideoLink" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
govtube_list_sessions2 fields changed- added
Input schema / properties / kindAdded value: +{ + "anyOf": [ + { + "enum": [ + "video", + "document" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "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.", + "title": "Kind" +} - changed
Input schema / properties / source / descriptionPrevious value: -"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)."New value: +"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."
- Changed
govtube_list_video_instances3 fields changed- added
Output schema / $defs / VideoLinkAdded value: +{ + "properties": { + "coverage": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "end_ms": { + "minimum": 0, + "type": "integer" + }, + "method": { + "const": "text_alignment", + "default": "text_alignment", + "type": "string" + }, + "start_ms": { + "minimum": 0, + "type": "integer" + }, + "tier": { + "enum": [ + "high", + "standard", + "bracketed" + ], + "type": "string" + }, + "video_id": { + "type": "string" + }, + "video_rev": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "video_id", + "video_rev", + "start_ms", + "end_ms", + "coverage", + "tier" + ], + "type": "object" +} - added
Output schema / $defs / VideoSummary / properties / video_deliveryAdded value: +{ + "anyOf": [ + { + "enum": [ + "delivered", + "not_found" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / VideoSummary / properties / video_linkAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/VideoLink" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
govtube_search_instances10 fields changed- added
Input schema / properties / playable_onlyAdded value: +{ + "default": false, + "description": "true: only results with playable video; transcript-only results (no video) are left out and counted in counts.transcript_only.", + "title": "Playable Only", + "type": "boolean" +} - changed
Input schema / properties / sort / descriptionPrevious value: -"newest (default): event date, newest first. most_instances: most instances first; check order_exact in the response."New value: +"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." - changed
Input schema / properties / source / descriptionPrevious value: -"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)."New value: +"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." - added
Output schema / $defs / CountPartAdded value: +{ + "properties": { + "exact": { + "type": "boolean" + }, + "instances": { + "type": "integer" + }, + "videos": { + "type": "integer" + } + }, + "required": [ + "instances", + "videos", + "exact" + ], + "type": "object" +} - added
Output schema / $defs / Counts / properties / playableAdded value: +{ + "$ref": "#/$defs/CountPart" +} - added
Output schema / $defs / Counts / properties / transcript_onlyAdded value: +{ + "$ref": "#/$defs/CountPart" +} - changed
Output schema / $defs / Counts / requiredPrevious value: -[ - "instances", - "videos", - "exact" -]New value: +[ + "instances", + "videos", + "exact", + "playable", + "transcript_only" +] - added
Output schema / $defs / VideoLinkAdded value: +{ + "properties": { + "coverage": { + "maximum": 1, + "minimum": 0, + "type": "number" + }, + "end_ms": { + "minimum": 0, + "type": "integer" + }, + "method": { + "const": "text_alignment", + "default": "text_alignment", + "type": "string" + }, + "start_ms": { + "minimum": 0, + "type": "integer" + }, + "tier": { + "enum": [ + "high", + "standard", + "bracketed" + ], + "type": "string" + }, + "video_id": { + "type": "string" + }, + "video_rev": { + "minimum": 1, + "type": "integer" + } + }, + "required": [ + "video_id", + "video_rev", + "start_ms", + "end_ms", + "coverage", + "tier" + ], + "type": "object" +} - added
Output schema / $defs / VideoSummary / properties / video_deliveryAdded value: +{ + "anyOf": [ + { + "enum": [ + "delivered", + "not_found" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / VideoSummary / properties / video_linkAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/VideoLink" + }, + { + "type": "null" + } + ], + "default": null +}
3 tool updates
- Changed
govtube_get_video5 fields changed- added
Output schema / $defs / PlaybackAsset / properties / made_for_kidsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / SpeakerInfo / properties / cluster / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / SpeakerInfo / properties / cluster / typeRemoved value: -"string" - added
Output schema / $defs / VideoMeta / properties / full_titleAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / VideoMeta / properties / full_title_truncatedAdded value: +{ + "default": false, + "type": "boolean" +}
- Changed
govtube_list_video_instances4 fields changed- added
Output schema / $defs / Excerpt / properties / highlightAdded value: +{ + "items": { + "$ref": "#/$defs/MatchSpan" + }, + "type": "array" +} - added
Output schema / $defs / PlaybackAsset / properties / made_for_kidsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / SpeakerInfo / properties / cluster / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / SpeakerInfo / properties / cluster / typeRemoved value: -"string"
- Changed
govtube_search_instances4 fields changed- added
Output schema / $defs / Excerpt / properties / highlightAdded value: +{ + "items": { + "$ref": "#/$defs/MatchSpan" + }, + "type": "array" +} - added
Output schema / $defs / PlaybackAsset / properties / made_for_kidsAdded value: +{ + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": null +} - added
Output schema / $defs / SpeakerInfo / properties / cluster / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - removed
Output schema / $defs / SpeakerInfo / properties / cluster / typeRemoved value: -"string"
6 tool updates
- Changed
govtube_get_coverage8 fields changed- added
Output schema / $defs / CoverageCollectionAdded value: +{ + "properties": { + "awaiting_review": { + "minimum": 0, + "type": "integer" + }, + "days": { + "anyOf": [ + { + "items": { + "$ref": "#/$defs/CoverageDay" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null + }, + "first_event_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "hours": { + "anyOf": [ + { + "type": "number" + }, + { + "type": "null" + } + ] + }, + "items": { + "minimum": 0, + "type": "integer" + }, + "key": { + "type": "string" + }, + "kind": { + "enum": [ + "video", + "document" + ], + "type": "string" + }, + "label": { + "type": "string" + }, + "last_event_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ] + }, + "rights_short": { + "type": "string" + }, + "short_name": { + "type": "string" + }, + "source_id": { + "type": "string" + }, + "speaker_labels": { + "minimum": 0, + "type": "integer" + }, + "speakers_confirmed": { + "minimum": 0, + "type": "integer" + }, + "unit": { + "type": "string" + }, + "units": { + "type": "string" + }, + "words": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "key", + "kind", + "source_id", + "label", + "unit", + "units", + "short_name", + "rights_short", + "items", + "first_event_date", + "last_event_date", + "hours", + "words", + "speaker_labels", + "speakers_confirmed", + "awaiting_review" + ], + "type": "object" +} - added
Output schema / $defs / CoverageDayAdded value: +{ + "properties": { + "event_date": { + "format": "date", + "type": "string" + }, + "items": { + "minimum": 0, + "type": "integer" + }, + "parts": { + "additionalProperties": { + "type": "integer" + }, + "type": "object" + }, + "url": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "words": { + "minimum": 0, + "type": "integer" + } + }, + "required": [ + "event_date", + "items", + "words" + ], + "type": "object" +} - added
Output schema / $defs / DocumentCoverageAdded value: +{ + "properties": { + "count": { + "default": 0, + "minimum": 0, + "type": "integer" + }, + "first_event_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "last_event_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "words": { + "default": 0, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" +} - added
Output schema / $defs / VideoCoverageAdded value: +{ + "properties": { + "awaiting_review": { + "default": 0, + "minimum": 0, + "type": "integer" + }, + "first_event_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "hours": { + "default": 0, + "type": "number" + }, + "last_event_date": { + "anyOf": [ + { + "format": "date", + "type": "string" + }, + { + "type": "null" + } + ], + "default": null + }, + "sessions": { + "default": 0, + "minimum": 0, + "type": "integer" + }, + "speaker_labels": { + "default": 0, + "minimum": 0, + "type": "integer" + }, + "speakers_confirmed": { + "default": 0, + "minimum": 0, + "type": "integer" + }, + "words": { + "default": 0, + "minimum": 0, + "type": "integer" + } + }, + "type": "object" +} - added
Output schema / properties / collectionsAdded value: +{ + "items": { + "$ref": "#/$defs/CoverageCollection" + }, + "type": "array" +} - added
Output schema / properties / documentsAdded value: +{ + "$ref": "#/$defs/DocumentCoverage" +} - added
Output schema / properties / videoAdded value: +{ + "$ref": "#/$defs/VideoCoverage" +} - changed
Output schema / requiredPrevious value: -[ - "videos", - "first_event_date", - "last_event_date", - "last_ingested_at", - "awaiting_review", - "known_gaps", - "total_hours", - "total_words", - "by_timing", - "sources", - "notes" -]New value: +[ + "videos", + "first_event_date", + "last_event_date", + "last_ingested_at", + "awaiting_review", + "known_gaps", + "total_hours", + "total_words", + "video", + "documents", + "collections", + "by_timing", + "sources", + "notes" +]
- Changed
govtube_get_video2 fields changed- added
Output schema / $defs / VideoMeta / properties / part_of_pageAdded value: +{ + "default": false, + "type": "boolean" +} - added
Output schema / $defs / VideoMeta / properties / record_deliveryAdded value: +{ + "anyOf": [ + { + "enum": [ + "not_spoken", + "may_include_not_spoken" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
govtube_list_sessions3 fields changed- changed
Input schema / properties / source / anyOfPrevious value: -[ - { - "enum": [ - "house_floor_clerk", - "senate_floor_and_committees", - "govinfo_dcpd", - "us_gov_youtube" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "house_floor_clerk", + "senate_floor_and_committees", + "govinfo_dcpd", + "govinfo_crec", + "us_gov_youtube" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / source / descriptionPrevious value: -"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) or us_gov_youtube (official U.S. government YouTube channels; see source_caveats)."New value: +"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)." - added
Output schema / $defs / McpSession / properties / collectionAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
govtube_list_video_instances3 fields changed- added
Output schema / $defs / McpInstance / properties / caption_checkAdded value: +{ + "default": "not_checked", + "enum": [ + "agrees", + "differs", + "not_checked" + ], + "type": "string" +} - added
Output schema / $defs / McpPassageInstance / properties / caption_checkAdded value: +{ + "default": "not_checked", + "enum": [ + "agrees", + "differs", + "not_checked" + ], + "type": "string" +} - added
Output schema / $defs / VideoSummary / properties / record_deliveryAdded value: +{ + "anyOf": [ + { + "enum": [ + "not_spoken", + "may_include_not_spoken" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
govtube_resolve_citation2 fields changed- added
Output schema / properties / caption_checkAdded value: +{ + "default": "not_checked", + "enum": [ + "agrees", + "differs", + "not_checked" + ], + "type": "string" +} - added
Output schema / properties / words_checkedAdded value: +{ + "default": false, + "type": "boolean" +}
- Changed
govtube_search_instances5 fields changed- changed
Input schema / properties / source / anyOfPrevious value: -[ - { - "enum": [ - "house_floor_clerk", - "senate_floor_and_committees", - "govinfo_dcpd", - "us_gov_youtube" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "house_floor_clerk", + "senate_floor_and_committees", + "govinfo_dcpd", + "govinfo_crec", + "us_gov_youtube" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / source / descriptionPrevious value: -"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) or us_gov_youtube (official U.S. government YouTube channels; see source_caveats)."New value: +"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)." - added
Output schema / $defs / McpInstance / properties / caption_checkAdded value: +{ + "default": "not_checked", + "enum": [ + "agrees", + "differs", + "not_checked" + ], + "type": "string" +} - added
Output schema / $defs / McpPassageInstance / properties / caption_checkAdded value: +{ + "default": "not_checked", + "enum": [ + "agrees", + "differs", + "not_checked" + ], + "type": "string" +} - added
Output schema / $defs / VideoSummary / properties / record_deliveryAdded value: +{ + "anyOf": [ + { + "enum": [ + "not_spoken", + "may_include_not_spoken" + ], + "type": "string" + }, + { + "type": "null" + } + ], + "default": null +}
5 tool updates
- Changed
govtube_get_video4 fields changed- added
Output schema / $defs / SourceChannelAdded value: +{ + "properties": { + "channel_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "channel_id", + "name", + "url" + ], + "type": "object" +} - added
Output schema / $defs / VideoMeta / properties / source_caveatsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / $defs / VideoMeta / properties / source_certaintyAdded value: +{ + "default": "unverified", + "enum": [ + "official_record", + "official_channel", + "unverified" + ], + "type": "string" +} - added
Output schema / $defs / VideoMeta / properties / source_channelAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/SourceChannel" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
govtube_list_sessions2 fields changed- changed
Input schema / properties / source / anyOfPrevious value: -[ - { - "enum": [ - "house_floor_clerk", - "senate_floor_and_committees", - "govinfo_dcpd" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "house_floor_clerk", + "senate_floor_and_committees", + "govinfo_dcpd", + "us_gov_youtube" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / source / descriptionPrevious value: -"Only one source: house_floor_clerk (U.S. House floor), senate_floor_and_committees (U.S. Senate floor and committee hearings) or govinfo_dcpd (White House transcripts, no video timing)."New value: +"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) or us_gov_youtube (official U.S. government YouTube channels; see source_caveats)."
- Changed
govtube_list_video_instances4 fields changed- added
Output schema / $defs / SourceChannelAdded value: +{ + "properties": { + "channel_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "channel_id", + "name", + "url" + ], + "type": "object" +} - added
Output schema / $defs / VideoSummary / properties / source_caveatsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / $defs / VideoSummary / properties / source_certaintyAdded value: +{ + "default": "unverified", + "enum": [ + "official_record", + "official_channel", + "unverified" + ], + "type": "string" +} - added
Output schema / $defs / VideoSummary / properties / source_channelAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/SourceChannel" + }, + { + "type": "null" + } + ], + "default": null +}
- Changed
govtube_resolve_citation2 fields changed- added
Output schema / properties / source_caveatsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / source_certaintyAdded value: +{ + "default": "unverified", + "enum": [ + "official_record", + "official_channel", + "unverified" + ], + "type": "string" +}
- Changed
govtube_search_instances6 fields changed- changed
Input schema / properties / source / anyOfPrevious value: -[ - { - "enum": [ - "house_floor_clerk", - "senate_floor_and_committees", - "govinfo_dcpd" - ], - "type": "string" - }, - { - "type": "null" - } -]New value: +[ + { + "enum": [ + "house_floor_clerk", + "senate_floor_and_committees", + "govinfo_dcpd", + "us_gov_youtube" + ], + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / source / descriptionPrevious value: -"Only one source: house_floor_clerk (U.S. House floor), senate_floor_and_committees (U.S. Senate floor and committee hearings) or govinfo_dcpd (White House transcripts, no video timing)."New value: +"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) or us_gov_youtube (official U.S. government YouTube channels; see source_caveats)." - added
Output schema / $defs / SourceChannelAdded value: +{ + "properties": { + "channel_id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "url": { + "type": "string" + } + }, + "required": [ + "channel_id", + "name", + "url" + ], + "type": "object" +} - added
Output schema / $defs / VideoSummary / properties / source_caveatsAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / $defs / VideoSummary / properties / source_certaintyAdded value: +{ + "default": "unverified", + "enum": [ + "official_record", + "official_channel", + "unverified" + ], + "type": "string" +} - added
Output schema / $defs / VideoSummary / properties / source_channelAdded value: +{ + "anyOf": [ + { + "$ref": "#/$defs/SourceChannel" + }, + { + "type": "null" + } + ], + "default": null +}
7 tool updates
- First observed
govtube_get_coverage - First observed
govtube_get_transcript_window - First observed
govtube_get_video - First observed
govtube_list_sessions - First observed
govtube_list_video_instances - First observed
govtube_resolve_citation - First observed
govtube_search_instances
Related MCP Connectors
Search experimental video history, read public records, follow sources and export citations.
Search declassified UAP/UFO government archives, geocoded sightings and cited entity profiles.
Span-grounded audits of how US outlets covered the same story, quotes checkable at the source.
Search speech in podcasts, government meetings, and your own audio: speakers, entities, timestamps.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceFull-text search and retrieval over official congressional documents (hearings, committee reports, Congressional Record) with citations and govinfo.gov links, designed for grounding AI answers in the official record.433 npmMIT
- AlicenseAqualityBmaintenanceEnables search and discourse analysis over Xi Jinping's publicly available speeches and official statements, including full-text retrieval, phrase-trend tracking, and verbatim quotes with source-linked citations.9MIT
- AlicenseAqualityAmaintenanceSearch a YouTube video's transcript and get back only the moments that answer the question, each with a clickable timestamp deep link. Also reads the video's frames — slides, charts, demos and on-screen text — and verifies every citation against recorded evidence before returning it9MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to search and retrieve the most quotable minutes from long interviews with AI founders, CEOs and researchers, returning each moment with the speaker, show, date, exact words and a link to cite. Supports topic, person, company and date filters, grouped answers to big AI questions, full moment lookups and transcript excerpts for verifying the exact wording.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.