A studio where cultural content is forged into digital experiences
SDK and Integrations

Build for the cultural marketplace

The .mostrapack format lets developers, museums and critics create downloadable asset packs that plug directly into the Clio AI pipeline. JSON Schema validated, CIDOC CRM aligned, and ready for the MOSTRAmi marketplace.

Current v0.8.0: the SDK specification and .mostrapack format are in active development alongside the pack engine, the marketplace layer, and the Clio pipeline extension points.
mostrami-cli
# Install the MOSTRAmi SDK CLI
$ npm install -g @mostrami/sdk-cli

# Create a new critic dataset pack
$ mostrami-cli init --type critic_dataset --lang it

# Validate against JSON Schema
$ mostrami-cli validate vasari-uffizi.mostrapack
  Schema valid (draft-2020-12)
  Rights statement: CC-BY-NC-4.0
  Annotations: 47 artworks
  Points of interest: 142 AR points
  Checksum: sha256:a3f2b7c...

# Publish to the marketplace
$ mostrami-cli publish vasari-uffizi.mostrapack
  Uploaded. Status: PENDING_REVIEW

One format, four pack types

Every asset in the MOSTRAmi marketplace uses the .mostrapack format: a JSON document validated against a published JSON Schema (draft-2020-12) with a JSON-LD semantic context layer for CIDOC CRM and Europeana Data Model interoperability.

Critic Dataset

Expert commentary packs

Structured scholarly annotations with artwork-level commentary, APA and MLA bibliography, and spatial points of interest for AR overlays. Each annotation is mapped to CIDOC CRM E89 Propositional Object.

Primary asset Annotations AR Points Bibliography
Museum Content

Official source packs

Evidence bundles provided by partner museums with verified provenance. These packs receive the highest authority tier (Official Ground Truth) and serve as primary grounding for the Clio AI pipeline.

Strategic asset Evidence chunks Official labels Grounding
Voice Profile

Narrator and persona packs

Custom narration styles, delivery personas and voice configurations for the TTS engine. Includes tone directives, vocabulary constraints, and SSML prosody preferences for different audience targets.

Narrator style Voice key SSML directives
Exhibition Template

Visit route and wishlist packs

Pre-configured exhibition templates with curated artwork wishlists, room-by-room navigation order, riddle clues for family visits, and suggested time budgets per artwork.

Routes Wishlists Riddles Timing

Core schema fields

$schemaURIURL of the JSON Schema version (draft-2020-12)Required
schema_versionSemVerVersion of the .mostrapack format (e.g. "1.0.0")Required
@contextJSON-LDSemantic context linking to CIDOC CRM, EDM, Dublin CoreRequired
pack_idStringUnique identifier for the pack (kebab-case)Required
typeEnumCRITIC_DATASET, MUSEUM_CONTENT, VOICE_PROFILE, EXHIBITION_TEMPLATERequired
metadataObjectTitle, creator, publisher, language, description, tags, cover imageRequired
rightsObjectRights statement URI (Europeana categories), license, rights holderRequired
annotationsArrayArtwork annotations with commentary, bibliography and AR pointsPer type
evidence_chunksArraySource evidence with claim types, language and citation labelsPer type
checksumSHA-256Integrity hash computed by the CLI before uploadRequired

The authority field is intentionally absent from the pack. Authority scores are computed server-side by the platform based on publisher reputation, review status and institutional verification. A third-party pack cannot self-declare its trustworthiness.

Build your first pack

Complete .mostrapack examples for each of the four pack types. Copy, adapt, validate with the CLI and publish to the marketplace.

Critic Dataset Pack

Vasari, Le Vite (Uffizi Selection)

Scholarly commentary on Renaissance masterpieces, with AR points of interest and full bibliography.

