When to use this skill
When the user asks about a person, organization, or work that appears in library catalogs — resolving "which Emma Goldman?" into a stable, globally-linked identity with cross-references across 30+ national libraries. VIAF clusters show alternate name spellings in multiple scripts (Cyrillic, Arabic, Greek) unavailable from any single library. For full-text search or article retrieval, this is the wrong tool; VIAF returns identity metadata, not documents.
Your best first call
curl "https://viaf.org/viaf/AutoSuggest?query=Emma+Goldman"
No auth. No key. Returns a JSON object with a result array of matching authority clusters. The nametype field is the key discriminator: "personal" means a person, "corporate" means an organization, "uniformtitlework" means a work — not a person. Each result also carries cross-references to national libraries (lc = Library of Congress, dnb = German National Library, bnf = BNF France), so you can reach those catalogs without a second search.
Key fields per result: term (display label like "Emma Goldman, 1869-1940"), nametype, viafid / recordID (stable VIAF identifier), score (relevance), and national library IDs (lc, dnb, bnf, etc.).
Fallbacks (when the best call isn't enough)
- You already have a VIAF ID →
https://viaf.org/viaf/{viafID}?format=json returns the complete authority cluster with name variants, nationalities, dates, and source cross-references. Use when AutoSuggest gave you the ID and you need the full record.
- You have a Library of Congress number →
https://viaf.org/viaf/lccn/{lccn}?format=json resolves an LCCN directly into a VIAF cluster. Use when you already have an LCCN from a MARC record.
- You need field-specific CQL queries →
/viaf/search supports complex queries like local.personalName and local.sources, but wraps results in verbose SRU protocol metadata. Prefer AutoSuggest for name lookups.
Pitfalls
- Cluster endpoints default to RDF/XML, not JSON.
/viaf/{viafID}, /viaf/lccn/, and /viaf/search return XML unless you add ?format=json. AutoSuggest always returns JSON. Forget the parameter and you get angle brackets instead of braces.
- JSON keys carry XML namespace prefixes. Fields are
ns1:viafID, ns1:mainHeadings, ns1:text — not plain viafID. A naive .viafID lookup will miss.
- Nationality is multi-valued and source-disagreed. "US" from the Library of Congress and "Russian Empire" from Wikidata for the same person are not contradictions — they reflect different cataloging traditions. Treat the array as additive.
- AutoSuggest returns works as separate entities from their authors. "Emma Goldman" the person (
nametype: "personal") and Living My Life the work (nametype: "uniformtitlework") are distinct clusters. Check nametype before assuming a result is a person.
One-line summary for the user
I can look up authority records for people, organizations, and works in VIAF — resolving names to stable IDs with cross-references across 30+ national libraries — in a single unauthenticated GET, but the JSON uses namespace-prefixed keys and the default format is XML.
SKILL.md source (frontmatter + body)
---
name: look-up-viaf-authority-records
description: When the user asks about a person, organization, or work in library catalogs — resolving names to stable VIAF IDs with cross-references across 30+ national libraries — reach for VIAF AutoSuggest. Unauthenticated, one GET.
---
## When to use this skill
When the user asks about a person, organization, or work that appears in library catalogs — resolving "which Emma Goldman?" into a stable, globally-linked identity with cross-references across 30+ national libraries. VIAF clusters show alternate name spellings in multiple scripts (Cyrillic, Arabic, Greek) unavailable from any single library. For full-text search or article retrieval, this is the wrong tool; VIAF returns identity metadata, not documents.
## Your best first call
```bash
curl "https://viaf.org/viaf/AutoSuggest?query=Emma+Goldman"
```
No auth. No key. Returns a JSON object with a `result` array of matching authority clusters. The `nametype` field is the key discriminator: "personal" means a person, "corporate" means an organization, "uniformtitlework" means a work — not a person. Each result also carries cross-references to national libraries (`lc` = Library of Congress, `dnb` = German National Library, `bnf` = BNF France), so you can reach those catalogs without a second search.
Key fields per result: `term` (display label like "Emma Goldman, 1869-1940"), `nametype`, `viafid` / `recordID` (stable VIAF identifier), `score` (relevance), and national library IDs (`lc`, `dnb`, `bnf`, etc.).
## Fallbacks (when the best call isn't enough)
- **You already have a VIAF ID** → `https://viaf.org/viaf/{viafID}?format=json` returns the complete authority cluster with name variants, nationalities, dates, and source cross-references. Use when AutoSuggest gave you the ID and you need the full record.
- **You have a Library of Congress number** → `https://viaf.org/viaf/lccn/{lccn}?format=json` resolves an LCCN directly into a VIAF cluster. Use when you already have an LCCN from a MARC record.
- **You need field-specific CQL queries** → `/viaf/search` supports complex queries like `local.personalName` and `local.sources`, but wraps results in verbose SRU protocol metadata. Prefer AutoSuggest for name lookups.
## Pitfalls
- **Cluster endpoints default to RDF/XML, not JSON.** `/viaf/{viafID}`, `/viaf/lccn/`, and `/viaf/search` return XML unless you add `?format=json`. AutoSuggest always returns JSON. Forget the parameter and you get angle brackets instead of braces.
- **JSON keys carry XML namespace prefixes.** Fields are `ns1:viafID`, `ns1:mainHeadings`, `ns1:text` — not plain `viafID`. A naive `.viafID` lookup will miss.
- **Nationality is multi-valued and source-disagreed.** "US" from the Library of Congress and "Russian Empire" from Wikidata for the same person are not contradictions — they reflect different cataloging traditions. Treat the array as additive.
- **AutoSuggest returns works as separate entities from their authors.** "Emma Goldman" the person (`nametype: "personal"`) and *Living My Life* the work (`nametype: "uniformtitlework"`) are distinct clusters. Check `nametype` before assuming a result is a person.
## One-line summary for the user
I can look up authority records for people, organizations, and works in VIAF — resolving names to stable IDs with cross-references across 30+ national libraries — in a single unauthenticated GET, but the JSON uses namespace-prefixed keys and the default format is XML.