Open Interfaces & Data Sovereignty

BYOAI: Bring Your Own AI

Query an authoritative machine-readable corpus of 20,355 primary archaeological resources within 20,788 ARCHE records, together with 219 georeferenced findspots, 434 collections, and 9 curated GeoPackages — directly from your own AI client, local agent, or research script.

MCP v1.2 Knowledge Graph OpenAPI 3.1 & JSON llms.txt Local AI compatible PID-first provenance

The BYOAI Philosophy

IUENNA separates the research data from the AI model. The project provides authoritative repository metadata, persistent identifiers, explicit relationships, and open machine-readable interfaces. Researchers can then use the AI environment of their choice without depending on a single commercial platform.

“We provide the archaeological data, provenance, persistent identifiers, and open interfaces. You bring the AI engine.”

ARCHE remains the authoritative long-term repository. The IUENNA web layer is a discovery and retrieval interface derived from ARCHE metadata and is designed to make archaeological research data easier to query reproducibly.

1. Model Context Protocol (MCP) v1.2

The IUENNA MCP server implements JSON-RPC 2.0 over stdio and runs with zero third-party runtime dependencies. Version 1.2.0 exposes seven research tools and now integrates semantic knowledge graph traversal alongside entity discovery and exhaustive primary-resource retrieval.

Setup for Claude Desktop / Cursor / compatible MCP clients

claude_desktop_config.json
{
  "mcpServers": {
    "iuenna": {
      "command": "python3",
      "args": [
        "-c",
        "import urllib.request; exec(urllib.request.urlopen('https://raw.githubusercontent.com/IUENNA/IUENNA.github.io/main/mcp/server.py').read().decode())"
      ]
    }
  }
}

Alternative: Clone the repository and run python3 mcp/server.py or node mcp/index.mjs.

Available MCP Tools

ToolPurposeKey arguments
search_iuenna_corpusSearches the authoritative arche_corpus.json across 20,355 primary files, including titles, filenames, descriptions, collection paths, places, subjects, and PIDs.query, limit
get_findspot_detailsReturns findspot metadata and directly associated curated datasets.name_or_id
get_related_resourcesResolves a place, dataset, collection, or publication and traverses related datasets, collections, publications, and primary files. Recommended for questions such as “all data about Hemmaberg”.name_or_id, optional query, limit
get_graph_neighborhoodExplores the semantic knowledge graph (21,080 nodes, 38,696 edges) around any entity, place, person, dataset, or publication by 1–2 hop neighborhood with optional predicate filtering.node_or_id, optional hops (1–2), predicate, limit
get_geodata_catalogLists the 9 curated authoritative archaeological GeoPackages.None
get_corpus_statisticsReturns repository-level metrics together with separate metadata for the primary-resource corpus.None
get_project_bibliographyQueries the public IUENNA Zotero library for project publications, excavation literature, authors, DOIs, and bibliographic metadata.optional query, limit
Why the distinction matters: the IUENNA top-level ARCHE collection currently contains 20,788 repository records, while arche_corpus.json contains 20,355 primary resources/files. MCP full-text retrieval operates on the latter rather than treating every repository entity as a file.

2. Recommended AI Routing

Find an entity

Use arche_search_index.json for compact discovery of persons, organisations, collections, publications, places, and curated datasets.

Find a site

Use arche_places.json, then resolve linked curated geodata via arche_datasets.json.

Find all files

Use arche_corpus.json. This is the exhaustive primary-resource layer containing 20,355 files.

Explore semantic networks

Use arche_graph.json or MCP get_graph_neighborhood to query multi-hop actor-place-publication networks.

Reconstruct provenance

Use arche_collections_tree.json and relationships such as parent_id, col, and spatial_ids.

Ask “everything about X”

Prefer MCP get_related_resources, which combines place, dataset, collection, publication, and file-level relationships.

Cite a result

Prefer the individual ARCHE Handle PID of the dataset or file actually used, not only the IUENNA web page.

3. Machine-Readable JSON & OpenAPI

IUENNA publishes static JSON snapshots over HTTPS. They require no project-specific API key. ARCHE remains authoritative for current repository metadata, access conditions, and rights information.

View openapi.json

GET

Complete Primary-Resource Corpus

20,355 primary archived resources with ARCHE IDs, PIDs, titles, filenames, collection context, hierarchical paths, spatial relationships, subjects, dates, types, coordinates, and descriptions.

/data/arche_corpus.json
GET

Semantic Discovery Index

Compact entity-level discovery index. Use it to identify persons, institutions, collections, publications, places, and curated datasets — not as the exhaustive file corpus.