{
  "$schema": "https://sdk.mostrami.gallery/schemas/mostrapack/v1.0.0/mostrapack.schema.json",
  "schema_version": "1.0.0",
  "@context": {
    "@vocab": "https://sdk.mostrami.gallery/ns/",
    "crm": "http://www.cidoc-crm.org/cidoc-crm/",
    "edm": "http://www.europeana.eu/schemas/edm/",
    "dc": "http://purl.org/dc/elements/1.1/"
  },
  "pack_id": "vasari-uffizi-renaissance-v2",
  "type": "CRITIC_DATASET",
  "metadata": {
    "title": "Vasari, Le Vite (Uffizi Selection)",
    "dc:creator": "Prof. Maria Rossi",
    "dc:publisher": "Universita di Firenze",
    "dc:language": "it",
    "artwork_count": 47,
    "tags": ["rinascimento", "uffizi", "vasari", "firenze"]
  },
  "rights": {
    "rights_statement": "http://rightsstatements.org/vocab/InC-EDU/1.0/",
    "license": "CC-BY-NC-4.0",
    "rights_holder": "Universita di Firenze, Dipartimento SAGAS"
  },
  "annotations": [
    {
      "@type": ["crm:E89_Propositional_Object"],
      "artist": "Sandro Botticelli",
      "title": "La Primavera",
      "period": "Rinascimento Fiorentino",
      "commentary": "Alessandro Botticelli descrive l'ideale neoplatonico...",
      "bibliography_apa": "Vasari, G. (1568). Le vite de' piu eccellenti...",
      "bibliography_mla": "Vasari, Giorgio. Le vite de' piu eccellenti...",
      "references": "Galleria degli Uffizi, Inventario n. 1890.",
      "points_of_interest": [
        {
          "x": 0.5, "y": 0.5,
          "label": "Venere Neoplatonica",
          "description": "Al centro della composizione, Venere si erge...",
          "zoom_cm": 50,
          "viewing_angle": "frontal"
        }
      ]
    }
  ],
  "checksum": "sha256:a3f2b7c9e1d4..."
}
from mostrami_sdk import MOSTRAmiSDK, CriticPack, Annotation, PointOfInterest

sdk = MOSTRAmiSDK(api_key="mk_live_xxxxxxxx")

# Create a new critic dataset pack
pack = CriticPack(
    pack_id="vasari-uffizi-renaissance-v2",
    title="Vasari, Le Vite (Uffizi Selection)",
    creator="Prof. Maria Rossi",
    publisher="Universita di Firenze",
    language="it",
    license="CC-BY-NC-4.0",
    rights_statement="http://rightsstatements.org/vocab/InC-EDU/1.0/",
    rights_holder="Universita di Firenze, Dipartimento SAGAS",
    tags=["rinascimento", "uffizi", "vasari"]
)

# Add annotations
pack.add_annotation(Annotation(
    artist="Sandro Botticelli",
    title="La Primavera",
    period="Rinascimento Fiorentino",
    commentary="Alessandro Botticelli descrive l'ideale neoplatonico...",
    bibliography_apa="Vasari, G. (1568). Le vite...",
    bibliography_mla="Vasari, Giorgio. Le vite...",
    references="Galleria degli Uffizi, Inventario n. 1890.",
    points=[
        PointOfInterest(
            x=0.5, y=0.5,
            label="Venere Neoplatonica",
            description="Al centro della composizione...",
            zoom_cm=50,
            viewing_angle="frontal"
        )
    ]
))

# Validate locally and publish
result = pack.validate()    # Checks schema, rights, POI bounds
upload = sdk.publish(pack)  # Status: PENDING_REVIEW
print(upload.pack_id, upload.status)
# Scaffold a new critic dataset pack
$ mostrami-cli init --type critic_dataset --lang it --id vasari-uffizi-v2
  Created vasari-uffizi-v2.mostrapack (template)

# Import annotations from a spreadsheet
$ mostrami-cli import --source annotations.xlsx --pack vasari-uffizi-v2.mostrapack
  Imported 47 annotations, 142 points of interest

# Validate against JSON Schema draft-2020-12
$ mostrami-cli validate vasari-uffizi-v2.mostrapack
  Schema:       VALID (v1.0.0)
  Rights:       CC-BY-NC-4.0 (Educational Use)
  Annotations:  47 artworks
  AR Points:    142 (bounds OK, 0.0-1.0)
  Bibliography: 47/47 APA, 47/47 MLA
  Checksum:     sha256:a3f2b7c9e1d4...

# Package and publish
$ mostrami-cli publish --key mk_live_xxxxx vasari-uffizi-v2.mostrapack
  Uploaded to MOSTRAmi Marketplace
  Status: PENDING_REVIEW
  Review estimate: 24-48 hours
Museum Content Pack

Uffizi Official Labels (Florence)

Verified evidence bundles from an institutional partner. Receives the highest authority tier in the pipeline.

