Search NASA technical reports.
Searches the NASA Technical Reports Server like its search page: title, authors, date, report type, NASA center, report number, abstract and link to the citation. Returns the first page of results (10 by default, up to 25) and the total number of matches.
- Site
- NASA NTRS, United States
- Version
- v1
- Runs, last 7 days
- No reports yet
- sha256
- 7e9a9e6f8cff…
Run it with your agent
after installing WieldAsk in plain words. Your agent finds this recipe and calls it:
“Search NASA technical reports.”
Read-only: it changes nothing on the site. No login needed.
{ "tool": "run", "arguments": { "recipe_id": "ntrs.nasa.gov/search-government", "params": { "limit": 10, "query": "propulsion" } } }
Requests
sent from your browser, in order- 1GET/api/citations/search?page.from&page.size&qThe site's own citations search API, read-only GET, the same call its search page makes. Results are JSON records with title, authors, dates and the citation id.
Parameters
from your agentlimitintegerHow many results to return, 1 to 25 = 10
querystringrequiredTopic or words to look for in NASA reports, e.g. 'propulsion', 'heat shield', 'Mars rover'
Returns
to your agentitemsobject[]abstract, authors, center, date, downloads_available, report_number, report_type, title, url
querystring
totalintegerNumber of matching reports in the whole index
Where it can send
- ntrs.nasa.gov
Anything else is blocked by the extension.
Reads from your session
Nothing. Your browser attaches the site's cookies by itself.
Used only in requests to the addresses on the left. Never sent to wield.run or your agent.
Checks
a run passes when- length(output.items) > `0`
- length(output.items[?starts_with(url, 'https://ntrs.nasa.gov/citations/')]) == length(output.items)
- length(output.items[?title != `null`]) == length(output.items)
Raw recipe
Served as canonical JSON from /api/v1/recipes/ntrs.nasa.gov/search-government, so its sha256 matches the ETag and the index.
Check it yourself
curl -s https://wield.run/api/v1/recipes/ntrs.nasa.gov/search-government | shasum -a 256 # 7e9a9e6f8cff5ad73de2bef672c43cc300c8f7728dfb1b4190586bda511c05ad
ntrs.nasa.gov/search-government.json, v1
{ "description": "Searches the NASA Technical Reports Server like its search page: title, authors, date, report type, NASA center, report number, abstract and link to the citation. Returns the first page of results (10 by default, up to 25) and the total number of matches.", "effect": "read", "id": "ntrs.nasa.gov/search-government", "keywords": [ "nasa", "ntrs", "technical reports", "reports", "research", "space", "aerospace", "propulsion", "mars", "forschungsberichte", "raumfahrt", "luft- und raumfahrt", "publications", "ntrs.nasa.gov" ], "output": { "schema": { "properties": { "items": { "items": { "properties": { "abstract": { "type": [ "string", "null" ] }, "authors": { "items": { "type": "string" }, "type": "array" }, "center": { "type": [ "string", "null" ] }, "date": { "description": "Date the record was created, ISO 8601", "type": [ "string", "null" ] }, "downloads_available": { "type": "boolean" }, "report_number": { "description": "Accession number, e.g. '67N12116'", "type": [ "string", "null" ] }, "report_type": { "description": "e.g. 'Contractor Report (CR)'", "type": [ "string", "null" ] }, "title": { "type": "string" }, "url": { "type": "string" } }, "required": [ "title", "url" ], "type": "object" }, "type": "array" }, "query": { "type": "string" }, "total": { "description": "Number of matching reports in the whole index", "type": [ "integer", "null" ] } }, "required": [ "query", "items" ], "type": "object" }, "value": "{query: params.query, total: steps.search.total, items: steps.search.results[?title != `null` && id != `null`].{title: title, url: join('', ['https://ntrs.nasa.gov/citations/', to_string(id)]), authors: authorAffiliations[].meta.author.name || `[]`, date: created, report_type: stiTypeDetails, center: center.name, report_number: legacyMeta.accessionNumber || `null`, abstract: abstract, downloads_available: downloadsAvailable == `true`}}" }, "params": { "additionalProperties": false, "properties": { "limit": { "default": 10, "description": "How many results to return, 1 to 25", "maximum": 25, "minimum": 1, "type": "integer" }, "query": { "description": "Topic or words to look for in NASA reports, e.g. 'propulsion', 'heat shield', 'Mars rover'", "maxLength": 100, "minLength": 2, "type": "string" } }, "required": [ "query" ], "type": "object" }, "provenance": { "method": "har", "notes": "The search page at /search?q= is an Angular app that calls GET /api/citations/search with q, page.from and page.size (checked in the page's bundle and by direct calls). The JSON results carry title, authors (authorAffiliations), created date, stiTypeDetails, center, accession number and abstract. Citation links are /citations/<id>. Data comes from the NTRS index.", "recorded_at": "2026-11-08T16:40:00Z", "recorded_by": "wield-forge (claude-haiku agent)" }, "requires_login": false, "schema": "https://wield.run/schema/recipe/v1.json", "site": { "country": "US", "id": "ntrs.nasa.gov", "language": "en", "name": "NASA NTRS", "origin": "https://ntrs.nasa.gov", "origins": [ "https://ntrs.nasa.gov" ] }, "steps": [ { "description": "The site's own citations search API, read-only GET, the same call its search page makes. Results are JSON records with title, authors, dates and the citation id.", "expect": { "content_type": "json", "status": [ 200 ] }, "extract": { "json": { "results": "results", "total": "stats.total" } }, "id": "search", "request": { "headers": { "Accept": "application/json" }, "method": "GET", "query": { "page.from": "0", "page.size": "{{params.limit}}", "q": "{{params.query}}" }, "url": "/api/citations/search" } } ], "task": "Search NASA technical reports", "tos": { "notes": "Not reviewed. One search page per call, the same page a visitor loads. The site's terms on automated access were not checked.", "reviewed": false }, "verify": { "checks": [ "length(output.items) > `0`", "length(output.items[?starts_with(url, 'https://ntrs.nasa.gov/citations/')]) == length(output.items)", "length(output.items[?title != `null`]) == length(output.items)" ], "example_params": { "limit": 10, "query": "propulsion" }, "max_ms": 5000 }, "version": 1 }