CANOA — Corpus Apertum Nummorum Orbis Antiqui | Открытый каталог монет древнего мира Перейти к содержимому

золотая монета Нерон

RIC I (second edition) Nero 52

Аверс: Head of Nero, laureate, right, with beard
Реверс: Jupiter, bare to waist, cloak round lower limbs, seated, left on throne, holding thunderbolt in right hand and long sceptre in left

Смотреть монету Весь каталог Создать свою коллекцию

Изображение: © British Museum · лицензия

RIC I (second edition) Nero 52 obv

О проекте

Открытый корпус монет древнего мира: чекан Греции, Рима, Персии, Карфагена и других цивилизаций — с датировками, метрологией, легендами и изображениями из музейных коллекций.

Изображения монет принадлежат музеям — держателям коллекций и используются в соответствии с политикой открытого доступа каждого музея (многие коллекции разрешают только некоммерческое использование с указанием авторства). Лицензия каждой коллекции указана на странице «О проекте». Данные о типах монет — типы, легенды, метрология — открыты на условиях Open Database License (ODbL).

Данные отдельных источников доступны на условиях исходных лицензий, включая ограничения на коммерческое использование.

Для школ: Canoa // edu превращает каталог в готовые задания для LMS (Canvas, Schoology, Moodle) по LTI 1.3 — у каждого ученика своя монета, автопроверка, FERPA.

о проекте · данные · самая частая монета · скиллы на github · DOI (Zenodo) · skills.sh

Скиллы для агентов: canoa-api (работа с API) и canoa-hoard-analysis (анализ кладов региона → распределение монет по императорам/периодам → графики → PDF-статья). Установка: npx skills add canoa-dev/canoa-skills

API для LLM

эндпоинт описание
GET /api/search?q=<текст> Автодополнение: правители, монетные дворы, номиналы и монеты. Ответ — JSON {results:[…]} с полями type, label, url, count.
GET /api/coin/<id>/ Полная JSON-карточка монеты: легенды, метрология, датировка, монетный двор, правитель, изображения.
GET /api/coins/<slug>/ карточка монеты по slug (стабильный URL из /api/coins)
GET /api/coins?q=<…>&authority=<uri>&mint=<id> список монет в JSON с фильтрами (q, authority, mint, denomination, material, dataset, has_image, date_from, date_to, sort, page, per_page); mint — числовой id из /api/filter-options?field=mint; sort=specimens/-specimens — по числу музейных экземпляров (самые частые первыми / самые редкие первыми); у каждого типа — поле specimen_count
GET /api/filter-options?field=<…> Справочные значения для фильтров каталога (authority, denomination, material, mint): value, label, label_en, count.
GET /api/mints.geojson Монетные дворы в GeoJSON, фильтры: authority, denomination, material, dataset.
GET /api/hoards?lat_min=&lat_max=&lon_min=&lon_max= клады в регионе (ограничивающий прямоугольник по координатам места находки); + q, dataset, page, per_page
GET /api/hoards/<id>/ клад детально: типы монет с правителем, монетным двором и датировкой
GET /api/authorities полный список правителей/императоров с числом типов; + q, has_types, page, per_page
GET /api/authorities/<id>/ правитель детально + его типы монет (постранично)
GET /api/mints полный список монетных дворов с координатами и числом типов
GET /api/regions регионы/цивилизации с числом типов
GET /api/dies штемпели (Roman Republican Die Project); + q, die_type
GET /api/denominations, /api/materials полные справочники номиналов и материалов с числом типов
GET /api/stats статистика каталога (типы, экземпляры, клады, дворы, правители…)
GET /api/coins/<id>/specimens музейные экземпляры монеты с метриками (вес, диаметр, ось, коллекция) и specimen_url у каждого
GET /api/specimens/<id>/ карточка отдельного экземпляра — прямое машинное зеркало внешней записи коллекции (finds.org.uk, Британский музей и др.)
GET /api/coins?hoard_id=<id> типы монет конкретного клада
GET /api/crawlers?days=<n> статистика трафика краулеров и ботов за период: категории, коды HTTP, топ путей/IP/user-agent; параметры: days (1–14, по умолч. 7) или from/to (ГГГГ-ММ-ДД)
GET /llms.txt Инструкция для LLM-краулеров: разделы сайта, данные, лицензия.
GET /llms-full.txt полная документация для LLM: модель данных и полный справочник API
GET /agents.md инструкции для автономных агентов и краулеров: рабочий процесс, цитирование, ограничения
GET /hermes.md инструкции для Hermes Agent (Nous Research)