{
  "$schema": "https://sdk.mostrami.gallery/schemas/mostrapack/v1.0.0/mostrapack.schema.json",
  "schema_version": "1.0.0",
  "pack_id": "uffizi-official-labels-2026",
  "type": "MUSEUM_CONTENT",
  "metadata": {
    "title": "Uffizi Gallery: Official Artwork Labels",
    "dc:creator": "Galleria degli Uffizi",
    "dc:publisher": "Ministero della Cultura",
    "dc:language": "it",
    "artwork_count": 312
  },
  "rights": {
    "rights_statement": "http://rightsstatements.org/vocab/InC/1.0/",
    "license": "MOSTRAmi Museum Partner Agreement",
    "rights_holder": "Galleria degli Uffizi, Firenze"
  },
  "evidence_chunks": [
    {
      "source_id": "museum:uffizi:label:primavera",
      "source_type": "MUSEUM_PACK",
      "text": "La Primavera di Sandro Botticelli (1482 circa). Tempera su tavola, 203x314 cm. Dalla villa medicea di Castello...",
      "citation_label": "Uffizi Official Label",
      "language": "it",
      "claim_types": ["provenance", "iconography", "technique"]
    }
  ],
  "checksum": "sha256:b4e8d2f1a7c3..."
}
from mostrami_sdk import MOSTRAmiSDK, MuseumPack, EvidenceChunk

sdk = MOSTRAmiSDK(api_key="mk_live_xxxxxxxx")

pack = MuseumPack(
    pack_id="uffizi-official-labels-2026",
    title="Uffizi Gallery: Official Artwork Labels",
    creator="Galleria degli Uffizi",
    publisher="Ministero della Cultura",
    language="it",
    license="MOSTRAmi Museum Partner Agreement",
    rights_statement="http://rightsstatements.org/vocab/InC/1.0/"
)

pack.add_evidence(EvidenceChunk(
    source_id="museum:uffizi:label:primavera",
    source_type="MUSEUM_PACK",
    text="La Primavera di Sandro Botticelli (1482 circa)...",
    citation_label="Uffizi Official Label",
    language="it",
    claim_types=["provenance", "iconography"]
))

result = sdk.publish(pack)
Voice Profile Pack

Storyteller for Children

A narrator persona designed for young visitors with simple vocabulary, wonder-filled tone and shorter sentences.

{
  "$schema": "https://sdk.mostrami.gallery/schemas/mostrapack/v1.0.0/mostrapack.schema.json",
  "schema_version": "1.0.0",
  "pack_id": "voice-storyteller-kids-it",
  "type": "VOICE_PROFILE",
  "metadata": {
    "title": "Storyteller for Children",
    "dc:creator": "MOSTRAmi Education Lab",
    "dc:language": "it",
    "target_audience": "kids",
    "tags": ["bambini", "storytelling", "educativo"]
  },
  "rights": {
    "rights_statement": "https://creativecommons.org/publicdomain/zero/1.0/",
    "license": "CC0-1.0"
  },
  "voice_profile": {
    "narrator_style": "storyteller",
    "delivery_persona": "friendly_guide",
    "voice_key": "clara_kids",
    "max_words": 100,
    "sentence_complexity": "simple",
    "forbidden_behaviors": ["profanity", "excessive_jargon", "graphic_violence"],
    "tone_directives": ["wonder", "curiosity", "gentle_humor"],
    "ssml_preferences": {
      "pause_after_question": "800ms",
      "emphasis_level": "moderate",
      "speaking_rate": "90%"
    }
  },
  "checksum": "sha256:c7d1e9f3b2a6..."
}
Exhibition Template Pack

Uffizi in 90 Minutes: Highlights Route

A curated visit path through the must-see artworks, with time budgets, room order and optional riddle clues for families.

