# Smithsonian Open Access MCP

> Smithsonian Open Access connects your AI client to millions of museum records and scientific artifacts from the Smithsonian Institution's network. You query historical data using `search_records` for broad results, filter down with `search_category`, and pull full metadata payloads with `get_content`. It's programmatic access to global cultural heritage.

## Overview
- **Category:** knowledge-management
- **Price:** Free
- **Tags:** museum-records, digital-assets, historical-data, open-data, archival-research, cultural-heritage

## Description

You're tired of clicking through museum websites and digging up dust on digital asset networks just to find one piece of data. This connection lets your AI client talk directly to millions of Smithsonian records, covering everything from scientific artifacts to deep historical finds. You don't have to browse; you just ask.

When you first need to check the archives, you start with the `search_records` tool. It runs a wide-open query across every single department in the Smithsonian network, letting you plug in general keywords or concepts. This gives you a massive list of potential records when you don't know exactly which area holds what you’re looking for.

If that initial search comes back with too much noise—like finding 'pottery' but needing to filter it down to only the Art department, not Anthropology—you use `search_category`. This tool lets you narrow your scope by limiting results to specific fields or units. You can run a targeted query for things like 'Art,' 'History,' or 'Science.' It’s how you refine that massive list without having to adjust your initial search terms.

The system handles the full research cycle: first, you run `search_records` for broad coverage; then, if needed, you use `search_category` to focus that scope. Once you've filtered down and found a record ID you care about, you need all the details—the provenance, the description, every damn piece of metadata. For that, you call `get_content`. This tool pulls out the complete, detailed information payload for one specific object ID within the collection. It gives you everything attached to that item.

When you're building a project, your agent uses these three tools in sequence: run the general search with `search_records` to get keyword matches; use `search_category` if those results are too mixed up and need to be limited by discipline; then, take the specific ID that matters most and feed it into `get_content` to pull all the detailed descriptive data. You're not just getting a title or a date—you’re pulling the full package for global cultural heritage analysis.

## Tools

### search_category
Narrows down searches by limiting results to predefined units or fields like 'Art' or 'Science'.

### get_content
Pulls all detailed metadata (provenance, description) for a specific object ID in the collection.

### search_records
Performs a broad search query for records across all Smithsonian departments.

## Prompt Examples

**Prompt:** 
```
Search for records related to the Apollo 11 mission.
```

**Response:** 
```
I've found several records for the Apollo 11 mission, including the Command Module 'Columbia', lunar samples, and commemorative medals. Would you like the details for any of these items?
```

**Prompt:** 
```
Get the full details for the record with ID edanmdm:nmah_1313964.
```

**Response:** 
```
I've retrieved the metadata for ID edanmdm:nmah_1313964. This record corresponds to the 'Star-Spangled Banner', the flag that inspired the U.S. national anthem, currently held at the National Museum of American History.
```

**Prompt:** 
```
Search for 'impressionism' within the art category.
```

**Response:** 
```
Searching for 'impressionism' in the art category... I found works by Mary Cassatt, John Singer Sargent, and various French impressionist prints. Which artist or specific work should we explore?
```

## Capabilities

### Global Record Search
Find museum records across all Smithsonian departments using `search_records` with general keywords or concepts.

### Taxonomy Filtering
Limit your search scope to specific fields, like 'Art' or 'History,' by invoking the `search_category` tool.

### Metadata Extraction
Pull all detailed information—provenance, descriptions, and asset links—for a single object using its unique ID with `get_content`.

## Use Cases

### Tracing a specific historical object
A curator needs details on an unknown artifact. They first use `search_records` with keywords ('Civil War medal'). The results give them IDs. Then, they feed those promising IDs into `get_content` to pull the full provenance and history of each piece.

### Curating a themed educational module
An educator wants examples of early scientific tools. They use `search_category` to restrict results to 'Natural History' records, then refine the search within that category until they find enough material for their lesson plan.

### Broad market research on cultural assets
A developer needs a dataset of all art-related items. They start with `search_records` globally, but immediately narrow the results using `search_category` to filter only for 'Visual Arts' units before writing any code.

### Verifying source material for an academic paper
A student is researching a specific era. They ask their agent to search records related to the 1920s (`search_records`), find several IDs, and then use `get_content` on each one to pull verified metadata payloads for citation.

## Benefits

- You don't get generic search results. By using `search_records`, your agent pulls structured metadata on artifacts, specimens, and historical documents across the entire Smithsonian network.
- Instead of guessing where to look, use `search_category` to filter research immediately by field (e.g., 'American History'). This cuts down irrelevant noise in your results.
- When you find a promising ID, don't settle for basic info. Run `get_content` to pull the full payload—the provenance, detailed description, and asset links—for deep analysis.
- The system handles the complexity of multiple data sources. You just ask for 'Apollo 11 records,' and your agent orchestrates the necessary tool calls behind the scenes.
- It provides primary source data that's verifiable. This isn't general web scraping; it's programmatic access to established, cataloged collections.

## How It Works

The bottom line is, you treat the Smithsonian archive like a database connection through your AI client, bypassing manual web scraping entirely.

1. Subscribe to the server and enter your Smithsonian API Key.
2. Your AI client executes a tool call (e.g., `search_records`) based on your prompt's intent, querying the live EDAN network.
3. The MCP Server returns structured metadata results that your agent processes directly in your environment.

## Frequently Asked Questions

**How do I find a record across all Smithsonian units using search_records?**
You simply instruct your agent to run `search_records` with your general query. This tool queries the entire EDAN network, giving you results from every department.

**Is there a way to filter my search by art or history using search_category?**
Yes, use `search_category`. You specify the desired unit (like 'Art') and the tool filters all subsequent searches to only show records from that specific taxonomy.

**What information does get_content actually retrieve for an ID?**
`get_content` pulls comprehensive, deep metadata. It includes provenance, detailed descriptive text, and links to the digital assets associated with that record.

**Can I combine search_records and search_category in one go?**
While you can't force it into a single tool call, your agent is designed to chain them. You ask for 'Art from the 19th Century,' and the system runs `search_category` first, followed by a targeted `search_records`.

**How do I properly authenticate when using search_records?**
You must provide your specific Smithsonian API Key in the connection settings. This key authorizes all calls to search_records. Your AI client handles the authentication automatically after you connect it via MCP.

**If I use get_content with an invalid record ID, what error message should my AI client expect?**
The server returns a specific 'Record Not Found' code and details. Your agent can check this response to handle missing IDs gracefully without failing the entire process.

**Are there limitations on how many records I can query using search_records in a single run?**
The Smithsonian API enforces standard rate limits to prevent overuse. If you hit the limit, your agent will receive an HTTP 429 error and needs to pause before retrying.

**Does search_category allow filtering by non-museum data types, like scientific measurements?**
No, search_category maps only to defined Smithsonian collections and units. It restricts search results strictly to established cultural or historical metadata fields for accuracy.

**Can I search for specific historical figures across all Smithsonian museums?**
Yes! Use the `search_records` tool with your query (e.g., 'Abraham Lincoln'). It will return matching records, images, and artifacts from across all Smithsonian units.

**How do I get the full metadata for a specific museum object?**
Use the `get_content` tool with the unique identifier (ID) of the record. This will fetch detailed metadata, including descriptions, dates, and media links.

**Is it possible to limit my search to just art or science categories?**
Yes, the `search_category` tool allows you to specify a category (like 'art', 'history', or 'science') along with your search query to get more targeted results.