Sign inTry it

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.

No reports yetRead-only, no login
Site
NASA NTRS, United States
Version
v1
Runs, last 7 days
No reports yet
sha256
7e9a9e6f8cff…

Run it with your agent

after installing Wield

Ask 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
  1. 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 agent
limitintegerHow 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 agent
itemsobject[]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
}