{
  "$schema": "https://sdk.mostrami.gallery/schemas/mostrapack/v1.0.0/mostrapack.schema.json",
  "schema_version": "1.0.0",
  "pack_id": "uffizi-highlights-90min",
  "type": "EXHIBITION_TEMPLATE",
  "metadata": {
    "title": "Uffizi in 90 Minutes: Highlights Route",
    "dc:creator": "MOSTRAmi Routes",
    "dc:language": "en",
    "estimated_duration_minutes": 90,
    "tags": ["uffizi", "highlights", "quick-visit", "family"]
  },
  "rights": {
    "rights_statement": "https://creativecommons.org/publicdomain/zero/1.0/",
    "license": "CC0-1.0"
  },
  "exhibition": {
    "museum_name": "Galleria degli Uffizi",
    "city": "Firenze",
    "quest_theme": "Renaissance Treasure Hunt",
    "route": [
      {
        "sort_order": 1,
        "artist": "Sandro Botticelli",
        "artwork_title": "La Primavera",
        "room_or_section": "Sala 10-14 (Botticelli)",
        "time_budget_seconds": 600,
        "riddle_clue": "Find the painting where flowers bloom from a nymph's breath and a goddess watches from the centre."
      },
      {
        "sort_order": 2,
        "artist": "Leonardo da Vinci",
        "artwork_title": "Annunciazione",
        "room_or_section": "Sala 15 (Leonardo)",
        "time_budget_seconds": 480,
        "riddle_clue": "An angel kneels in a garden. Look carefully at the lectern: something is not quite right..."
      },
      {
        "sort_order": 3,
        "artist": "Caravaggio",
        "artwork_title": "Medusa",
        "room_or_section": "Sala 90 (Caravaggio)",
        "time_budget_seconds": 420,
        "riddle_clue": "This artwork is not a canvas but a shield. Who is screaming on it?"
      }
    ]
  },
  "checksum": "sha256:d9a3f1e7c5b2..."
}

Five layers before a pack goes live

Every pack passes through an automated validation pipeline before reaching the marketplace. No pack can self-declare its authority.

Layer 1Schema Validation (JSON Schema draft-2020-12)
Layer 2Rights Verification (Europeana categories)
Layer 3Semantic references and authority-claim validation
Layer 4Publisher signature and local trust-store verification
Layer 5Deterministic archive build and SHA-256 checksum

Proposed production authority hierarchy

This is the intended server-side policy, not a live publisher network. The current reference tooling validates independent/official claims, signatures and local trust records.

Official Ground TruthPartner museums with signed agreements. Primary source for the Clio pipeline.0.95 - 1.0
Verified PublisherUniversities, accredited critics, institutional email domains verified.0.70 - 0.90
CommunityIndependent developers and cultural enthusiasts. Default tier for new publishers.0.30 - 0.60

Ratings, reviews and reports — illustrative preview

The public marketplace is not live and has zero ratings or reviews. The controls below are a product-design preview for post-pilot validation, not traction data.

Planned pack ratings

Illustrative empty state. Rating aggregation will only be implemented after authenticated pack usage and moderation requirements are defined.

☆☆☆☆☆
0 live ratings · UI preview
5
0
4
0
3
0
2
0
1
0

Planned user reviews

Illustrative empty-state design. No public review backend or live marketplace community exists today.

UX
Illustrative review slot
Not live
☆☆☆☆☆
Future authenticated review content will appear here after marketplace validation.
UX
Second illustrative slot
Not live
☆☆☆☆☆
No ratings, reviews or marketplace transactions are claimed by this preview.

Report an issue

Planned moderation form. This static preview does not submit data to a production review team.

Submit a report

Planned developer response

Preview of the intended response workflow; notifications, public replies and Developer Portal analytics are not live.

DEV
Publisher response slot UI PREVIEW
Not live
Authenticated publisher responses may appear here in a future marketplace release.

Community guidelines

AccuracyReviews must be based on actual use of the pack. Fabricated reviews are removed.
RespectConstructive criticism is welcome. Personal attacks or discriminatory language is not permitted.
TransparencyDeclare conflicts of interest. Competing pack developers must disclose their affiliation.
PrivacyDo not share personal information about other users, museum staff or pack creators.

Validate a reference pack today

The repository includes private reference tooling, one executable independent Botticelli pack and automated tests. A public npm CLI, creator portal and publishing API are not yet released.

Step 1

Install repository dependencies

Use the checked-in tooling. It is private reference implementation code, not a published global CLI.

$ npm --prefix mostrapack ci
$ npm --prefix mostrapack test
Step 2

Edit and validate a manifest

Start from the reference JSON manifest and run the schema, rights, semantic-reference and signature checks locally.

$ npm --prefix mostrapack run validate
$ npm --prefix mostrapack run build
Step 3

Prepare for external review

Package the deterministic archive and rights/provenance records. Production publishing, payments and analytics remain post-pilot roadmap items.

$ shasum -a 256 mostrapack/dist/*.mostrapack
  Status: LOCAL_REFERENCE_ONLY

Ready to create?

Request access to the private reference format and help shape the curator workflow before a public SDK is considered.

Request SDK access