{"ok":true,"site":{"host":"jernkorset.dk","url":"https://jernkorset.dk/","type":"live","desc":"","tools":[{"name":"search_letters","kind":"answer","impl":"imperative","description":"Semantic full-text search across 665 WW1 Danish letters using multilingual embeddings. Returns ranked matches with metadata and a representative text snippet. The search engine initialises on first call (downloads ~30 MB model + embeddings); subsequent calls are fast. Supports Danish and English queries.","title":"Search Letters","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query. Supports Danish and English. Examples: 'soldater i skyttegraven', 'Christmas 1915', 'hjemve og familie'."},"top_k":{"type":"integer","description":"Maximum number of results to return. Defaults to 10, max 50.","default":10,"minimum":1,"maximum":50}},"required":["query"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]},{"name":"find_similar_letters","kind":"answer","impl":"imperative","description":"Returns pre-computed nearest-neighbour letters for a given letter ID, ranked by embedding similarity. Useful for corpus exploration and finding thematic clusters. Similarity scores are cosine similarity in embedding space.","title":"Find Similar Letters","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"letter_id":{"type":"integer","description":"Numeric ID of the source letter."},"top_k":{"type":"integer","description":"Maximum number of similar letters to return. Defaults to 5, max 20.","default":5,"minimum":1,"maximum":20}},"required":["letter_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]},{"name":"browse_letters","kind":"answer","impl":"imperative","description":"Returns a paginated list of letter metadata filtered by date range, sender, recipient, or place. Does not include letter body text — use get_letter for full content. All text filters are case-insensitive substring matches.","title":"Browse Letters","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"date_from":{"type":"string","description":"ISO 8601 date string (YYYY-MM-DD). Only include letters on or after this date."},"date_to":{"type":"string","description":"ISO 8601 date string (YYYY-MM-DD). Only include letters on or before this date."},"sender":{"type":"string","description":"Case-insensitive substring filter on the sender field."},"recipient":{"type":"string","description":"Case-insensitive substring filter on the recipient field."},"place":{"type":"string","description":"Case-insensitive substring filter on the place field (writing location)."},"offset":{"type":"integer","description":"Zero-based pagination offset. Defaults to 0.","default":0,"minimum":0},"limit":{"type":"integer","description":"Maximum number of letters to return per page. Defaults to 20, max 100.","default":20,"minimum":1,"maximum":100}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]},{"name":"get_letter","kind":"answer","impl":"imperative","description":"Fetch a specific WW1 Danish letter by ID (1-665). Returns full text in original archaic Danish and modernized Danish, plus metadata. Optionally includes sentiment, emotion, and narrative arc analysis.","title":"Get Letter","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"letter_id":{"type":"integer","minimum":1,"maximum":665,"description":"The letter ID (1-665)"},"include_analysis":{"type":"boolean","default":false,"description":"If true, include sentiment scores, emotion vectors, and narrative arc type"}},"required":["letter_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]},{"name":"get_person","kind":"answer","impl":"imperative","description":"Fetch a specific person from the WW1 Danish letters social network by ID. Returns biographical data, letters they sent/received, and optionally their network connections (degree centrality, betweenness centrality, pagerank).","title":"Get Person","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"person_id":{"type":"string","description":"The person ID (canonical name)"},"include_letters":{"type":"boolean","default":true,"description":"If true, include list of letters sent/received by this person"},"include_network":{"type":"boolean","default":false,"description":"If true, include network metrics and connected persons from social-network.json"}},"required":["person_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]},{"name":"get_place","kind":"answer","impl":"imperative","description":"Fetch a specific place (location) mentioned in the WW1 Danish letters. Returns geographical data (coordinates, Wikidata link), photos, and optionally the list of letters mentioning this place.","title":"Get Place","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"place_id":{"type":"string","description":"The place ID (name)"},"include_letters":{"type":"boolean","default":true,"description":"If true, include list of letters mentioning this place"}},"required":["place_id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]},{"name":"get_social_network","kind":"answer","impl":"imperative","description":"Fetch the WW1 Danish letters social network. Returns nodes (persons) ranked by centrality/pagerank, and optionally edges (connections) between them. If person_id is provided, returns that person's subgraph; otherwise returns top 20 nodes by pagerank.","title":"Get Social Network","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"person_id":{"type":"string","description":"Optional: if provided, return only this person's node and their immediate connections"},"include_edges":{"type":"boolean","default":true,"description":"If true, include edges (connections) in the result"},"include_temporal_slices":{"type":"boolean","default":false,"description":"If true, include yearly breakdown of network growth over the war period"}},"required":[]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]},{"name":"get_sentiment","kind":"answer","impl":"imperative","description":"Retrieve sentiment analysis for a single letter, a date range, or a corpus summary. Returns emotional intensity (CVP), dominant emotions, and negative ratios.","title":"Get Sentiment Analysis","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"letter_id":{"type":"integer","minimum":1,"maximum":665,"description":"Letter ID (1-665). If provided, returns sentiment for that letter."},"date_from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD). If provided with date_to, returns range analysis."},"date_to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"End date (YYYY-MM-DD). If provided with date_from, returns range analysis."}},"description":"Provide either letter_id, date_from/date_to, or neither (for corpus overview)."},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]},{"name":"get_narrative_arc","kind":"answer","impl":"imperative","description":"Retrieve narrative arc analysis for a single letter or a date range. Identifies arc types (rising, falling, flat, etc.) and emotional trajectories.","title":"Get Narrative Arc Analysis","annotations":{"readOnlyHint":true},"inputSchema":{"type":"object","properties":{"letter_id":{"type":"integer","minimum":1,"maximum":665,"description":"Letter ID (1-665). If provided, returns arc for that letter."},"date_from":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"Start date (YYYY-MM-DD). If provided with date_to, returns range analysis."},"date_to":{"type":"string","pattern":"^\\d{4}-\\d{2}-\\d{2}$","description":"End date (YYYY-MM-DD). If provided with date_from, returns range analysis."}},"description":"Provide either letter_id or date_from/date_to."},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]},{"name":"navigate_to","kind":"act","impl":"imperative","description":"Navigates to a specific letter, person, place, or application view within the jernkorsetbreve app","title":"Navigate to Letter, Person, Place, or View","annotations":{"readOnlyHint":false},"inputSchema":{"type":"object","properties":{"target":{"type":"string","enum":["letter","person","place","view"],"description":"What to navigate to: a letter, person, place, or application view"},"id":{"oneOf":[{"type":"integer","description":"Letter ID (1-665)"},{"type":"string","description":"Person/place slug or view name"}],"description":"The ID or identifier for the target (letter ID, person slug, place slug, or view name)"}},"required":["target","id"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/breve/","/personer/","/steder/","/billeder/","/letters/1/"]}],"category":"Media & Personal","favicon":"/favicons/jernkorset.dk.png","apiSurface":"spec","toolCount":10}}