Reference retrieval for creative work — every result arrives license-tagged.
Search images, video, audio, and text as creative references across 18+ sources (The Met, Rijksmuseum, Openverse, Unsplash, Flickr, Internet Archive, Freesound, …) through one neutral API. Every result carries source + license + attribution + canonicalUrl, normalized per-result — so you can gate usage (commercial-product? ai-generation-input?) before an asset ever enters your pipeline.
import { createRefkit } from '@refkit/core'
import { openverse } from '@refkit/provider-openverse'
import { met } from '@refkit/provider-met'
const refkit = createRefkit({ providers: [openverse(), met()] })
// Fan out, RRF-merge, dedup — only return commercially-usable results:
const refs = await refkit.search({
query: 'cyberpunk alley at night',
modalities: ['image'],
gateFor: 'commercial-product',
})Multi-source search is a commodity. The hard part is rights: license normalization across wildly inconsistent source metadata, a strict-deny use-gate (allowed / allowed-with-attribution / denied / needs-review), and ready-to-paste attribution strings. refkit does that per-result, for visual and text references, in an embeddable BYOK SDK that agents can call directly (MCP server included).
@refkit/core |
The brain: contracts, license normalization, use-gate, RRF merge/dedup. Zero-network, only zod. |
@refkit/mcp |
MCP server — plug refkit into Claude and other agents. |
@refkit/provider-* |
Thin per-source satellites: openverse, met, rijksmuseum, artic, smithsonian, europeana, wikimedia-commons, unsplash, pexels, pixabay, flickr, internet-archive, freesound, jamendo, polyhaven, gutendex, poetrydb, brave |
Keyless providers work out of the box; API-key providers are BYOK.
pnpm add @refkit/core @refkit/provider-openverse @refkit/provider-met📖 Full docs & examples: refkitjs/refkit · 📦 npm: @refkit/*
Apache-2.0. Contributions welcome — especially new providers: the provider testkit makes a new source a small, well-tested package.