Tool tree
gradeNot graded
search_researchAnswer
Full-text search across Penn Wharton Budget Model research. Returns canonical URLs with title, date, summary, and an excerpt. Each result carries matchedOn: "body" when the site holds the full text that matched, or "metadata" when only the title, summary, or tags were searched — legacy PDF briefs are always "metadata" because their analysis is in the PDF and no PDF text is indexed. Working papers and data interactives are matched on their catalog metadata, including working paper abstracts.
View tool JSON
{
"name": "search_research",
"kind": "answer",
"impl": "imperative",
"description": "Full-text search across Penn Wharton Budget Model research. Returns canonical URLs with title, date, summary, and an excerpt. Each result carries matchedOn: \"body\" when the site holds the full text that matched, or \"metadata\" when only the title, summary, or tags were searched — legacy PDF briefs are always \"metadata\" because their analysis is in the PDF and no PDF text is indexed. Working papers and data interactives are matched on their catalog metadata, including working paper abstracts.",
"inputSchema": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Search terms. Wrap in quotes for an exact phrase."
},
"kind": {
"type": "string",
"description": "Restrict results to one content kind."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"description": "Results to return. Defaults to 10, maximum 50."
},
"cursor": {
"type": "string",
"description": "Opaque cursor from a previous response."
}
},
"required": [
"query"
],
"additionalProperties": false
}
}list_researchAnswer
List Penn Wharton Budget Model research items filtered by kind, tag, author, and date range. Returns metadata rows, not body text — use get_research_item to read one. Data interactives carry no date, so a since/until filter drops them and reports how many; pass includeUndated to keep them. Draw tag and author values from list_research_facets.
View tool JSON
{
"name": "list_research",
"kind": "answer",
"impl": "imperative",
"description": "List Penn Wharton Budget Model research items filtered by kind, tag, author, and date range. Returns metadata rows, not body text — use get_research_item to read one. Data interactives carry no date, so a since/until filter drops them and reports how many; pass includeUndated to keep them. Draw tag and author values from list_research_facets.",
"inputSchema": {
"type": "object",
"properties": {
"kind": {
"type": "string",
"enum": [
"posts",
"pdfBriefs",
"estimates",
"workingPapers",
"blogEntry",
"data-interactives"
],
"description": "Restrict to one content collection."
},
"tag": {
"type": "string",
"description": "A tag or topic, matched case-insensitively."
},
"author": {
"type": "string",
"description": "An author id or exact author name."
},
"since": {
"type": "string",
"description": "ISO 8601 date; return items published on or after it."
},
"until": {
"type": "string",
"description": "ISO 8601 date; return items published on or before it."
},
"includeUndated": {
"type": "boolean",
"description": "Include items with no date when a since/until filter is applied. Defaults to false."
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"description": "Rows to return. Defaults to 25, maximum 100."
},
"cursor": {
"type": "string",
"description": "Opaque cursor from a previous response."
}
},
"additionalProperties": false
}
}list_research_facetsAnswer
List the content kinds, tags, and authors actually in use across the Penn Wharton Budget Model corpus, with a count for each. Every value returned here filters at least one row in list_research. Legacy PDF briefs and estimates contribute no authors — the site holds no author data for those items.
View tool JSON
{
"name": "list_research_facets",
"kind": "answer",
"impl": "imperative",
"description": "List the content kinds, tags, and authors actually in use across the Penn Wharton Budget Model corpus, with a count for each. Every value returned here filters at least one row in list_research. Legacy PDF briefs and estimates contribute no authors — the site holds no author data for those items.",
"inputSchema": {
"type": "object",
"properties": {},
"additionalProperties": false
}
}get_research_itemAnswer
Retrieve one Penn Wharton Budget Model research item by id, canonical url, or kind and slug, with its body text where the site holds body text. Legacy PDF briefs return metadata and a PDF URL with no body — their analysis is only in the PDF. Working papers return their abstract. A bare slug that matches more than one collection returns the list of matches and retrieves nothing. A truncated body can be read to completion by passing the returned bodyCursor back.
View tool JSON
{
"name": "get_research_item",
"kind": "answer",
"impl": "imperative",
"description": "Retrieve one Penn Wharton Budget Model research item by id, canonical url, or kind and slug, with its body text where the site holds body text. Legacy PDF briefs return metadata and a PDF URL with no body — their analysis is only in the PDF. Working papers return their abstract. A bare slug that matches more than one collection returns the list of matches and retrieves nothing. A truncated body can be read to completion by passing the returned bodyCursor back.",
"inputSchema": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "The stable identifier, \"<kind>:<slug>\"."
},
"url": {
"type": "string",
"description": "The canonical same-origin URL of the item."
},
"kind": {
"type": "string",
"enum": [
"posts",
"pdfBriefs",
"estimates",
"workingPapers",
"blogEntry",
"data-interactives"
],
"description": "The collection, used together with slug."
},
"slug": {
"type": "string",
"description": "The item slug. Ambiguous on its own for six slugs that span two collections."
},
"bodyCursor": {
"type": "string",
"description": "Cursor from a previous truncated response, to continue the same document."
},
"maxChars": {
"type": "integer",
"minimum": 1,
"maximum": 100000,
"description": "Body characters to return. Defaults to 40000, maximum 100000."
}
},
"additionalProperties": false
}
}