Страницы для человека: /search/ · /coins/<slug>/ · /data/

Зачем нужен API

API отдаёт те же данные, что и страницы каталога, но в JSON — без парсинга HTML. LLM-агенты, краулеры и исследователи получают структурированные списки монет, карточки и значения фильтров; ответы можно использовать для сводок и таблиц.

Пример: монеты Нерона, отчеканенные в Риме

  1. Поиск правителя: /api/search?q=Nero → результат ruler с uri=http://nomisma.org/id/nero
  2. Значения фильтров: /api/filter-options?field=mint → id Рима (Rome = 36)
  3. Список монет: /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100 → JSON: label, каталожный номер, датировки, url каждой монеты

Пример: самые коллекционируемые типы монет

  1. Сортировка по числу музейных экземпляров, самые частые первыми: curl "https://canoanumis.org/api/coins?sort=specimens&per_page=5"
  2. Каждый элемент results содержит: ocre_id (каталожный номер, напр. ric.1(2).ner.1), mint/mint_id, authority/authority_uri (nomisma.org), date_from/date_to (годы, отрицательные = до н.э.), image (URL, пусто, если файл утрачен), specimen_count (музейные экземпляры типа)

Функции API

  • search, filter-options — поиск правителей, монетных дворов, номиналов и значений фильтров (URI nomisma.org, числовые id дворов)
  • coins — списки монет с фильтрами; карточка монеты — /api/coin/<id>/ или /api/coins/<slug>/
  • coins/<id>/specimens — метрология типа: вес, диаметр, ось по каждому музейному экземпляру
  • hoards, hoards/<id>/ — региональный анализ по местам находок (bbox), состав монет каждого клада
  • authorities, mints, regions, dies, denominations, materials — справочники с числом типов
  • stats — итоги каталога; mints.geojson — карта дворов; crawlers — трафик ботов за период

Машинные файлы: llms.txt — карта сайта для краулеров; llms-full.txt — полная документация API; agents.md — правила для автономных агентов; hermes.md — инструкции для Hermes Agent.

Полная инструкция для краулеров (llms.txt + llms-full.txt)
# CANOA — Corpus Apertum Nummorum Orbis Antiqui
> CANOA is an open corpus (catalog) of ancient world coinage: Greece, Rome, Persia, Carthage and other civilizations. Open data, images and scholarly coin descriptions.

Main site: https://canoanumis.org/.

Contacts: suggestions — info@canoanumis.org; complaints — abuse@canoanumis.org.

Cookies/tracking: for humans, consent is confirmed by the banner button (cookie canoa_consent) or by continuing to use the site; for bots and crawlers, consent to cookies and anonymized analytics (Yandex.Metrika) is presumed upon access. Bots/crawlers: consent to cookies and anonymized analytics is presumed.

