Look up software in NASA's public Software Catalog by free-text keyword or by canonical case number, returning structured records with title, description, NASA field center, category, release type, version, dates, and download URL.
Works with
AI-first code editor with Composer
Before installing skills in Cursor, ensure your development environment meets these requirements:
node --versionlookup-softwareExecute the skills CLI command in your project's root directory to begin installation:
Fetches lookup-software from software.nasa.gov/lookup-software-contract-54tcpr and configures it for Cursor.
The CLI shows a list of agents. Use arrow keys and space to select Cursor:
Confirm successful installation by checking the skill directory location:
Restart Cursor to activate lookup-software. Access via /lookup-software in your agent's command palette.
We perform automated surface-level scans (Gen AI Scanner, Socket, Snyk) during installation. These checks detect common vulnerabilities but do not guarantee complete security. Always review skill source code and verify the publisher's reputation before production use.
Skills execute code in your environment. Always review source, verify the publisher, and test in isolation before production.
Submit your Claude Code skill and start earning
Automate repetitive workflows and reduce manual effort
Example
Generate reports, summarize documents, draft communications
Save 3-5 hours per week on routine tasks
Learn new skills, understand complex topics, get expert guidance
Example
Explain concepts, provide examples, suggest learning resources
Accelerate learning and skill development by 2x
Enhance output quality through reviews, suggestions, and refinements
Example
Review drafts, suggest improvements, catch errors
Improve work quality by 30-40% with less effort
0
total installs
0
this week
0
upvotes
Run in your terminal
0
installs
0
this week
—
stars
| name | lookup-software |
| title | NASA Software Catalog Lookup |
| description | >- Look up software in NASA's public Software Catalog by free-text keyword or by canonical case number, returning structured records with title, description, NASA field center, category, release type, version, dates, and download URL. |
| website | software.nasa.gov |
| category | research |
| tags | - nasa - software-catalog - research - open-source - government |
| source | 'browserbase: agent-runtime 2026-05-18' |
| updated | '2026-05-18' |
| recommended_method | api |
| alternative_methods | - method: url-param rationale: >- For exact-case-number lookup, GET https://software.nasa.gov/software/{case_number} returns a server-rendered detail page (200=exists, 404=not-found). Preferred over the search API for direct ID resolution because the search API does fuzzy prefix matching on case numbers. - method: browser rationale: >- Only when the JSON endpoint is unreachable. The public search page at /search/multi/{center}/software/9/{query} is server-side rendered for the first 9 hits but costs ~5× more than the API path and requires extra JS execution for pagination. |
| verified | false |
| proxies | false |
Look up software in NASA's public Software Catalog (software.nasa.gov) — either by free-text keyword (returning a ranked list of matching titles) or by canonical NASA case number (returning the full record for a single piece of software). For each hit, returns: case number, title, marketing/technical descriptions, NASA field center, category, release type, version, dates, and any external download URL. Read-only; never submits the "Request Software" form.
LAR-18744-1" — direct lookup by case number.The software.nasa.gov front-end is a thin client over a public Elasticsearch-backed JSON endpoint at /searchapi/multi/{center}/software/{offset}/9/{query}. No auth, no cookies, no rate-limit headers, no anti-bot Verified — plain HTTPS GET works from any IP. Page size is hard-coded to 9. Lead with the API path; the browser path is a fallback only.
Get the total result count (one HTML round-trip — the API itself does not return a count).
GET https://software.nasa.gov/search/multi/{center}/software/9/{query}
{center} — one of: aw (agency-wide / all), arc (Ames), dfrc (Armstrong), grc (Glenn), gsfc (Goddard), jpl (JPL), jsc (Johnson), ksc (Kennedy), larc (Langley), msfc (Marshall), ssc (Stennis).{query} — URL-encoded keyword(s). Spaces → %20. Hyphens allowed.Parse total from one of (both present in the HTML):
<div class="searchCount">(\d+) Search Results for "..."</div>let total=<N>;Fetch matching records via the JSON API, paginating by offset = 0, 9, 18, … until the API returns [] or offset ≥ total.
GET https://software.nasa.gov/searchapi/multi/{center}/software/{offset}/9/{query}
Returns a JSON array of Elasticsearch hits:
[
{
"_index": "t2pd.software",
"_id": "544057a42841f54dacba7027",
"_score": 1,
"_source": { /* full software record — see "Expected Output" */ }
},
...
]
The 24 fields in _source (e.g. case_number, marketing_title, marketing_desc, tech_title, sw_desc, category, center, release_type, sw_version, sw_url, release_aisc_date, revision_date) are the canonical record and are richer than the rendered card or the public detail page — you usually do not need step 3.
(Optional) Fetch the public detail page for a single hit if you need the rendered "Contact Us" email, the FAQ-formatted release-type explainer, or a visual screenshot:
GET https://software.nasa.gov/software/{case_number}
Returns server-rendered HTML; the <h1> is {marketing_title}({case_number}) and labeled rows under "Software Details" carry Category, Reference Number, Release Type, and Operating System. The detail page is strictly a subset of the JSON record — there is no information here the API does not already have.
If the user already knows the canonical case number (e.g. LAR-18744-1, NPO-50498-1, GSC-15016-1), do not use the search API — it does a fuzzy multi-field match on the case-number string and returns center-prefix-mates ranked above the exact match (e.g. searching LAR-18744-1 returns LAR-19278-1 as the top hit, not the exact match). Instead:
Hit the detail URL directly:
GET https://software.nasa.gov/software/{case_number}
200 with <h1>...({case_number})</h1> → exists. Parse <h1> and the "Software Details" rows for category, release type, etc.404 → unknown case number.(Optional) Backfill the rich JSON record by extracting the marketing title from the <h1> and querying the search API with that title — the exact-title query lands the canonical record as hit #1 with all 24 _source fields.
For "did you mean" suggestions on a partial query (≥ 4 chars), call:
GET https://software.nasa.gov/searchsuggestions/{partial}
Returns {"success": true, "data": ["trajectory", "trajectory optimization", ...]} (up to 10 strings) or [] if no matches. Useful for query expansion before the main search call. Returns [] for queries shorter than 3-4 characters.
Use only when the JSON endpoint is unreachable (sanctions, network policy, or — extremely rare — the Drupal cache is misbehaving). The public search page https://software.nasa.gov/search/multi/{center}/software/9/{query} is fully server-side rendered for the first 9 hits (Drupal Views) — no JS execution required to read them. Extract:
<div class="result"> block, each containing:
<a href="https://software.nasa.gov/software/([A-Z0-9\-]+)"> (also the anchor text)<div class="title">([^<]+)</div> (the marketing_title)<div class="description">([^<]+)</div> (the marketing_desc, truncated)<div class="category">([^<]+)</div> (re-uses the category class but carries the release_type text — confusingly named)<div class="searchCount">(\d+) Search Results (also let total=<N>; in the in-page JS).viewMore JS (document.querySelector(".viewMore").click() per +9 batch) — much more expensive than just hitting the JSON endpoint at the next offset. Skip the browser entirely once you have the count./searchapi/software/{query}/software/{page}/9/ — that endpoint always returns [] for every query, every offset, every center (confirmed across multiple iterations 2026-05-18). The actually-working endpoint is /searchapi/multi/{center}/software/{offset}/9/{query} — note the segment order: {offset}/9/{query} is correct, not {offset}/{query} (the trailing /9/ is the page size and must be present — without it the query parameter is silently ignored and you get the unfiltered agency-wide pager). This was the highest-cost discovery during scaffolding; the URL inside the page's JS is stale./9/, wrong segment order, using aw in the query slot, etc.) returns the unfiltered top-9 of the catalog with HTTP 200 — there is no error signal. Always verify by submitting a query you know is unique (e.g. TPSSizer) and confirming the response shape matches expectations (hit count should be small for unique terms).class="searchCount" and inline let total=<N>;). Either fetch the HTML once at offset=0 to grab the count, or paginate blindly until you get []./9/ in the path is the size and is not overridable — /10/, /100/, etc. all return {} (empty object, not an array) or []. Plan pagination in increments of 9.q="", q=" ", q="x" all return 9 results sorted by the catalog's default order (ARC entries first), not an error. Validate the query is ≥ 2 characters before issuing the request and treat short-query responses as "browse" rather than "search-result".case_number strings does a fuzzy match on the prefix and ranks center-prefix-mates above the exact case (e.g. LAR-18744-1 returns LAR-19278-1 as hit #1). For exact-id lookup, fetch https://software.nasa.gov/software/{case_number} directly (HTTP 200 = exists, 404 = unknown).category field on result cards is actually release_type. In the rendered HTML (<div class="category">) the value is the release-type enum (Open Source, General Public Release, U.S. Release Only, U.S. and Foreign Release, U.S. Government Purpose Release), not the technical category. The actual technical category lives in _source.category (lowercase) / _source.sw_category (title-case display). Don't conflate them.{center} values: aw, arc, dfrc, grc, gsfc, jpl, jsc, ksc, larc, msfc, ssc. Unknown values return []. JPL's _source.center is JPL even though its case-numbers are NPO-* (legacy Jet Propulsion lab "Naval Propellant Office" prefix), not JPL-*. Don't try to infer center from case-number prefix.https://software.nasa.gov/software/category/{slug}/{center}/{page}/ returns an empty results div — these pages depend on JS to fetch and render their hits. There is no public JSON endpoint for category-browse (only the keyword /searchapi/multi/.../{query} endpoint, which does not accept a category filter). If you need category-scoped results, either: (a) call the keyword API with the category slug as the query (e.g. q=propulsion) — produces approximate results, or (b) call the keyword API for every term you care about and filter client-side on _source.category.X-Drupal-Cache: HIT on most responses; Cache-Control: must-revalidate, no-cache, private is ignored by the CloudFront layer in practice. Newly-added software entries may take up to a few minutes to appear. The revision_date field in _source is the canonical "last modified" timestamp.sw_url is sparsely populated. Open-source codes typically have a non-empty sw_url pointing to a GitHub/SourceForge/lab page; export-controlled codes (U.S. Release Only, U.S. Government Purpose Release) leave it blank and require the "Request Software" form (which this skill does not exercise).sw_version_date: "1970-01-01T08:00:00.000Z" is a sentinel for "no version date". Treat as null. (The 8:00 offset is PST epoch-zero — a Drupal default.)software.nasa.gov through a Browserbase remote session requires resolving connect.{region}.browserbase.com (WSS/CDP endpoint), which is firewalled in some agent runtime environments — only api.browserbase.com (REST gateway, used by browse cloud fetch/browse cloud search) is reachable. This is fine for this skill since the JSON API path needs only HTTPS GETs — but it means automated screenshots may not be available depending on your sandbox.One object per matching software. Pull the entire _source block — there are no positional arrays or decode tables to worry about; every field is named.
{
"query": "trajectory",
"center": "aw",
"total": 53,
"results": [
{
"case_number": "LAR-18744-1",
"marketing_title": "Low Fidelity Space Systems Analysis Tools-Heliocentric Trajectory Tool",
"marketing_desc": "This tool is produced is take advantage of pre-existing resources of known lambert trajectory solutions to various bodies, NEA's and more. ...",
"tech_title": "Low Fidelity Space Systems Analysis Tools-Heliocentric Trajectory Tool",
"sw_desc": "Full technical description (often longer than marketing_desc)...",
"category": "design and integration tools",
"sw_category": "Design and Integration Tools",
"center": "LARC",
"release_type": "U.S. Release Only",
"sw_version": "1.0",
"sw_version_date": "1970-01-01T08:00:00.000Z",
"release_aisc_date": "2016-07-14T07:00:00.000Z",
"revision_date": "2016-07-14T07:00:00.000Z",
"sw_url": "",
"sw_operating_system": "",
"reference_number": "LAR-18744-1",
"client_record_id": "LAR-18744-1",
"id": "software_release_LAR-18744-1",
"aisc_keyword": "",
"catalog_note": "",
"more_sw_info": "",
"search": "(deduplicated full-text blob)",
"title": "Low Fidelity Space Systems Analysis Tools-Heliocentric Trajectory Tool",
"detail_url": "https://software.nasa.gov/software/LAR-18744-1"
}
],
"next_offset": 9
}
{
"case_number": "LAR-18744-1",
"found": true,
"title": "Low Fidelity Space Systems Analysis Tools-Heliocentric Trajectory Tool",
"category": "Design and Integration Tools",
"release_type": "U.S. Release Only",
"operating_system": null,
"detail_url": "https://software.nasa.gov/software/LAR-18744-1",
"description": "Overview text from the rendered detail page...",
"contact_email": "[email protected]"
}
{
"case_number": "ZZZ-99999-1",
"found": false,
"detail_url": "https://software.nasa.gov/software/ZZZ-99999-1",
"http_status": 404
}
{
"query": "nonexistentxyz",
"center": "aw",
"total": 0,
"results": [],
"next_offset": null
}
{
"partial": "traj",
"suggestions": [
"trajectory",
"trajectory optimization",
"trajectories",
"trajectory model",
"trajectory estimation"
]
}
Prerequisites
Time Estimate
15-45 minutes depending on use case complexity
Steps
Common Pitfalls
✓ Do
✗ Don't
💡 Pro Tips
✓ Use when
Use when skill capabilities match your task, clear ROI on time saved, and you can validate outputs. Best for repetitive tasks, learning, and quality improvement.
✗ Avoid when
Avoid when task requires deep expertise you can't validate, involves sensitive decisions, or when learning process is more valuable than speed of completion.
BuilderIO/skills
ailabs-393/ai-labs-claude-skills
affaan-m/everything-claude-code
kostja94/marketing-skills
kesslerio/academic-deep-research-clawhub-skill
davila7/claude-code-templates
We added lookup-software from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
Registry listing for lookup-software matched our evaluation — installs cleanly and behaves as described in the markdown.
Solid pick for teams standardizing on skills: lookup-software is focused, and the summary matches what you get after install.
lookup-software has been reliable in day-to-day use. Documentation quality is above average for community skills.
Solid pick for teams standardizing on skills: lookup-software is focused, and the summary matches what you get after install.
Keeps context tight: lookup-software is the kind of skill you can hand to a new teammate without a long onboarding doc.
Useful defaults in lookup-software — fewer surprises than typical one-off scripts, and it plays nicely with `npx skills` flows.
lookup-software reduced setup friction for our internal harness; good balance of opinion and flexibility.
lookup-software has been reliable in day-to-day use. Documentation quality is above average for community skills.
We added lookup-software from the explainx registry; install was straightforward and the SKILL.md answered most questions upfront.
showing 1-10 of 70