/data/arche_search_index.json
GET

Archaeological Findspots

219 georeferenced sites with titles, coordinates/WKT, Geonames identifiers, periods, and spatial relationships.

/data/arche_places.json
GET

Collection Hierarchy

434 collections and archival dossiers with parent-child relationships, PIDs, counts, and provenance context.

/data/arche_collections_tree.json
GET

Curated GeoPackages

Metadata, spatial coverage, creators, layer descriptions, and PIDs for 9 primary GIS datasets.

/data/arche_datasets.json
GET

Semantic Knowledge Graph

21,080 nodes and 38,696 directed edges connecting collections, resources, places, persons, institutions, and publications via formal ARCHE ontology predicates.

/data/arche_graph.json
GET

Corpus Statistics

Repository-level counts and storage metrics. Use together with arche_corpus.json when distinguishing repository entities from primary files.

/data/arche_stats.json
ZOTERO API

Project Bibliography

Live bibliographic catalogue for IUENNA, excavation reports, and research literature in JSON, BibTeX, and CSL-compatible formats.

api.zotero.org/groups/4910727/items

4. llms.txt for LLM & Agent Discovery

The canonical llms.txt acts as a routing and provenance layer. It tells AI systems which endpoint to use for which type of question, establishes ARCHE as the authoritative repository, and specifies PID-first citation and rights handling.

Canonical llms.txt
https://iuenna.github.io/llms.txt

For exhaustive prompts such as “all files”, “all documentation”, or “all data concerning X”, an agent is explicitly instructed not to stop at the curated dataset catalogue or semantic discovery index, but to use arche_corpus.json and the collection hierarchy as well.

5. Minimal Research Recipes

Python: query places

query_places.py
import json
import urllib.request

url = "https://iuenna.github.io/data/arche_places.json"
with urllib.request.urlopen(url) as response:
    places = list(json.loads(response.read().decode("utf-8")).values())

hemmaberg = [p for p in places if "hemmaberg" in p.get("title", "").lower()]
print(json.dumps(hemmaberg, ensure_ascii=False, indent=2))

Python: explore semantic knowledge graph

query_graph.py
import json
import urllib.request

url = "https://iuenna.github.io/data/arche_graph.json"
with urllib.request.urlopen(url) as response:
    graph = json.loads(response.read().decode("utf-8"))

nodes = {n["data"]["id"]: n["data"] for n in graph["elements"]["nodes"]}
edges = graph["elements"]["edges"]

# Find all publications authored by Franz Glaser
glaser_id = next((nid for nid, d in nodes.items() if "glaser" in d.get("label", "").lower()), None)
authored = [e["data"]["target"] for e in edges if e["data"]["source"] == glaser_id and e["data"]["predicate"] == "hasAuthor"]

for pub_id in authored:
    pub = nodes.get(pub_id, {})
    print(f"- {pub.get('label')} (PID: {pub.get('pid')})")

Python: exhaustive file-level search

query_corpus.py
import json
import urllib.request

url = "https://iuenna.github.io/data/arche_corpus.json"
with urllib.request.urlopen(url) as response:
    corpus = json.loads(response.read().decode("utf-8"))["resources"]

hits = [r for r in corpus if "georadar" in (
    f"{r.get('title','')} {r.get('filename','')} {r.get('description','')}".lower()
)]
print(json.dumps(hits[:20], ensure_ascii=False, indent=2))

MCP: relational query

Example tool call
{
  "name": "get_related_resources",
  "arguments": {
    "name_or_id": "Hemmaberg",
    "query": "Georadar",
    "limit": 50
  }
}

6. Provenance, Citation & Rights

ARCHE is the authoritative long-term repository. The top-level IUENNA collection is persistently identified by 21.11115/0000-0016-7B39-F.

Access and reuse: the IUENNA web discovery interfaces are openly accessible, but this does not mean that every archived binary resource is openly downloadable or licensed under the same terms. Individual ARCHE resources may have different access restrictions, rights holders, and licences. Always inspect the metadata of the specific ARCHE record before reuse.

Recommended project-level citation:

Project citation
Hagmann, D., & Waldhart, F. (Eds.). (2025). IUENNA – openIng the soUthErn jauNtal as a micro-regioN for future Archaeology. ARCHE – Austrian Research Culture Heritage Extended. https://hdl.handle.net/21.11115/0000-0016-7B39-F

When using a specific dataset, document, image, GeoPackage, or other archived resource, cite its individual ARCHE PID and metadata rather than only the project homepage.