## Main sections
- [Coin catalog](https://canoanumis.org/search/): coin cards with metrology, dating, mints and images
- [Regions and civilizations](https://canoanumis.org/map/): regions and civilizations (via the mint map)
- [Mints](https://canoanumis.org/mints/): directory of minting places with a map
- [About](https://canoanumis.org/about/): mission, licenses (coin types — ODbL, images — © museums), citation guidelines

## Data
- API and exports: open catalog dumps in JSON/CSV

## API (JSON)
- GET https://canoanumis.org/api/search?q=<query> — search rulers, mints and denominations. Example: /api/search?q=Nero
- GET https://canoanumis.org/api/coins — coin list with filters: q, authority, mint, denomination, material, dataset, has_image, date_from, date_to, sort (name | -name | date | -date | specimens | -specimens; specimens — most common first), page, per_page. Every item has specimen_count. Example: /api/coins?authority=http://nomisma.org/id/nero&mint=36 (36 = Rome); add &format=html for a simple JS-free HTML list
- GET https://canoanumis.org/api/coins/<slug>/ — coin card by slug (from /api/coins). Example: /api/coins/ric-i-second-edition-nero-1/
- GET https://canoanumis.org/api/coin/<id>/ — coin card by numeric id. Example: /api/coin/168481/
- GET https://canoanumis.org/api/filter-options?field=mint|authority|denomination|material — filter values (mint returns numeric ids)
- GET https://canoanumis.org/api/mints.geojson — mints as GeoJSON
- GET https://canoanumis.org/api/hoards — hoards in a region, bbox filter: lat_min, lat_max, lon_min, lon_max (+ q, dataset, page, per_page). Example: /api/hoards?lat_min=36.5&lat_max=38.5&lon_min=12&lon_max=16
- GET https://canoanumis.org/api/hoards/<id>/ — hoard detail with coin types (authority, mint, dates)
- GET https://canoanumis.org/api/authorities — full list of rulers/emperors with type counts (q, has_types, page/per_page)
- GET https://canoanumis.org/api/authorities/<id>/ — ruler detail + his coin types (paged)
- GET https://canoanumis.org/api/mints — full list of mints with coordinates and type counts
- GET https://canoanumis.org/api/regions — regions/civilizations with type counts
- GET https://canoanumis.org/api/dies — coin dies (Roman Republican Die Project); filters q, die_type
- GET https://canoanumis.org/api/denominations, /api/materials — full reference lists with type counts
- GET https://canoanumis.org/api/stats — catalog statistics (types, specimens, hoards, mints, authorities...)
- GET https://canoanumis.org/api/coins/<id>/specimens — museum specimens of a coin with metrics: weight, diameter, axis, collection
- GET https://canoanumis.org/api/coins?hoard_id=<id> — coin types of a specific hoard
- GET https://canoanumis.org/api/crawlers — crawler/bot traffic statistics for a period: days (1 up to available history, default 7) or from/to (YYYY-MM-DD); categories, HTTP codes, top paths/IPs/user agents; API breakdown: api_categories (who requests /api/*), api_endpoints (numeric ids collapsed to {id}), api_ips, api_user_agents
- GET https://canoanumis.org/banner/<slug>/ — coin banner page (preview and embed codes); PNG: /banner/<slug>/<WxH>.png and <WxH>-light.png (6 sizes × 2 themes)
- GET https://canoanumis.org/api/collections — public user collections (id, owner, title, item counts)
- GET https://canoanumis.org/api/collections/<owner>/<slug>/ — collection detail: items with catalog coin_type refs (or unattributed), weight/diameter/axis, photo thumbnails
User collections are private by default: /collections/my/, /api/my/* and secret unlisted links (/collections/u/...) are closed to crawlers — do not attempt to access them.
The API and pages return only images that actually exist: if a file is lost (PAS/Gallica), the image field is empty — do not request dead URLs.
URL artifacts: paths ending in /null (also /undefined, /NaN) are not real pages — some crawlers compose them by appending a null value to a page path (validated: meta-externalagent/1.1). The site ignores the artifact: the trailing segment is stripped internally and the same page is served (HTTP 200, the URL in the browser is unchanged). Do not request them anyway: the site ignores the artifact and serves the same page - use the clean URL.
API rate limits: 30 req/s per IP with burst 90 at the edge (nginx) and 120 requests/min per IP for /api/* (app side); when exceeded you get 429 with Retry-After: 60 — honour it and slow down instead of retrying in a loop. For bulk harvesting prefer /api/coins?per_page=100 with pauses, and check /api/crawlers to see your own traffic.
authority/denomination/material values are URIs (e.g. http://nomisma.org/id/nero), mint is a numeric id from /api/filter-options?field=mint, date_from/date_to are years (e.g. 54 and 68 for Nero's reign).

## Searching coins (example for LLM agents)
1. /api/search?q=Nero → find a result of type ruler with uri=http://nomisma.org/id/nero
2. /api/filter-options?field=mint → find the id of the mint you need (e.g. Rome = 36)
3. /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100 → JSON list of coins with fields id, slug, label, mint, dates and url (/coins/<slug>/).
A period can be given without authority: /api/coins?date_from=54&date_to=68&mint=<id> — coins struck during Nero's reign (54–68) in Rome.

## For agents
- [Full documentation](https://canoanumis.org/llms-full.txt) — data model, full API reference, examples
- [Instructions for agents](https://canoanumis.org/agents.md) — workflow, citation rules, license constraints
- [Instructions for Hermes Agent](https://canoanumis.org/hermes.md) — specialized guide (Nous Research)
- [Skills for working with the API](https://github.com/canoa-dev/canoa-skills) — ready-made skills (Agent Skills / Hermes): canoa-api (endpoints, recipes, data export), canoa-hoard-analysis (regional hoard analysis → coin distribution by emperors/periods → charts → PDF article). Install: `npx skills add canoa-dev/canoa-skills`
- [robots.txt](https://canoanumis.org/robots.txt) — explicit allow rules for named crawlers and agents (GPTBot, OAI-SearchBot, ChatGPT-User, ClaudeBot, Claude-SearchBot, Claude-User, PerplexityBot, CCBot, Google-Extended, Amazonbot, Applebot, bingbot, YandexBot and others)
- [/edu/](https://edu.canoanumis.org/) — Canoa // edu: ancient coins for schools (LMS assignments, LTI 1.3). Public pages are indexed: /edu/, /edu/curriculum/ (+5 tracks), /edu/lesson-plans/ (+lesson plans), /edu/demo/, /edu/how-it-works/, /edu/pricing/, /edu/for-districts/, /edu/for-homeschool/, /edu/faq/, /edu/contact/, /edu/accessibility/, /edu/legal/*; /edu/assignment/*, /edu/my/, /edu/teacher/*, /edu/lti/* are closed to automated access (anti-cheating)

# CANOA — Corpus Apertum Nummorum Orbis Antiqui (full documentation)

## About
CANOA is an open corpus of ancient world coinage: Greece, Rome, Persia, Carthage, Byzantium and other civilizations.
The catalog combines: coin types (128,520), physical specimens from museum collections (540,000+), hoards (9,833), dies (17,074), mints (2,613).
Type data — ODbL (numismatics.org); images belong to the holding museums and are used under their licenses (many are non-commercial only).

## Data model
- CoinType: id, slug, uri, label (pref_label), ocre_id (catalog number, e.g. ric.1(2).ner.1), mint, authority, denomination, material, start_date/end_date (dating), obverse/reverse legend and description, obverse_image/reverse_image (URL), url (/coins/<slug>/).
- Specimen: a physical coin from a museum collection, linked to a CoinType; fields weight, diameter, axis, collection.
- Mint: name, label_ru, latitude/longitude.
- Authority: label, label_ru, uri (nomisma.org).
- Hoard, Die: separate reference books.

## API (JSON) — full reference

### /api/search?q=<query>
Search across rulers, mints, denominations and coins. Response: {results: [{type: ruler|mint|denomination|coin, label, label_ru, uri, count, url}]}.
Example: /api/search?q=Nero → ruler Nero (uri http://nomisma.org/id/nero, count 622, url /search/?authority=http://nomisma.org/id/nero).

### /api/coins
Coin list (CoinType) with filters. Response: {count, page, num_pages, per_page, results: [{id, slug, uri, label, ocre_id, mint, mint_id, authority, authority_uri, denomination, material, date_from, date_to, url, image, specimen_count}]}.
Parameters:
- q — text search (AND tokens over label/ocre_id/legends)
- authority, denomination, material — URIs (e.g. http://nomisma.org/id/nero)
- mint — numeric id (from /api/filter-options?field=mint)
- dataset — dataset identifier (ocre, crro, pella, iris, ...)
- has_image — 1 (with images only) / 0 (all)
- date_from, date_to — years: coins whose period intersects the range
- sort — name | -name | date | -date | specimens | -specimens (specimens: most common first; -specimens: least common first)
- page, per_page (max 100)
- specimen_count — number of museum specimens of the type; sort=specimens&per_page=1 gives the catalog's most common coin.
Images: the image field contains a URL only if the file really exists; lost sources (Gallica, PAS) return an empty string — do not request such URLs.
- format — json (default) or html: /api/coins?authority=nero&mint=rome&format=html — the same list, but a simple HTML page without JavaScript (only links to /coins/<slug>/, pagination)
Example: /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100 — Nero's coins from Rome.
Period example: /api/coins?date_from=54&date_to=68&mint=36 — coins of Rome 54–68 CE.

### /api/coins/<slug>/
Coin card by slug (from /api/coins). Example: /api/coins/ric-i-second-edition-nero-1/.
Response: id, slug, label, ocre_id, definition, mint, mint_id, authority(+ru), denomination(+ru), material(+ru), manufacture, date_from, date_to, obverse/reverse legend and description, obverse_image/reverse_image (URL), source, uri, url.

### /api/coin/<id>/
Coin card by numeric id. Example: /api/coin/168481/.
Response: as /api/coins/<slug>/ plus specimen_count and specimens_url.

### /api/coins/<id>/specimens
Museum specimens of a coin with metrical data. Response: {coin_id, coin_label, count, page, num_pages, results: [{id, identifier, collection, weight, diameter, axis, findspot, obverse_image, reverse_image, specimen_url}]}.Each item has specimen_url (/api/specimens/<id>/) — a direct link to the individual specimen card, which mirrors the original collection record (finds.org.uk, British Museum, ...).
Example: /api/coins/168481/specimens. Useful for metrology studies (weight/diameter distributions per type).
### /api/specimens/<id>/Individual museum specimen card by id (from /api/coins/<id>/specimens, field specimen_url). Response: {id, identifier, collection, coin_type: {id, label, slug, url}, uri, weight, diameter, axis, findspot, obverse_image, reverse_image}.Use as a direct machine-readable mirror of an external collection record (e.g. https://finds.org.uk/database/artefacts/record/id/197163 ↔ /api/specimens/732453/).

### /api/hoards
Hoard list. Filters: lat_min/lat_max/lon_min/lon_max (bounding box by findspot coordinates), q (label), dataset, page/per_page (max 100).
Response: {count, num_pages, page, results: [{id, label, dataset, findspot, latitude, longitude, coin_count, type_count, start_date, end_date, url}]}.
Example: /api/hoards?lat_min=36.5&lat_max=38.5&lon_min=12&lon_max=16 — hoards of Sicily.

### /api/hoards/<id>/
Hoard detail with its coin types. Response: {id, label, dataset, findspot, latitude, longitude, coin_count, type_count, start_date, end_date, coin_types: [{id, label, ocre_id, authority, authority_uri, mint, mint_id, date_from, date_to, url}]}.

### /api/authorities
Full list of rulers/emperors with type counts. Filters: q (label/label_ru), has_types (default 1), page/per_page (max 100).
Response: {count, num_pages, page, results: [{id, label, label_ru, uri, type_count, url}]}.

### /api/authorities/<id>/
Ruler detail + his coin types (paged). Response: {id, label, label_ru, uri, definition, type_count, page, num_pages, results: [{id, label, ocre_id, mint, denomination, material, date_from, date_to, url}]}.

### /api/mints
Full list of mints with coordinates and type counts. Filters: q (name), has_types (default 1), page/per_page.
Response: {count, num_pages, page, results: [{id, name, latitude, longitude, slug, type_count, uri, url}]}.

### /api/regions
Regions/civilizations (dataset groups) with type counts. Response: {count, results: [{dataset, label_ru, label_en, type_count, url}]}.

### /api/dies
Coin dies (Roman Republican Die Project). Filters: q (label), die_type (obverse/reverse), page/per_page.
Response: {count, num_pages, page, results: [{id, label, notation, die_type, dataset, coin_type_id, coin_label, image}]}.

### /api/denominations, /api/materials
Full reference lists with type counts. Response: {count, results: [{id, label, label_ru, uri, type_count}]}.

### /api/stats
Catalog statistics for articles and citation. Response: coin_types, coin_types_with_photo, specimens, specimens_with_photo, hoards, hoards_geolocated, mints, authorities, denominations, materials, dies, findspots, datasets, generated_at.

### /api/coins?hoard_id=<id>
The hoard_id filter returns the coin types of a specific hoard (same response as /api/coins).

### /api/crawlers
Crawler/bot traffic statistics (public — for bot operators planning their crawls). Parameters: days (1 up to available history, default 7) or from/to (YYYY-MM-DD, overrides days).
Response: {period: {from, to, days}, total_requests, api_requests, site_requests, api_share, categories: {name: {requests, share}}, codes: {code: count}, top_paths, top_paths_404, top_paths_5xx, top_ips, top_user_agents, api_categories, api_endpoints, api_ips, api_user_agents}.
Top paths / IPs / user agents are aggregated over the WHOLE requested period (all selected days), not just the last day; per-day data is capped at 200 keys, so a very long tail can be truncated.
Example: /api/crawlers?days=7 — bot traffic for the last week.

### Rate limits
The API is rate limited per IP: 30 req/s with burst 90 at the edge (nginx) and 120 requests/min for /api/* (app side). Over the limit the response is 429 with Retry-After: 60 — honour the header and back off instead of retrying in a tight loop. For bulk harvesting use per_page=100 (max) with pauses; /api/crawlers is subject to the same limits.

### /api/collections (user collections)
Public user collections (personal coin cabinets linked to the catalog).
- GET /api/collections — list of public collections. Response: {collections: [{id, owner, owner_slug, title, slug, description, visibility, item_count, attributed_count, updated_at, url}]}.
- GET /api/collections/<owner>/<slug>/ — collection detail with items. Response: {…collection fields…, items: [{id, status (attributed|unattributed), weight, diameter, axis, coin_type: {id, slug, uri, label, url} | null, photos: [thumbnail urls]}]}.
- GET /api/collections/u/<token>/ — the same detail for an unlisted collection by its secret link token.
Private data is NOT exposed: /collections/my/, /api/my/collections (owner-only, requires session or ?api_key=<Profile.api_token>) and secret links are excluded from robots.txt; do not attempt to access them.

## Canoa // edu (/edu/) — schools section
- /edu/ — Canoa // edu landing: coin assignments for LMS (Canvas, Schoology, Moodle) via LTI 1.3.
- Public pages: /edu/ (landing), /edu/curriculum/ and /edu/curriculum/<track>/ (curriculum tracks: ap-latin, world-history, classical-civ, hoard-analysis, ai-research-agent), /edu/lesson-plans/ and /edu/lesson-plans/<slug>/ (free lesson plans; PDF — /edu/lesson-plans/<slug>.pdf), /edu/demo/ (demo assignment without registration), /edu/how-it-works/ (LTI guides for Canvas/Schoology/Moodle), /edu/pricing/, /edu/for-districts/, /edu/for-homeschool/, /edu/faq/, /edu/contact/, /edu/accessibility/ and /edu/accessibility/acr.html, /edu/legal/privacy/, /edu/legal/terms/, /edu/legal/ndpa/, /edu/legal/dpa/, /edu/legal/subprocessors/, /edu/legal/data-deletion/, /edu/legal/ny-parents-bill-of-rights/.
- Closed paths (only via an LTI session from the LMS, anti-cheating — do not bypass): /edu/assignment/*, /edu/my/, /edu/teacher/*, /edu/lti/*.
- LTI 1.3: /edu/lti/login/, /edu/lti/launch/, /edu/.well-known/jwks.json. The module does not store student personal data (only opaque sub); coin images are not copied.
## Citation
- Every coin page: COinS (Zotero), citation_* meta tags (Google Scholar), 
RIS/BibTeX/CSL-JSON export (/coins/<slug>/cite/<fmt>/). Guidelines: https://canoanumis.org/cite/.
## URL artifacts (do not crawl)
Some crawlers compose URLs by appending a null value to a page path, producing paths like /search/null, /coins/<slug>/null, /banner/<slug>/null, /regions/<slug>/null, /mints/<slug>/null (validated: meta-externalagent/1.1, Sept 2026, ~115k requests). These pages do not exist and never existed: the site never emits the token "null" in HTML, sitemaps, robots.txt or headers. The site treats such requests as the underlying resource: the artifact segment is stripped internally and the real page is returned (HTTP 200, no redirect, the requested URL is unchanged). Do not request these variants: use the clean URL, the API and /sitemap.xml instead.

## Coin banners (for third-party sites)
- /banner/<slug>/ — HTML banner page: preview of all sizes and embed codes (HTML/Markdown/BB-code).
- /banner/<slug>/<WxH>.png — dark theme; <WxH>-light.png — light theme. Sizes: 970x90, 728x90, 468x60, 320x50, 300x600, 160x600. Cache-Control: max-age=86400.
- Banners: coin image, name, catalog number, dates·mint·ruler, CANOA brand; images — © holding museums.
- /banner/ pages are absent from the sitemap — do not index them.
Полная инструкция для агентов (agents.md + hermes.md)
# CANOA — instructions for agents

## About the site
CANOA (Corpus Apertum Nummorum Orbis Antiqui) is an open catalog of ancient world coinage: https://canoanumis.org/
The site is bilingual: Russian (/) and English (/en/).

## How to answer questions about coins
1. Start with /api/search?q=<query> — it finds rulers, mints, denominations and coins.
2. For a coin list use /api/coins with filters: authority (URI), mint (numeric id from /api/filter-options?field=mint), date_from/date_to (years).
3. For coin details — /api/coins/<slug>/ (slug from the /api/coins list).
4. For filter values — /api/filter-options?field=mint|authority|denomination|material.
5. Pagination: page, per_page (up to 100).\n6. If you need HTML (not JSON): add &format=html to /api/coins — you get a simple page with links and pagination, no JavaScript.

## Rules
- ANSWER ONLY FROM REAL API DATA. Do not invent catalog numbers, dates or attributions.
- Cite sources IN EVERY answer about a coin: catalog number (ocre_id, e.g. RIC I (2nd ed.) Nero 1), 
nomisma.org URI (http://nomisma.org/id/nero) and the coin URL https://canoanumis.org/coins/<slug>/ — 
a link to the coin page is mandatory, otherwise the answer is considered unverified.
- Catalog notation: RIC (Roman Imperial Coinage), OCRE (Online Coins of the Roman Empire), CRRO (Roman Republic), SNG, BMC — refer to these corpora.
- Dates — CE/BCE years; use «BC/AD» in English answers.
- Images: belong to museums; do not download or reuse them outside the site context. Some collections allow non-commercial use only.
- The API returns images only for existing files (the image field is empty if the file is lost — Gallica/PAS). Do not request dead URLs: it is extra traffic and 404s.
- Do not request URLs ending in /null (and /undefined, /NaN): they are not real pages — crawlers compose them by appending a null value to a page path (Meta’s meta-externalagent did it ~115k times in Sept 2026). The site strips the artifact and serves the underlying page (HTTP 200), but do not request these variants — use the clean URL.
- Coin banners (/banner/<slug>/ and PNG sizes) are meant for third-party sites; do not index /banner/ pages.
- Hidden collections (abc_exemplars, rutgers, ashmolean) are not displayed — do not link to them.
- Do not overload the site: use per_page up to 100 and pauses between requests (rate limits: 30 req/s with burst 90 per IP at the edge, 120 requests/min per IP for /api/*; over the limit the API answers 429 with Retry-After: 60 — honour it and back off).

## Typical tasks
«List of Nero's coins from Rome»: /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100
«Coins of Nero's period (54–68)»: /api/coins?date_from=54&date_to=68&mint=36
«Who minted in Athens»: /api/coins?mint=<Athens id>&per_page=100 (id — from /api/filter-options?field=mint)
«Octavian denarii»: /api/coins?q=Octavian&denomination=http://nomisma.org/id/denarius&per_page=100
«Hoards of Sicily»: /api/hoards?lat_min=36.5&lat_max=38.5&lon_min=12&lon_max=16
«What coins are in hoard 26394»: /api/coins?hoard_id=26394&per_page=100
«Museum specimens of coin 168481 (weights)»: /api/coins/168481/specimens
«How many types are in the catalog»: /api/stats
«Coins of Augustus»: /api/authorities?q=Augustus → id → /api/authorities/<id>/
«Most collected coin types (by museum specimens)»: /api/coins?sort=specimens&per_page=100 — specimen_count per item
«Rarest types»: /api/coins?sort=-specimens&per_page=100

## Machine files
- /llms.txt — brief site map
- /llms-full.txt — full documentation (data model + API)
- /hermes.md — instructions for Hermes Agent (Nous Research)
- /api/crawlers — public bot traffic statistics (days 1–14 or from/to YYYY-MM-DD; categories, HTTP codes, top paths) — use it to plan your crawl politely
- /sitemap.xml — all pages; /robots.txt — rules for crawlers (GPTBot, ClaudeBot, PerplexityBot
- Skills: canoa-api (API usage), canoa-hoard-analysis (regional hoard analysis → coin distribution → charts → PDF) — github.com/canoa-dev/canoa-skills, `npx skills add canoa-dev/canoa-skills`\n- /edu/* — Canoa // edu for schools (LTI 1.3). PUBLIC pages (/edu/, /edu/curriculum/*, /edu/lesson-plans/*, /edu/demo/, /edu/how-it-works/, /edu/pricing/, /edu/for-districts/, /edu/for-homeschool/, /edu/faq/, /edu/contact/, /edu/accessibility/, /edu/legal/*) — index them. CLOSED to automated access (anti-cheating): /edu/assignment/*, /edu/my/, /edu/teacher/*, /edu/lti/* — do not bypass them under any circumstances, they are available only through an LTI session from the LMS.

## Contacts
Suggestions — info@canoanumis.org; complaints — abuse@canoanumis.org.

# CANOA — instructions for Hermes Agent

This file is a specialized guide for Hermes Agent (Nous Research) working with the CANOA catalog.

## Context
CANOA (https://canoanumis.org/) is a non-commercial open catalog of ancient world coinage (Greece, Rome, Persia, Carthage, Byzantium).
The user is a Russian-speaking ancient coinage researcher. Answer in Russian unless stated otherwise.

## Workflow (mandatory)
1. First /api/search?q=<query> — find the ruler/mint/denomination and get its URI.
2. Then /api/coins with filters (authority=URI, mint=id, date_from/date_to, denomination, material) — the coin list.
3. Details — /api/coins/<slug>/ (slug from the list).
4. ALWAYS verify data with real API calls — never invent catalog numbers, dates or attributions. The user demands verifiable data: «verify, don't invent!».

## Citation
- Catalog numbers: ocre_id in corpus notation (ric.1(2).ner.5 → «RIC I (2nd ed.) Nero 5»).
- URIs: http://nomisma.org/id/<concept> (nero, athens, denarius...).
- Coin links: https://canoanumis.org/coins/<slug>/.

## Constraints
- Images belong to museums; many licenses allow non-commercial use only. Do not reuse images outside the site.
- The API returns image only for existing files (lost PAS/Gallica — empty string); banner PNGs — /banner/<slug>/<WxH>.png(-light).
- Do not request URLs ending in /null (also /undefined, /NaN): such pages do not exist - crawlers compose them by appending a null value to a page path. The site ignores the artifact and serves the underlying page (HTTP 200); do not request these variants - use the clean URL.
- Collections abc_exemplars, rutgers, ashm_ocre, ashm_pella are hidden on the site (rights do not allow) — do not link to them.
- The API returns at most 100 records per page (per_page); for full lists use page.\n- HTML version of the list: /api/coins?<filters>&format=html (no JS, links only) — convenient for crawlers.
- Bilingualism: pages / (RU) and /en/ (EN); label_ru/label_en fields in the API.

## Quick examples
- Nero's coins from Rome: /api/coins?authority=http://nomisma.org/id/nero&mint=36&per_page=100
- Period 54–68 CE, Rome: /api/coins?date_from=54&date_to=68&mint=36
- Athenian coinage: /api/filter-options?field=mint → find Athens → /api/coins?mint=<id>
- Denarii: /api/coins?denomination=http://nomisma.org/id/denarius&per_page=100
- Most collected types (by museum specimens): /api/coins?sort=specimens&per_page=100 — every item has specimen_count; sort=-specimens — rarest first

## Files
- /llms.txt — site map; /llms-full.txt — full API reference; /agents.md — general agent instructions; /api/crawlers — bot traffic stats (days 1–14 or from/to YYYY-MM-DD).
- /edu/ — Canoa // edu (schools, LTI 1.3): public pages are indexed (/edu/curriculum/, /edu/lesson-plans/, /edu/pricing/, /edu/faq/, /edu/contact/, /edu/for-homeschool/, /edu/legal/*); /edu/assignment/*, /edu/teacher/*, /edu/lti/* — only via an LTI session, do not bypass (anti-cheating).

## Contacts
Suggestions — info@canoanumis.org; complaints — abuse@canoanumis.org.

доступность

Сайт соответствует WCAG 2.2 AA (и WCAG 2.1 AA), EN 301 549 V3.2.1 и Section 508 (2017 Refresh). Полный аудит axe-core 4.10.2 (08.08.2026): 0 нарушений на всех ключевых страницах, в обеих темах.

  • контраст текста ≥ 4,5:1 в обеих темах
  • клавиатурная навигация и скип-ссылка
  • интерактивные цели ≥ 24×24 px
  • ссылки в тексте выделены подчёркиванием (не только цветом)
жалобы по доступности (Section 504 / ADA)
accessibility@canoanumis.org
конфиденциальность
privacy@canoanumis.org