From 241b5cd8347270fb0ae5a8ae0ea3ec1e129941cc Mon Sep 17 00:00:00 2001 From: daniel Date: Sun, 22 Feb 2026 23:38:12 +0000 Subject: [PATCH] Add BCE temporal tags to all documents; add temporal-dating steering doc --- .factbase/factbase.db-shm | Bin 32768 -> 32768 bytes .factbase/factbase.db-wal | Bin 4173592 -> 4173592 bytes .kiro/steering/temporal-dating.md | 37 + battles/battle-of-actium.md | 10 +- battles/battle-of-cannae.md | 6 +- battles/battle-of-gaugamela.md | 6 +- battles/battle-of-kadesh.md | 6 +- battles/battle-of-marathon.md | 4 +- battles/battle-of-thermopylae.md | 4 +- cities/alexandria.md | 8 +- cities/athens.md | 10 +- cities/babylon.md | 4 +- cities/pompeii.md | 2 +- cities/rome.md | 4 +- cities/troy.md | 12 +- cities/ur.md | 8 +- civilizations/akkadian-empire.md | 10 +- civilizations/ancient-china.md | 20 +- civilizations/ancient-egypt.md | 20 +- civilizations/ancient-greece.md | 20 +- civilizations/assyrian-empire.md | 14 +- civilizations/babylonia.md | 16 +- civilizations/carthage.md | 12 +- civilizations/hittite-empire.md | 16 +- civilizations/maurya-empire.md | 12 +- civilizations/minoan-civilization.md | 6 +- civilizations/mycenaean-civilization.md | 10 +- civilizations/persian-empire.md | 14 +- civilizations/phoenicia.md | 14 +- civilizations/roman-republic-and-empire.md | 18 +- civilizations/sumer.md | 20 +- cultural-movements/greek-philosophy.md | 24 +- cultural-movements/hellenism.md | 4 +- definitions/ancient-history-terms.md | 10 +- legal-codes/code-of-hammurabi.md | 4 +- legal-codes/code-of-ur-nammu.md | 4 +- legal-codes/twelve-tables.md | 8 +- logs/mcp-puppeteer-2026-02-22.log | 6 + religions/ancient-egyptian-religion.md | 4 +- religions/early-christianity.md | 2 +- religions/greek-religion.md | 6 +- religions/mesopotamian-religion.md | 4 +- religions/roman-religion.md | 2 +- religions/zoroastrianism.md | 4 +- rulers/alexander-the-great.md | 18 +- rulers/ashoka.md | 12 +- rulers/augustus.md | 22 +- rulers/cyrus-the-great.md | 14 +- rulers/hammurabi.md | 6 +- rulers/julius-caesar.md | 24 +- rulers/pericles.md | 24 +- rulers/qin-shi-huang.md | 14 +- rulers/ramesses-ii.md | 12 +- rulers/sargon-of-akkad.md | 4 +- technologies/bronze-working.md | 8 +- technologies/iron-smelting.md | 10 +- technologies/roman-aqueducts.md | 8 +- technologies/roman-roads.md | 6 +- test | 9616 ++++++++++++++++++++ test-bce-tags.md | 11 + trade-routes/amber-road.md | 4 +- trade-routes/incense-route.md | 2 +- trade-routes/silk-road.md | 4 +- treaties/peace-of-nicias.md | 8 +- treaties/treaty-of-apamea.md | 6 +- treaties/treaty-of-kadesh.md | 6 +- writing-systems/cuneiform.md | 8 +- writing-systems/egyptian-hieroglyphics.md | 12 +- writing-systems/phoenician-alphabet.md | 8 +- 69 files changed, 9981 insertions(+), 311 deletions(-) create mode 100644 .kiro/steering/temporal-dating.md create mode 100644 test create mode 100644 test-bce-tags.md diff --git a/.factbase/factbase.db-shm b/.factbase/factbase.db-shm index a59cc3d4860810641835ba678ac22c4a45089814..8f5ad79b9f2522c3801b35099030b44aac93d9b3 100644 GIT binary patch literal 32768 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 HWn;x(l`-xG diff --git a/.factbase/factbase.db-wal b/.factbase/factbase.db-wal index e3984d732dd32faa94562c10ece24d8698e7b34b..8f4f15d8c74fa8f3757c84f6fdd2e0c4c6f3de0e 100644 GIT binary patch delta 421696 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%0DMfeOVwivf7N#Olz2%`f_i-HO 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

BJO-O(UgA4r1xXkVc}?D8dWfq*wh&~cR4 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 N_~P<@2lc$_e*ny>)&2kg delta 123895 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 header\"],\"definitions_files\":{\"description\":\"When encountering undefined acronyms or ambiguous terms (@q[ambiguous] questions), create or update a definitions file rather than only answering inline. This builds a reusable glossary that prevents the same question from recurring across documents.\",\"folder\":\"Place in a definitions/ folder (type: 'definition'). Organize by domain: definitions/taxonomy-terms.md, definitions/technical-terms.md, definitions/historical-terms.md\",\"when_to_create\":\"Create definitions files when you encounter @q[ambiguous] questions about acronyms, jargon, or domain-specific terms. Do NOT create them for one-off clarifications (like 'is this the common or scientific name').\",\"workflow\":\"1. Check if a definitions file already covers the term. 2. If not, create or update the appropriate definitions file. 3. Answer the review question with: 'See [[id]] definitions file' so the fact gets linked. 4. The definition is now searchable and reusable across the knowledge base.\"},\"format\":\"markdown (.md files)\",\"inbox_blocks\":{\"description\":\"Stage corrections or new facts for LLM-assisted integration into the document body.\",\"format\":\"\\n- New fact here\\n\",\"processing\":\"Integrated by apply_review_answers or `factbase review --apply`, then the block is removed\"},\"linking\":{\"bad\":\"This mushroom grows near birch trees\",\"description\":\"Use exact entity names matching other document titles for automatic link detection.\",\"good\":\"Amanita muscaria forms mycorrhizal associations with Betula pendula\",\"manual\":\"See [[a1b2c3]] for the full specification\"},\"sources\":{\"author_knowledge\":\"Facts known firsthand by the knowledge base owner belong in dedicated author-knowledge/ documents. Cite as: 'Author knowledge, see [[id]]'. Agents must NEVER create author knowledge files or use 'Author knowledge' as a source — always cite the actual data source instead.\",\"description\":\"Cite sources with markdown footnotes for fact verification. Every source MUST be traceable — include enough detail to locate the original data.\",\"example\":\"- First described by Linnaeus @t[=1753] [^1][^2]\\n\\n---\\n[^1]: Linnaeus, Species Plantarum, vol. 2, p. 1171, 1753\\n[^2]: MycoBank record #120098, accessed 2024-01-10\",\"format\":\"Add [^N] after the fact, define [^N]: at the bottom after a --- separator\",\"traceability\":\"A source name alone is NEVER sufficient. Always include dates, URLs, page numbers, or other identifiers. BAD: 'Wikipedia'. GOOD: 'Wikipedia \\\"Amanita muscaria\\\", accessed 2024-01-15, https://en.wikipedia.org/wiki/Amanita_muscaria'\",\"types\":\"Journal article, Database record, Official report, News article, Book, Website, Field observation, Author knowledge (human-only), Archival document, Personal communication, Inferred, Unverified\"},\"structure\":{\"archive\":\"Documents in archive/ folders are indexed and searchable but skipped by quality checks. Use for stable/historical documents: species/archive/reclassified.md, events/archive/superseded.md\",\"filenames\":\"lowercase-with-hyphens.md (e.g., amanita-muscaria.md, battle-of-thermopylae.md, platform-api.md)\",\"id_header\":\" is auto-injected on first scan — never create or modify this\",\"length\":\"Minimum 100 chars, optimal 500-5000 chars\",\"reorganization\":\"If a file is in the wrong folder or has a poor name, rename or move it freely using file tools. Just run scan_repository afterward to re-index. The factbase ID in the header is stable across renames.\",\"title\":\"First # Heading becomes the document title\",\"type\":\"Derived from parent folder: species/ → 'species', events/ → 'event', people/ → 'person'. Entity folder convention: if filename matches parent folder (e.g., species/amanita-muscaria/amanita-muscaria.md), type comes from grandparent ('species')\"},\"taxonomy_design\":{\"description\":\"Before creating documents, design your knowledge base structure. Templates below are illustrations — this framework helps you think through ANY domain.\",\"steps\":[{\"guidance\":\"Each category becomes a folder and document type. Start with 2-4 types. Examples: a music KB might have artists/, albums/, labels/, genres/. A legal KB might have statutes/, cases/, jurisdictions/. A biology KB might have species/, habitats/, researchers/.\",\"question\":\"If I organized this domain into filing cabinets, what would the labels be?\",\"step\":\"1. Identify entity types\"},{\"guidance\":\"Group related facts into ## headings. Each entity type will have its own recurring section pattern. An 'album' might have ## Tracks, ## Personnel, ## Reception. A 'statute' might have ## Text, ## Amendments, ## Case Law.\",\"question\":\"What would someone want to know about each type of entity?\",\"step\":\"2. Design sections per type\"},{\"guidance\":\"Dynamic facts need @t[...] tags. Static facts don't. Dynamic: conservation status, population, current leader, market price. Static: founding date, chemical formula, date of battle, author of a book.\",\"question\":\"Could this fact be different next year?\",\"step\":\"3. Identify what changes over time\"},{\"guidance\":\"These inform your footnote types. Scientific domain: journal articles, databases, field observations. Legal: court records, legislative databases. Historical: primary sources, academic works. Business: official filings, press releases.\",\"question\":\"What are the authoritative sources for this domain?\",\"step\":\"4. Identify your sources\"},{\"guidance\":\"Begin with a few documents. The structure reveals itself as you add data. You can reorganize later with organize_analyze and organize tools. Don't over-design upfront.\",\"question\":\"What are the 2-3 most important entities to document first?\",\"step\":\"5. Start small, evolve\"}]},\"template_pattern\":{\"description\":\"All factbase documents follow the same structural pattern regardless of domain. Adapt the sections to fit your subject matter.\",\"pattern\":{\"facts\":\"Each bullet is one fact. Attach @t[...] to anything that changes over time.\",\"links\":\"Use exact entity names from other documents to create automatic cross-references.\",\"sections\":\"Group related facts under ## headings. Choose headings that make sense for the entity.\",\"sources\":\"Cite every fact with [^N] footnotes. Define sources after a --- separator.\",\"title\":\"# Entity Name — the document title IS the entity name\"}},\"templates\":{\"definitions\":\"# Definitions: \\n\\n## Acronyms\\n- **PCR**: Polymerase Chain Reaction — method for amplifying DNA sequences\\n- **BCE**: Before Common Era — calendar notation for dates before year 1\\n\\n## Terms\\n- **Mycorrhiza**: Symbiotic association between a fungus and plant roots\\n- **Holotype**: The single specimen designated as the name-bearing type of a species\",\"generic\":\"# Entity Name\\n\\n## Overview\\nBrief description of the entity.\\n\\n## Key Facts\\n- Fact with temporal context @t[~2024] [^1]\\n- Fact with date range @t[2020..2023] [^2]\\n- Static fact that doesn't change [^3]\\n\\n## Relationships\\n- Related to Other Entity Name [^1]\\n\\n---\\n[^1]: Source name, date or URL\\n[^2]: Source name, date or URL\\n[^3]: Source name, date or URL\",\"historical_entity\":\"# Battle of Thermopylae\\n\\n## Overview\\n- Date: @t[=480-08] (August 480 BCE) [^1]\\n- Location: Thermopylae pass, Greece\\n- Outcome: Persian victory\\n\\n## Participants\\n- Greek alliance led by Leonidas I of Sparta [^1]\\n- Persian forces led by Xerxes I [^1]\\n\\n## Significance\\n- Delayed Persian advance, enabled Greek naval preparation @t[480..479] [^2]\\n\\n---\\n[^1]: Herodotus, Histories, Book VII\\n[^2]: Holland, Persian Fire, pp. 255-280, 2005\",\"natural_science\":\"# Amanita muscaria\\n\\n## Classification\\n- Kingdom: Fungi @t[=1753] [^1]\\n- Family: Amanitaceae\\n- Common name: Fly agaric\\n\\n## Habitat & Distribution\\n- Found in temperate forests across Northern Hemisphere @t[~2024] [^2]\\n- Mycorrhizal association with birch, pine, spruce\\n\\n## Edibility & Toxicity\\n- Contains ibotenic acid and muscimol [^3]\\n- Classified as poisonous @t[~2024]\\n\\n---\\n[^1]: Linnaeus, Species Plantarum, 1753\\n[^2]: MycoBank database, accessed 2024-01\\n[^3]: Michelot & Melendez-Howell, Mycological Research, 2003\",\"organization\":\"# Organization Name\\n\\n## Overview\\nWhat the organization does.\\n\\n## Key Facts\\n- Founded @t[=2015] [^1]\\n- Size: ~500 members @t[~2024-01]\\n\\n## Leadership\\n- Director: Name @t[2020..]\\n\\n---\\n[^1]: Source, date\",\"person\":\"# Full Name\\n\\n**Role:** Title at Organization @t[2023..]\\n**Location:** City, Country @t[~2024-01]\\n\\n## Career History\\n- Current role @t[2023..] [^1]\\n\\n## Current Focus\\n- Key project or activity @t[2024..]\\n\\n---\\n[^1]: Source, date\",\"project\":\"# Project Name\\n\\n## Overview\\nPurpose and goals.\\n\\n## Status\\nCurrent phase @t[2024-Q1..]\\n\\n## Team\\n- Name - Role @t[2024..]\\n\\n---\\n[^1]: Source, date\"},\"temporal_tags\":{\"common_errors\":{\"rule\":\"If it's not a year, month, day, quarter, or ?, it does NOT go inside @t[...]\",\"✅ CORRECT — dates only\":\"@t[=2024] @t[~2024] @t[1753..] @t[2020..2023] @t[?]\",\"❌ WRONG — text inside tag\":\"@t[bright red when young] @t[seasonal] @t[since ancient times] @t[traditional..modern] @t[varies by region]\"},\"description\":\"Every dynamic fact MUST have a temporal tag. Static facts (mathematical constants, chemical formulas) do not need one. CRITICAL: Only dates/years go inside @t[...] — NEVER put descriptive text inside the brackets.\",\"examples\":[\"- Population: ~12,000 @t[~2024-01] [^1]\",\"- Reclassified to family Omphalotaceae @t[=2006] [^2]\",\"- Director of Operations at Acme Corp @t[2022..] [^3]\",\"- Cap color: bright red to orange @t[~2024] [^1] ← description is in the text, date is in the tag\",\"- Fruiting season: summer to autumn @t[~2024] [^2] ← 'summer to autumn' goes in the text, NOT in the tag\"],\"granularity\":\"Year (2024), Quarter (2024-Q2), Month (2024-03), Day (2024-03-15)\",\"placement\":\"Place the @t[...] tag AFTER the fact text, BEFORE the source footnote: `- Fact description @t[~2024] [^1]`\",\"syntax\":{\"@t[..2020]\":\"Historical, ended at this date\",\"@t[2020..2022]\":\"Date range — started and ended\",\"@t[2021..]\":\"Started, still ongoing\",\"@t[=2024-03]\":\"Event — happened at this exact date\",\"@t[?]\":\"Date unknown / unverified — use this when you cannot determine the date\",\"@t[~2024-03]\":\"State — true as of this date, may change\"},\"valid_content\":\"ONLY these go inside @t[...]: years (2024), quarters (2024-Q2), months (2024-03), days (2024-03-15), ranges with dates (2020..2023), or ? for unknown\"}}" + } + ] + } + } + ], + "status": "Success" + }, + { + "tool_use_id": "tooluse_jwjSFXqDg0fhtySlS7zfag", + "content": [ + { + "Json": { + "content": [ + { + "type": "text", + "text": "{\"repositories\":[{\"document_count\":66,\"id\":\"main\",\"last_indexed_at\":null,\"name\":\"factbase-ancient-history\",\"path\":\"/home/ubuntu/work/factbase-ancient-history\"}]}" + } + ] + } + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "fd8fe9e1-cae8-4679-a95d-c6d02d661bb3", + "content": "", + "tool_uses": [ + { + "id": "tooluse_MEqGU8U1S8c1iZZ4XvFiUO", + "name": "search_content", + "orig_name": "search_content", + "args": { + "pattern": "@t\\[", + "repo": "main", + "limit": 15 + }, + "orig_args": { + "pattern": "@t\\[", + "repo": "main", + "limit": 15 + } + } + ] + } + }, + "request_metadata": { + "request_id": "66899c02-0871-4bd2-ac63-96c3c3c85f2f", + "context_usage_percentage": 4.3325, + "message_id": "fd8fe9e1-cae8-4679-a95d-c6d02d661bb3", + "request_start_timestamp_ms": 1771801548442, + "stream_end_timestamp_ms": 1771801551118, + "time_to_first_chunk": { + "secs": 2, + "nanos": 472264958 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 12746 + }, + { + "secs": 0, + "nanos": 5492 + }, + { + "secs": 0, + "nanos": 4225 + }, + { + "secs": 0, + "nanos": 4839 + }, + { + "secs": 0, + "nanos": 74201411 + }, + { + "secs": 0, + "nanos": 33043 + }, + { + "secs": 0, + "nanos": 107438074 + }, + { + "secs": 0, + "nanos": 15380763 + }, + { + "secs": 0, + "nanos": 5284 + }, + { + "secs": 0, + "nanos": 6737477 + }, + { + "secs": 0, + "nanos": 8941 + }, + { + "secs": 0, + "nanos": 497410 + }, + { + "secs": 0, + "nanos": 492 + } + ], + "user_prompt_length": 0, + "response_size": 49, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_MEqGU8U1S8c1iZZ4XvFiUO", + "search_content" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_MEqGU8U1S8c1iZZ4XvFiUO", + "content": [ + { + "Json": { + "content": [ + { + "type": "text", + "text": "{\"count\":0,\"pattern\":\"@t\\\\[\",\"results\":[]}" + } + ] + } + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "dc68aafc-3310-46b8-92bf-200d1d4d1ce3", + "content": "", + "tool_uses": [ + { + "id": "tooluse_cXFyHnK8TYkm1ZKwnUKdL3", + "name": "search_content", + "orig_name": "search_content", + "args": { + "pattern": "BCE", + "repo": "main", + "limit": 10 + }, + "orig_args": { + "pattern": "BCE", + "repo": "main", + "limit": 10 + } + } + ] + } + }, + "request_metadata": { + "request_id": "150d2233-2743-4256-9b50-809cc2693567", + "context_usage_percentage": 4.3458, + "message_id": "dc68aafc-3310-46b8-92bf-200d1d4d1ce3", + "request_start_timestamp_ms": 1771801551237, + "stream_end_timestamp_ms": 1771801553945, + "time_to_first_chunk": { + "secs": 2, + "nanos": 592899313 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 13183 + }, + { + "secs": 0, + "nanos": 4493 + }, + { + "secs": 0, + "nanos": 7145 + }, + { + "secs": 0, + "nanos": 2716 + }, + { + "secs": 0, + "nanos": 2446 + }, + { + "secs": 0, + "nanos": 2476 + }, + { + "secs": 0, + "nanos": 2036 + }, + { + "secs": 0, + "nanos": 2396 + }, + { + "secs": 0, + "nanos": 86184752 + }, + { + "secs": 0, + "nanos": 21265252 + }, + { + "secs": 0, + "nanos": 6526245 + }, + { + "secs": 0, + "nanos": 625580 + }, + { + "secs": 0, + "nanos": 441099 + }, + { + "secs": 0, + "nanos": 253 + } + ], + "user_prompt_length": 0, + "response_size": 47, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_cXFyHnK8TYkm1ZKwnUKdL3", + "search_content" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_cXFyHnK8TYkm1ZKwnUKdL3", + "content": [ + { + "Json": { + "content": [ + { + "type": "text", + "text": "{\"count\":10,\"pattern\":\"BCE\",\"results\":[{\"file_path\":\"civilizations/akkadian-empire.md\",\"id\":\"ee0ff0\",\"matches\":[{\"context\":\"7: The Akkadian Empire (~2334–2154 BCE) was the first empire in Mesopotamia, unifying Sumerian and Akkadian-speaking city-states under Sargon of Akkad. It established a model for subsequent Mesopotamian empires.\",\"line\":\"The Akkadian Empire (~2334–2154 BCE) was the first empire in Mesopotamia, unifying Sumerian and Akkadian-speaking city-states under Sargon of Akkad. It established a model for subsequent Mesopotamian empires.\",\"line_number\":7},{\"context\":\"11: - Period: ~2334–2154 BCE\",\"line\":\"- Period: ~2334–2154 BCE\",\"line_number\":11},{\"context\":\"17: - Sargon of Akkad (~2334–2279 BCE): Founder, conquered Sumerian city-states [^1]\",\"line\":\"- Sargon of Akkad (~2334–2279 BCE): Founder, conquered Sumerian city-states [^1]\",\"line_number\":17},{\"context\":\"18: - Naram-Sin (~2254–2218 BCE): Grandson of Sargon, expanded empire, declared himself divine\",\"line\":\"- Naram-Sin (~2254–2218 BCE): Grandson of Sargon, expanded empire, declared himself divine\",\"line_number\":18},{\"context\":\"27: Collapsed ~2154 BCE due to internal revolts, Gutian invasions, and possibly severe drought linked to the 4.2-kiloyear climate event [^2].\",\"line\":\"Collapsed ~2154 BCE due to internal revolts, Gutian invasions, and possibly severe drought linked to the 4.2-kiloyear climate event [^2].\",\"line_number\":27},{\"context\":\"39: - [x] `@q[temporal]` Line 11: \\\"Period: ~2334–2154 BCE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 11: \\\"Period: ~2334–2154 BCE\\\" - when was this true?\",\"line_number\":39},{\"context\":\"40: > 2154 BCE event. Attested by Westenholz (1997) [^1]; Weiss (1993) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 2154 BCE event. Attested by Westenholz (1997) [^1]; Weiss (1993) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":40},{\"context\":\"47: - [x] `@q[temporal]` Line 17: \\\"Sargon of Akkad (~2334–2279 BCE): Founder, conquered Sumerian city-states [^1]\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 17: \\\"Sargon of Akkad (~2334–2279 BCE): Founder, conquered Sumerian city-states [^1]\\\" - when was this true?\",\"line_number\":47},{\"context\":\"48: > 2279 BCE event. Attested by Westenholz (1997) [^1]; Weiss (1993) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 2279 BCE event. Attested by Westenholz (1997) [^1]; Weiss (1993) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":48},{\"context\":\"49: - [x] `@q[temporal]` Line 18: \\\"Naram-Sin (~2254–2218 BCE): Grandson of Sargon, expanded empire, declared h...\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 18: \\\"Naram-Sin (~2254–2218 BCE): Grandson of Sargon, expanded empire, declared h...\\\" - when was this true?\",\"line_number\":49},{\"context\":\"50: > 2218 BCE event. Attested by Westenholz (1997) [^1]; Weiss (1993) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 2218 BCE event. Attested by Westenholz (1997) [^1]; Weiss (1993) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":50},{\"context\":\"61: - [x] `@q[missing]` Line 11: \\\"Period: ~2334–2154 BCE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 11: \\\"Period: ~2334–2154 BCE\\\" - what is the source?\",\"line_number\":61},{\"context\":\"69: - [x] `@q[missing]` Line 18: \\\"Naram-Sin (~2254–2218 BCE): Grandson of Sargon, expanded empire, declared h...\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 18: \\\"Naram-Sin (~2254–2218 BCE): Grandson of Sargon, expanded empire, declared h...\\\" - what is the source?\",\"line_number\":69},{\"context\":\"79: - [x] `@q[stale]` Line 17: \\\"Sargon of Akkad (~2334–2279 BCE): Founder, conquered Sumerian city-states [^1]\\\" - Westenholz source from 1997 may be outdated, is this still accurate?\",\"line\":\"- [x] `@q[stale]` Line 17: \\\"Sargon of Akkad (~2334–2279 BCE): Founder, conquered Sumerian city-states [^1]\\\" - Westenholz source from 1997 may be outdated, is this still accurate?\",\"line_number\":79}],\"repo_id\":\"main\",\"title\":\"Akkadian Empire\",\"type\":\"civilization\"},{\"file_path\":\"rulers/alexander-the-great.md\",\"id\":\"817dc2\",\"matches\":[{\"context\":\"7: Alexander III of Macedon (356–323 BCE), known as Alexander the Great, conquered the Persian Empire and created one of the largest empires in ancient history, spreading Greek culture from Egypt to India.\",\"line\":\"Alexander III of Macedon (356–323 BCE), known as Alexander the Great, conquered the Persian Empire and created one of the largest empires in ancient history, spreading Greek culture from Egypt to India.\",\"line_number\":7},{\"context\":\"10: - Born: 356 BCE, Pella, Macedon\",\"line\":\"- Born: 356 BCE, Pella, Macedon\",\"line_number\":10},{\"context\":\"11: - Died: 323 BCE, Babylon (age 32)\",\"line\":\"- Died: 323 BCE, Babylon (age 32)\",\"line_number\":11},{\"context\":\"12: - Reign: 336–323 BCE\",\"line\":\"- Reign: 336–323 BCE\",\"line_number\":12},{\"context\":\"17: - Battle of Granicus (334 BCE): First victory against Persia in Anatolia\",\"line\":\"- Battle of Granicus (334 BCE): First victory against Persia in Anatolia\",\"line_number\":17},{\"context\":\"18: - Battle of Issus (333 BCE): Defeated Darius III\",\"line\":\"- Battle of Issus (333 BCE): Defeated Darius III\",\"line_number\":18},{\"context\":\"19: - Siege of Tyre (332 BCE): Seven-month siege of the island city\",\"line\":\"- Siege of Tyre (332 BCE): Seven-month siege of the island city\",\"line_number\":19},{\"context\":\"20: - Battle of Gaugamela (331 BCE): Decisive defeat of the Persian Empire [^1]\",\"line\":\"- Battle of Gaugamela (331 BCE): Decisive defeat of the Persian Empire [^1]\",\"line_number\":20},{\"context\":\"21: - Indian campaign (327–325 BCE): Defeated King Porus at the Hydaspes\",\"line\":\"- Indian campaign (327–325 BCE): Defeated King Porus at the Hydaspes\",\"line_number\":21},{\"context\":\"37: - [x] `@q[temporal]` Line 10: \\\"Born: 356 BCE, Pella, Macedon\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 10: \\\"Born: 356 BCE, Pella, Macedon\\\" - when was this true?\",\"line_number\":37},{\"context\":\"38: > 356 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 356 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":38},{\"context\":\"39: - [x] `@q[temporal]` Line 11: \\\"Died: 323 BCE, Babylon (age 32)\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 11: \\\"Died: 323 BCE, Babylon (age 32)\\\" - when was this true?\",\"line_number\":39},{\"context\":\"40: > 323 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 323 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":40},{\"context\":\"41: - [x] `@q[temporal]` Line 12: \\\"Reign: 336–323 BCE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 12: \\\"Reign: 336–323 BCE\\\" - when was this true?\",\"line_number\":41},{\"context\":\"42: > 323 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 323 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":42},{\"context\":\"47: - [x] `@q[temporal]` Line 17: \\\"Battle of Granicus (334 BCE): First victory against Persia in Anatolia\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 17: \\\"Battle of Granicus (334 BCE): First victory against Persia in Anatolia\\\" - when was this true?\",\"line_number\":47},{\"context\":\"48: > 334 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 334 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":48},{\"context\":\"49: - [x] `@q[temporal]` Line 18: \\\"Battle of Issus (333 BCE): Defeated Darius III\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 18: \\\"Battle of Issus (333 BCE): Defeated Darius III\\\" - when was this true?\",\"line_number\":49},{\"context\":\"50: > 333 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 333 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":50},{\"context\":\"51: - [x] `@q[temporal]` Line 19: \\\"Siege of Tyre (332 BCE): Seven-month siege of the island city\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 19: \\\"Siege of Tyre (332 BCE): Seven-month siege of the island city\\\" - when was this true?\",\"line_number\":51},{\"context\":\"52: > 332 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 332 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":52},{\"context\":\"53: - [x] `@q[temporal]` Line 20: \\\"Battle of Gaugamela (331 BCE): Decisive defeat of the Persian Empire [^1]\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 20: \\\"Battle of Gaugamela (331 BCE): Decisive defeat of the Persian Empire [^1]\\\" - when was this true?\",\"line_number\":53},{\"context\":\"54: > 331 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 331 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":54},{\"context\":\"55: - [x] `@q[temporal]` Line 21: \\\"Indian campaign (327–325 BCE): Defeated King Porus at the Hydaspes\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 21: \\\"Indian campaign (327–325 BCE): Defeated King Porus at the Hydaspes\\\" - when was this true?\",\"line_number\":55},{\"context\":\"56: > 325 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 325 BCE event. Attested by Arrian (~130 CE) [^1]; Green (1991) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":56},{\"context\":\"65: - [x] `@q[missing]` Line 10: \\\"Born: 356 BCE, Pella, Macedon\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 10: \\\"Born: 356 BCE, Pella, Macedon\\\" - what is the source?\",\"line_number\":65},{\"context\":\"67: - [x] `@q[missing]` Line 11: \\\"Died: 323 BCE, Babylon (age 32)\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 11: \\\"Died: 323 BCE, Babylon (age 32)\\\" - what is the source?\",\"line_number\":67},{\"context\":\"69: - [x] `@q[missing]` Line 12: \\\"Reign: 336–323 BCE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 12: \\\"Reign: 336–323 BCE\\\" - what is the source?\",\"line_number\":69},{\"context\":\"75: - [x] `@q[missing]` Line 17: \\\"Battle of Granicus (334 BCE): First victory against Persia in Anatolia\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 17: \\\"Battle of Granicus (334 BCE): First victory against Persia in Anatolia\\\" - what is the source?\",\"line_number\":75},{\"context\":\"77: - [x] `@q[missing]` Line 18: \\\"Battle of Issus (333 BCE): Defeated Darius III\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 18: \\\"Battle of Issus (333 BCE): Defeated Darius III\\\" - what is the source?\",\"line_number\":77},{\"context\":\"79: - [x] `@q[missing]` Line 19: \\\"Siege of Tyre (332 BCE): Seven-month siege of the island city\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 19: \\\"Siege of Tyre (332 BCE): Seven-month siege of the island city\\\" - what is the source?\",\"line_number\":79},{\"context\":\"81: - [x] `@q[missing]` Line 21: \\\"Indian campaign (327–325 BCE): Defeated King Porus at the Hydaspes\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 21: \\\"Indian campaign (327–325 BCE): Defeated King Porus at the Hydaspes\\\" - what is the source?\",\"line_number\":81},{\"context\":\"91: - [x] `@q[ambiguous]` Line 18: \\\"Battle of Issus (333 BCE): Defeated Darius III\\\" - what does \\\"III\\\" mean in this context?\",\"line\":\"- [x] `@q[ambiguous]` Line 18: \\\"Battle of Issus (333 BCE): Defeated Darius III\\\" - what does \\\"III\\\" mean in this context?\",\"line_number\":91}],\"repo_id\":\"main\",\"title\":\"Alexander the Great\",\"type\":\"ruler\"},{\"file_path\":\"cities/alexandria.md\",\"id\":\"a069ce\",\"matches\":[{\"context\":\"7: Alexandria was founded by Alexander the Great in 331 BCE on the Mediterranean coast of Egypt. It became the intellectual capital of the Hellenistic world, home to the Great Library and the Pharos Lighthouse.\",\"line\":\"Alexandria was founded by Alexander the Great in 331 BCE on the Mediterranean coast of Egypt. It became the intellectual capital of the Hellenistic world, home to the Great Library and the Pharos Lighthouse.\",\"line_number\":7},{\"context\":\"11: - Founded: 331 BCE by Alexander the Great\",\"line\":\"- Founded: 331 BCE by Alexander the Great\",\"line_number\":11},{\"context\":\"12: - Capital of: Ptolemaic Egypt (305–30 BCE)\",\"line\":\"- Capital of: Ptolemaic Egypt (305–30 BCE)\",\"line_number\":12},{\"context\":\"18: - Pharos Lighthouse: One of the Seven Wonders, ~100–130 m tall, built ~280 BCE [^2]\",\"line\":\"- Pharos Lighthouse: One of the Seven Wonders, ~100–130 m tall, built ~280 BCE [^2]\",\"line_number\":18},{\"context\":\"38: - [x] `@q[temporal]` Line 11: \\\"Founded: 331 BCE by Alexander the Great\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 11: \\\"Founded: 331 BCE by Alexander the Great\\\" - when was this true?\",\"line_number\":38},{\"context\":\"39: > 331 BCE event. Attested by Casson (2001) [^1]; McKenzie (2007) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 331 BCE event. Attested by Casson (2001) [^1]; McKenzie (2007) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":39},{\"context\":\"40: - [x] `@q[temporal]` Line 12: \\\"Capital of: Ptolemaic Egypt (305–30 BCE)\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 12: \\\"Capital of: Ptolemaic Egypt (305–30 BCE)\\\" - when was this true?\",\"line_number\":40},{\"context\":\"41: > 30 BCE event. Attested by Casson (2001) [^1]; McKenzie (2007) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 30 BCE event. Attested by Casson (2001) [^1]; McKenzie (2007) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":41},{\"context\":\"64: - [x] `@q[missing]` Line 11: \\\"Founded: 331 BCE by Alexander the Great\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 11: \\\"Founded: 331 BCE by Alexander the Great\\\" - what is the source?\",\"line_number\":64},{\"context\":\"66: - [x] `@q[missing]` Line 12: \\\"Capital of: Ptolemaic Egypt (305–30 BCE)\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 12: \\\"Capital of: Ptolemaic Egypt (305–30 BCE)\\\" - what is the source?\",\"line_number\":66},{\"context\":\"85: > BC refers to Before Christ, equivalent to BCE (Before Common Era). Standard historical dating convention.\",\"line\":\"> BC refers to Before Christ, equivalent to BCE (Before Common Era). Standard historical dating convention.\",\"line_number\":85}],\"repo_id\":\"main\",\"title\":\"Alexandria\",\"type\":\"citie\"},{\"file_path\":\"trade-routes/amber-road.md\",\"id\":\"445d5a\",\"matches\":[{\"context\":\"10: - Period: ~3000 BCE – Roman era\",\"line\":\"- Period: ~3000 BCE – Roman era\",\"line_number\":10},{\"context\":\"21: - Baltic amber found in Mycenaean shaft graves (~1600 BCE) and Egyptian tombs\",\"line\":\"- Baltic amber found in Mycenaean shaft graves (~1600 BCE) and Egyptian tombs\",\"line_number\":21},{\"context\":\"33: - [x] `@q[temporal]` Line 10: \\\"Period: ~3000 BCE – Roman era\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 10: \\\"Period: ~3000 BCE – Roman era\\\" - when was this true?\",\"line_number\":33},{\"context\":\"34: > 3000 BCE event. Attested by Bouzek (1997) [^1]; Causey (2011) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 3000 BCE event. Attested by Bouzek (1997) [^1]; Causey (2011) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":34},{\"context\":\"47: - [x] `@q[temporal]` Line 21: \\\"Baltic amber found in Mycenaean shaft graves (~1600 BCE) and Egyptian tombs\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 21: \\\"Baltic amber found in Mycenaean shaft graves (~1600 BCE) and Egyptian tombs\\\" - when was this true?\",\"line_number\":47},{\"context\":\"48: > 1600 BCE event. Attested by Bouzek (1997) [^1]; Causey (2011) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 1600 BCE event. Attested by Bouzek (1997) [^1]; Causey (2011) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":48},{\"context\":\"53: - [x] `@q[missing]` Line 10: \\\"Period: ~3000 BCE – Roman era\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 10: \\\"Period: ~3000 BCE – Roman era\\\" - what is the source?\",\"line_number\":53},{\"context\":\"65: - [x] `@q[missing]` Line 21: \\\"Baltic amber found in Mycenaean shaft graves (~1600 BCE) and Egyptian tombs\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 21: \\\"Baltic amber found in Mycenaean shaft graves (~1600 BCE) and Egyptian tombs\\\" - what is the source?\",\"line_number\":65}],\"repo_id\":\"main\",\"title\":\"Amber Road\",\"type\":\"trade-route\"},{\"file_path\":\"civilizations/ancient-china.md\",\"id\":\"133a48\",\"matches\":[{\"context\":\"7: Ancient Chinese civilization developed along the Yellow and Yangtze rivers, producing enduring contributions to philosophy, governance, technology, and culture. This entry covers the period from the Shang dynasty through the Han dynasty (~1600 BCE – 220 CE).\",\"line\":\"Ancient Chinese civilization developed along the Yellow and Yangtze rivers, producing enduring contributions to philosophy, governance, technology, and culture. This entry covers the period from the Shang dynasty through the Han dynasty (~1600 BCE – 220 CE).\",\"line_number\":7},{\"context\":\"11: - Period covered: ~1600 BCE – 220 CE\",\"line\":\"- Period covered: ~1600 BCE – 220 CE\",\"line_number\":11},{\"context\":\"14: - Writing: Oracle bone script (~1200 BCE), evolving into seal script and clerical script\",\"line\":\"- Writing: Oracle bone script (~1200 BCE), evolving into seal script and clerical script\",\"line_number\":14},{\"context\":\"17: - Shang (~1600–1046 BCE): First historically verified dynasty, oracle bones, bronze casting [^1]\",\"line\":\"- Shang (~1600–1046 BCE): First historically verified dynasty, oracle bones, bronze casting [^1]\",\"line_number\":17},{\"context\":\"18: - Zhou (~1046–256 BCE): Longest dynasty, Mandate of Heaven, Confucius, Laozi\",\"line\":\"- Zhou (~1046–256 BCE): Longest dynasty, Mandate of Heaven, Confucius, Laozi\",\"line_number\":18},{\"context\":\"19: - Qin (221–206 BCE): First unified empire under Qin Shi Huang, Great Wall, standardization\",\"line\":\"- Qin (221–206 BCE): First unified empire under Qin Shi Huang, Great Wall, standardization\",\"line_number\":19},{\"context\":\"20: - Han (206 BCE – 220 CE): Silk Road trade, paper invention, Confucian state ideology\",\"line\":\"- Han (206 BCE – 220 CE): Silk Road trade, paper invention, Confucian state ideology\",\"line_number\":20},{\"context\":\"23: - Oracle bone script: Earliest Chinese writing ~1200 BCE\",\"line\":\"- Oracle bone script: Earliest Chinese writing ~1200 BCE\",\"line_number\":23},{\"context\":\"24: - Iron casting by ~500 BCE (centuries before the West)\",\"line\":\"- Iron casting by ~500 BCE (centuries before the West)\",\"line_number\":24},{\"context\":\"28: - Great Wall construction begun under Qin Shi Huang ~221 BCE\",\"line\":\"- Great Wall construction begun under Qin Shi Huang ~221 BCE\",\"line_number\":28},{\"context\":\"40: - [x] `@q[temporal]` Line 11: \\\"Period covered: ~1600 BCE – 220 CE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 11: \\\"Period covered: ~1600 BCE – 220 CE\\\" - when was this true?\",\"line_number\":40},{\"context\":\"41: > 1600 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 1600 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":41},{\"context\":\"46: - [x] `@q[temporal]` Line 14: \\\"Writing: Oracle bone script (~1200 BCE), evolving into seal script and cleric...\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 14: \\\"Writing: Oracle bone script (~1200 BCE), evolving into seal script and cleric...\\\" - when was this true?\",\"line_number\":46},{\"context\":\"47: > 1200 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 1200 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":47},{\"context\":\"48: - [x] `@q[temporal]` Line 17: \\\"Shang (~1600–1046 BCE): First historically verified dynasty, oracle bones, ...\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 17: \\\"Shang (~1600–1046 BCE): First historically verified dynasty, oracle bones, ...\\\" - when was this true?\",\"line_number\":48},{\"context\":\"49: > 1046 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 1046 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":49},{\"context\":\"50: - [x] `@q[temporal]` Line 18: \\\"Zhou (~1046–256 BCE): Longest dynasty, Mandate of Heaven, Confucius, Laozi\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 18: \\\"Zhou (~1046–256 BCE): Longest dynasty, Mandate of Heaven, Confucius, Laozi\\\" - when was this true?\",\"line_number\":50},{\"context\":\"51: > 256 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 256 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":51},{\"context\":\"52: - [x] `@q[temporal]` Line 19: \\\"Qin (221–206 BCE): First unified empire under Qin Shi Huang, Great Wall, st...\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 19: \\\"Qin (221–206 BCE): First unified empire under Qin Shi Huang, Great Wall, st...\\\" - when was this true?\",\"line_number\":52},{\"context\":\"53: > 206 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 206 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":53},{\"context\":\"54: - [x] `@q[temporal]` Line 20: \\\"Han (206 BCE – 220 CE): Silk Road trade, paper invention, Confucian state i...\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 20: \\\"Han (206 BCE – 220 CE): Silk Road trade, paper invention, Confucian state i...\\\" - when was this true?\",\"line_number\":54},{\"context\":\"55: > 206 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 206 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":55},{\"context\":\"56: - [x] `@q[temporal]` Line 23: \\\"Oracle bone script: Earliest Chinese writing ~1200 BCE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 23: \\\"Oracle bone script: Earliest Chinese writing ~1200 BCE\\\" - when was this true?\",\"line_number\":56},{\"context\":\"57: > 1200 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 1200 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":57},{\"context\":\"58: - [x] `@q[temporal]` Line 24: \\\"Iron casting by ~500 BCE (centuries before the West)\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 24: \\\"Iron casting by ~500 BCE (centuries before the West)\\\" - when was this true?\",\"line_number\":58},{\"context\":\"59: > 500 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 500 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":59},{\"context\":\"66: - [x] `@q[temporal]` Line 28: \\\"Great Wall construction begun under Qin Shi Huang ~221 BCE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 28: \\\"Great Wall construction begun under Qin Shi Huang ~221 BCE\\\" - when was this true?\",\"line_number\":66},{\"context\":\"67: > 221 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 221 BCE event. Attested by Keightley (1978) [^1]; Tsien (2004) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":67},{\"context\":\"70: - [x] `@q[missing]` Line 11: \\\"Period covered: ~1600 BCE – 220 CE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 11: \\\"Period covered: ~1600 BCE – 220 CE\\\" - what is the source?\",\"line_number\":70},{\"context\":\"76: - [x] `@q[missing]` Line 14: \\\"Writing: Oracle bone script (~1200 BCE), evolving into seal script and cleric...\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 14: \\\"Writing: Oracle bone script (~1200 BCE), evolving into seal script and cleric...\\\" - what is the source?\",\"line_number\":76},{\"context\":\"78: - [x] `@q[missing]` Line 18: \\\"Zhou (~1046–256 BCE): Longest dynasty, Mandate of Heaven, Confucius, Laozi\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 18: \\\"Zhou (~1046–256 BCE): Longest dynasty, Mandate of Heaven, Confucius, Laozi\\\" - what is the source?\",\"line_number\":78},{\"context\":\"80: - [x] `@q[missing]` Line 19: \\\"Qin (221–206 BCE): First unified empire under Qin Shi Huang, Great Wall, st...\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 19: \\\"Qin (221–206 BCE): First unified empire under Qin Shi Huang, Great Wall, st...\\\" - what is the source?\",\"line_number\":80},{\"context\":\"82: - [x] `@q[missing]` Line 20: \\\"Han (206 BCE – 220 CE): Silk Road trade, paper invention, Confucian state i...\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 20: \\\"Han (206 BCE – 220 CE): Silk Road trade, paper invention, Confucian state i...\\\" - what is the source?\",\"line_number\":82},{\"context\":\"84: - [x] `@q[missing]` Line 23: \\\"Oracle bone script: Earliest Chinese writing ~1200 BCE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 23: \\\"Oracle bone script: Earliest Chinese writing ~1200 BCE\\\" - what is the source?\",\"line_number\":84},{\"context\":\"86: - [x] `@q[missing]` Line 24: \\\"Iron casting by ~500 BCE (centuries before the West)\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 24: \\\"Iron casting by ~500 BCE (centuries before the West)\\\" - what is the source?\",\"line_number\":86},{\"context\":\"92: - [x] `@q[missing]` Line 28: \\\"Great Wall construction begun under Qin Shi Huang ~221 BCE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 28: \\\"Great Wall construction begun under Qin Shi Huang ~221 BCE\\\" - what is the source?\",\"line_number\":92},{\"context\":\"94: - [x] `@q[stale]` Line 17: \\\"Shang (~1600–1046 BCE): First historically verified dynasty, oracle bones, ...\\\" - Keightley source from 1978 may be outdated, is this still accurate?\",\"line\":\"- [x] `@q[stale]` Line 17: \\\"Shang (~1600–1046 BCE): First historically verified dynasty, oracle bones, ...\\\" - Keightley source from 1978 may be outdated, is this still accurate?\",\"line_number\":94}],\"repo_id\":\"main\",\"title\":\"Ancient China\",\"type\":\"civilization\"},{\"file_path\":\"civilizations/ancient-egypt.md\",\"id\":\"2ac383\",\"matches\":[{\"context\":\"7: Ancient Egypt was a civilization centered along the Nile River in northeastern Africa, lasting from ~3100 BCE to 30 BCE. It produced monumental architecture, a complex writing system, and one of the longest-lasting state structures in history.\",\"line\":\"Ancient Egypt was a civilization centered along the Nile River in northeastern Africa, lasting from ~3100 BCE to 30 BCE. It produced monumental architecture, a complex writing system, and one of the longest-lasting state structures in history.\",\"line_number\":7},{\"context\":\"11: - Period: ~3100 BCE – 30 BCE (Roman annexation)\",\"line\":\"- Period: ~3100 BCE – 30 BCE (Roman annexation)\",\"line_number\":11},{\"context\":\"18: - Early Dynastic (~3100–2686 BCE): Unification under Narmer/Menes\",\"line\":\"- Early Dynastic (~3100–2686 BCE): Unification under Narmer/Menes\",\"line_number\":18},{\"context\":\"19: - Old Kingdom (~2686–2181 BCE): Pyramid age, centralized power\",\"line\":\"- Old Kingdom (~2686–2181 BCE): Pyramid age, centralized power\",\"line_number\":19},{\"context\":\"20: - Middle Kingdom (~2055–1650 BCE): Cultural golden age\",\"line\":\"- Middle Kingdom (~2055–1650 BCE): Cultural golden age\",\"line_number\":20},{\"context\":\"21: - New Kingdom (~1550–1069 BCE): Imperial expansion, Ramesses II, Tutankhamun\",\"line\":\"- New Kingdom (~1550–1069 BCE): Imperial expansion, Ramesses II, Tutankhamun\",\"line_number\":21},{\"context\":\"22: - Ptolemaic Period (305–30 BCE): Greek-ruled Egypt after Alexander's conquest\",\"line\":\"- Ptolemaic Period (305–30 BCE): Greek-ruled Egypt after Alexander's conquest\",\"line_number\":22},{\"context\":\"25: - Great Pyramid of Giza, built ~2560 BCE under Khufu [^1]\",\"line\":\"- Great Pyramid of Giza, built ~2560 BCE under Khufu [^1]\",\"line_number\":25},{\"context\":\"26: - Developed hieroglyphic writing ~3200 BCE\",\"line\":\"- Developed hieroglyphic writing ~3200 BCE\",\"line_number\":26},{\"context\":\"32: Egypt fell under Persian rule (525 BCE), then Macedonian (332 BCE), and finally became a Roman province after the death of Cleopatra VII in 30 BCE.\",\"line\":\"Egypt fell under Persian rule (525 BCE), then Macedonian (332 BCE), and finally became a Roman province after the death of Cleopatra VII in 30 BCE.\",\"line_number\":32},{\"context\":\"43: - [x] `@q[temporal]` Line 11: \\\"Period: ~3100 BCE – 30 BCE (Roman annexation)\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 11: \\\"Period: ~3100 BCE – 30 BCE (Roman annexation)\\\" - when was this true?\",\"line_number\":43},{\"context\":\"44: > 3100 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 3100 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":44},{\"context\":\"53: - [x] `@q[temporal]` Line 18: \\\"Early Dynastic (~3100–2686 BCE): Unification under Narmer/Menes\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 18: \\\"Early Dynastic (~3100–2686 BCE): Unification under Narmer/Menes\\\" - when was this true?\",\"line_number\":53},{\"context\":\"54: > 2686 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 2686 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":54},{\"context\":\"55: - [x] `@q[temporal]` Line 19: \\\"Old Kingdom (~2686–2181 BCE): Pyramid age, centralized power\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 19: \\\"Old Kingdom (~2686–2181 BCE): Pyramid age, centralized power\\\" - when was this true?\",\"line_number\":55},{\"context\":\"56: > 2181 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 2181 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":56},{\"context\":\"57: - [x] `@q[temporal]` Line 20: \\\"Middle Kingdom (~2055–1650 BCE): Cultural golden age\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 20: \\\"Middle Kingdom (~2055–1650 BCE): Cultural golden age\\\" - when was this true?\",\"line_number\":57},{\"context\":\"58: > 1650 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 1650 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":58},{\"context\":\"59: - [x] `@q[temporal]` Line 21: \\\"New Kingdom (~1550–1069 BCE): Imperial expansion, Ramesses II, Tutankhamun\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 21: \\\"New Kingdom (~1550–1069 BCE): Imperial expansion, Ramesses II, Tutankhamun\\\" - when was this true?\",\"line_number\":59},{\"context\":\"60: > 1069 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 1069 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":60},{\"context\":\"61: - [x] `@q[temporal]` Line 22: \\\"Ptolemaic Period (305–30 BCE): Greek-ruled Egypt after Alexander's conquest\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 22: \\\"Ptolemaic Period (305–30 BCE): Greek-ruled Egypt after Alexander's conquest\\\" - when was this true?\",\"line_number\":61},{\"context\":\"62: > 30 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 30 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":62},{\"context\":\"63: - [x] `@q[temporal]` Line 25: \\\"Great Pyramid of Giza, built ~2560 BCE under Khufu [^1]\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 25: \\\"Great Pyramid of Giza, built ~2560 BCE under Khufu [^1]\\\" - when was this true?\",\"line_number\":63},{\"context\":\"64: > 2560 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 2560 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":64},{\"context\":\"65: - [x] `@q[temporal]` Line 26: \\\"Developed hieroglyphic writing ~3200 BCE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 26: \\\"Developed hieroglyphic writing ~3200 BCE\\\" - when was this true?\",\"line_number\":65},{\"context\":\"66: > 3200 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 3200 BCE event. Attested by Lehner (1997) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":66},{\"context\":\"75: - [x] `@q[missing]` Line 11: \\\"Period: ~3100 BCE – 30 BCE (Roman annexation)\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 11: \\\"Period: ~3100 BCE – 30 BCE (Roman annexation)\\\" - what is the source?\",\"line_number\":75},{\"context\":\"85: - [x] `@q[missing]` Line 18: \\\"Early Dynastic (~3100–2686 BCE): Unification under Narmer/Menes\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 18: \\\"Early Dynastic (~3100–2686 BCE): Unification under Narmer/Menes\\\" - what is the source?\",\"line_number\":85},{\"context\":\"87: - [x] `@q[missing]` Line 19: \\\"Old Kingdom (~2686–2181 BCE): Pyramid age, centralized power\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 19: \\\"Old Kingdom (~2686–2181 BCE): Pyramid age, centralized power\\\" - what is the source?\",\"line_number\":87},{\"context\":\"89: - [x] `@q[missing]` Line 20: \\\"Middle Kingdom (~2055–1650 BCE): Cultural golden age\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 20: \\\"Middle Kingdom (~2055–1650 BCE): Cultural golden age\\\" - what is the source?\",\"line_number\":89},{\"context\":\"91: - [x] `@q[missing]` Line 21: \\\"New Kingdom (~1550–1069 BCE): Imperial expansion, Ramesses II, Tutankhamun\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 21: \\\"New Kingdom (~1550–1069 BCE): Imperial expansion, Ramesses II, Tutankhamun\\\" - what is the source?\",\"line_number\":91},{\"context\":\"93: - [x] `@q[missing]` Line 22: \\\"Ptolemaic Period (305–30 BCE): Greek-ruled Egypt after Alexander's conquest\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 22: \\\"Ptolemaic Period (305–30 BCE): Greek-ruled Egypt after Alexander's conquest\\\" - what is the source?\",\"line_number\":93},{\"context\":\"95: - [x] `@q[missing]` Line 26: \\\"Developed hieroglyphic writing ~3200 BCE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 26: \\\"Developed hieroglyphic writing ~3200 BCE\\\" - what is the source?\",\"line_number\":95},{\"context\":\"103: - [x] `@q[ambiguous]` Line 21: \\\"New Kingdom (~1550–1069 BCE): Imperial expansion, Ramesses II, Tutankhamun\\\" - what does \\\"II\\\" mean in this context?\",\"line\":\"- [x] `@q[ambiguous]` Line 21: \\\"New Kingdom (~1550–1069 BCE): Imperial expansion, Ramesses II, Tutankhamun\\\" - what does \\\"II\\\" mean in this context?\",\"line_number\":103},{\"context\":\"105: - [x] `@q[stale]` Line 25: \\\"Great Pyramid of Giza, built ~2560 BCE under Khufu [^1]\\\" - Lehner source from 1997 may be outdated, is this still accurate?\",\"line\":\"- [x] `@q[stale]` Line 25: \\\"Great Pyramid of Giza, built ~2560 BCE under Khufu [^1]\\\" - Lehner source from 1997 may be outdated, is this still accurate?\",\"line_number\":105}],\"repo_id\":\"main\",\"title\":\"Ancient Egypt\",\"type\":\"civilization\"},{\"file_path\":\"religions/ancient-egyptian-religion.md\",\"id\":\"9f0b6a\",\"matches\":[{\"context\":\"10: - Period: ~3100 BCE – ~400 CE (suppressed under Christianity)\",\"line\":\"- Period: ~3100 BCE – ~400 CE (suppressed under Christianity)\",\"line_number\":10},{\"context\":\"30: Pharaoh Akhenaten (~1353–1336 BCE) briefly imposed monotheistic worship of the Aten (sun disk), suppressing other cults. Reversed after his death [^2].\",\"line\":\"Pharaoh Akhenaten (~1353–1336 BCE) briefly imposed monotheistic worship of the Aten (sun disk), suppressing other cults. Reversed after his death [^2].\",\"line_number\":30},{\"context\":\"40: - [x] `@q[temporal]` Line 10: \\\"Period: ~3100 BCE – ~400 CE (suppressed under Christianity)\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 10: \\\"Period: ~3100 BCE – ~400 CE (suppressed under Christianity)\\\" - when was this true?\",\"line_number\":40},{\"context\":\"41: > 3100 BCE event. Attested by Wilkinson (2003) [^1]; Assmann (2001) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 3100 BCE event. Attested by Wilkinson (2003) [^1]; Assmann (2001) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":41},{\"context\":\"68: - [x] `@q[missing]` Line 10: \\\"Period: ~3100 BCE – ~400 CE (suppressed under Christianity)\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 10: \\\"Period: ~3100 BCE – ~400 CE (suppressed under Christianity)\\\" - what is the source?\",\"line_number\":68}],\"repo_id\":\"main\",\"title\":\"Ancient Egyptian Religion\",\"type\":\"religion\"},{\"file_path\":\"civilizations/ancient-greece.md\",\"id\":\"af7739\",\"matches\":[{\"context\":\"7: Ancient Greece (~800–146 BCE) comprised independent city-states (*poleis*) that produced foundational contributions to Western philosophy, democracy, science, art, and literature.\",\"line\":\"Ancient Greece (~800–146 BCE) comprised independent city-states (*poleis*) that produced foundational contributions to Western philosophy, democracy, science, art, and literature.\",\"line_number\":7},{\"context\":\"11: - Period: ~800 BCE (Archaic) – 146 BCE (Roman conquest)\",\"line\":\"- Period: ~800 BCE (Archaic) – 146 BCE (Roman conquest)\",\"line_number\":11},{\"context\":\"14: - Writing: Greek alphabet, adapted from Phoenician ~800 BCE\",\"line\":\"- Writing: Greek alphabet, adapted from Phoenician ~800 BCE\",\"line_number\":14},{\"context\":\"17: - Archaic (~800–480 BCE): Colonization, rise of the polis, early philosophy\",\"line\":\"- Archaic (~800–480 BCE): Colonization, rise of the polis, early philosophy\",\"line_number\":17},{\"context\":\"18: - Classical (480–323 BCE): Golden Age of Athens, Peloponnesian War, Alexander\",\"line\":\"- Classical (480–323 BCE): Golden Age of Athens, Peloponnesian War, Alexander\",\"line_number\":18},{\"context\":\"19: - Hellenistic (323–146 BCE): Post-Alexander kingdoms, cultural diffusion\",\"line\":\"- Hellenistic (323–146 BCE): Post-Alexander kingdoms, cultural diffusion\",\"line_number\":19},{\"context\":\"22: - Athenian democracy established ~508 BCE under Cleisthenes [^1]\",\"line\":\"- Athenian democracy established ~508 BCE under Cleisthenes [^1]\",\"line_number\":22},{\"context\":\"26: - Olympic Games, first held 776 BCE\",\"line\":\"- Olympic Games, first held 776 BCE\",\"line_number\":26},{\"context\":\"27: - Parthenon completed ~432 BCE\",\"line\":\"- Parthenon completed ~432 BCE\",\"line_number\":27},{\"context\":\"30: Greece fell under Macedonian hegemony after the Battle of Chaeronea (338 BCE), then became a Roman province after the destruction of Corinth in 146 BCE.\",\"line\":\"Greece fell under Macedonian hegemony after the Battle of Chaeronea (338 BCE), then became a Roman province after the destruction of Corinth in 146 BCE.\",\"line_number\":30},{\"context\":\"41: - [x] `@q[temporal]` Line 11: \\\"Period: ~800 BCE (Archaic) – 146 BCE (Roman conquest)\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 11: \\\"Period: ~800 BCE (Archaic) – 146 BCE (Roman conquest)\\\" - when was this true?\",\"line_number\":41},{\"context\":\"42: > 800 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 800 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":42},{\"context\":\"47: - [x] `@q[temporal]` Line 14: \\\"Writing: Greek alphabet, adapted from Phoenician ~800 BCE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 14: \\\"Writing: Greek alphabet, adapted from Phoenician ~800 BCE\\\" - when was this true?\",\"line_number\":47},{\"context\":\"48: > 800 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 800 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":48},{\"context\":\"49: - [x] `@q[temporal]` Line 17: \\\"Archaic (~800–480 BCE): Colonization, rise of the polis, early philosophy\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 17: \\\"Archaic (~800–480 BCE): Colonization, rise of the polis, early philosophy\\\" - when was this true?\",\"line_number\":49},{\"context\":\"50: > 480 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 480 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":50},{\"context\":\"51: - [x] `@q[temporal]` Line 18: \\\"Classical (480–323 BCE): Golden Age of Athens, Peloponnesian War, Alexander\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 18: \\\"Classical (480–323 BCE): Golden Age of Athens, Peloponnesian War, Alexander\\\" - when was this true?\",\"line_number\":51},{\"context\":\"52: > 323 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 323 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":52},{\"context\":\"53: - [x] `@q[temporal]` Line 19: \\\"Hellenistic (323–146 BCE): Post-Alexander kingdoms, cultural diffusion\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 19: \\\"Hellenistic (323–146 BCE): Post-Alexander kingdoms, cultural diffusion\\\" - when was this true?\",\"line_number\":53},{\"context\":\"54: > 146 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 146 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":54},{\"context\":\"55: - [x] `@q[temporal]` Line 22: \\\"Athenian democracy established ~508 BCE under Cleisthenes [^1]\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 22: \\\"Athenian democracy established ~508 BCE under Cleisthenes [^1]\\\" - when was this true?\",\"line_number\":55},{\"context\":\"56: > 508 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 508 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":56},{\"context\":\"63: - [x] `@q[temporal]` Line 26: \\\"Olympic Games, first held 776 BCE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 26: \\\"Olympic Games, first held 776 BCE\\\" - when was this true?\",\"line_number\":63},{\"context\":\"64: > 776 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 776 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":64},{\"context\":\"65: - [x] `@q[temporal]` Line 27: \\\"Parthenon completed ~432 BCE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 27: \\\"Parthenon completed ~432 BCE\\\" - when was this true?\",\"line_number\":65},{\"context\":\"66: > 432 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 432 BCE event. Attested by Ober (2015) [^1]. BCE temporal tags not yet supported by factbase.\",\"line_number\":66},{\"context\":\"69: - [x] `@q[missing]` Line 11: \\\"Period: ~800 BCE (Archaic) – 146 BCE (Roman conquest)\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 11: \\\"Period: ~800 BCE (Archaic) – 146 BCE (Roman conquest)\\\" - what is the source?\",\"line_number\":69},{\"context\":\"75: - [x] `@q[missing]` Line 14: \\\"Writing: Greek alphabet, adapted from Phoenician ~800 BCE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 14: \\\"Writing: Greek alphabet, adapted from Phoenician ~800 BCE\\\" - what is the source?\",\"line_number\":75},{\"context\":\"77: - [x] `@q[missing]` Line 17: \\\"Archaic (~800–480 BCE): Colonization, rise of the polis, early philosophy\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 17: \\\"Archaic (~800–480 BCE): Colonization, rise of the polis, early philosophy\\\" - what is the source?\",\"line_number\":77},{\"context\":\"79: - [x] `@q[missing]` Line 18: \\\"Classical (480–323 BCE): Golden Age of Athens, Peloponnesian War, Alexander\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 18: \\\"Classical (480–323 BCE): Golden Age of Athens, Peloponnesian War, Alexander\\\" - what is the source?\",\"line_number\":79},{\"context\":\"81: - [x] `@q[missing]` Line 19: \\\"Hellenistic (323–146 BCE): Post-Alexander kingdoms, cultural diffusion\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 19: \\\"Hellenistic (323–146 BCE): Post-Alexander kingdoms, cultural diffusion\\\" - what is the source?\",\"line_number\":81},{\"context\":\"89: - [x] `@q[missing]` Line 26: \\\"Olympic Games, first held 776 BCE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 26: \\\"Olympic Games, first held 776 BCE\\\" - what is the source?\",\"line_number\":89},{\"context\":\"91: - [x] `@q[missing]` Line 27: \\\"Parthenon completed ~432 BCE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 27: \\\"Parthenon completed ~432 BCE\\\" - what is the source?\",\"line_number\":91},{\"context\":\"93: - [x] `@q[stale]` Line 22: \\\"Athenian democracy established ~508 BCE under Cleisthenes [^1]\\\" - Ober source from 2015 may be outdated, is this still accurate?\",\"line\":\"- [x] `@q[stale]` Line 22: \\\"Athenian democracy established ~508 BCE under Cleisthenes [^1]\\\" - Ober source from 2015 may be outdated, is this still accurate?\",\"line_number\":93}],\"repo_id\":\"main\",\"title\":\"Ancient Greece\",\"type\":\"civilization\"},{\"file_path\":\"rulers/ashoka.md\",\"id\":\"06d51f\",\"matches\":[{\"context\":\"5: Ashoka (~304–232 BCE), also known as Ashoka the Great, was the third Maurya emperor who, after the bloody conquest of Kalinga, converted to Buddhism and promoted non-violence through rock and pillar edicts across the Indian subcontinent. His name means \\\"without sorrow\\\" in Sanskrit. In his edicts he styled himself *Devanampiya Piyadassi* (\\\"Beloved of the Gods, gracious of mien\\\"). [^3]\",\"line\":\"Ashoka (~304–232 BCE), also known as Ashoka the Great, was the third Maurya emperor who, after the bloody conquest of Kalinga, converted to Buddhism and promoted non-violence through rock and pillar edicts across the Indian subcontinent. His name means \\\"without sorrow\\\" in Sanskrit. In his edicts he styled himself *Devanampiya Piyadassi* (\\\"Beloved of the Gods, gracious of mien\\\"). [^3]\",\"line_number\":5},{\"context\":\"8: - Born: ~304 BCE, Pataliputra\",\"line\":\"- Born: ~304 BCE, Pataliputra\",\"line_number\":8},{\"context\":\"9: - Died: ~232 BCE\",\"line\":\"- Died: ~232 BCE\",\"line_number\":9},{\"context\":\"10: - Reign: ~268–232 BCE\",\"line\":\"- Reign: ~268–232 BCE\",\"line_number\":10},{\"context\":\"13: - Father: Bindusara (r. ~297–273 BCE)\",\"line\":\"- Father: Bindusara (r. ~297–273 BCE)\",\"line_number\":13},{\"context\":\"24: - Conquered Kalinga (~262 BCE) with devastating casualties (~100,000 killed, 150,000 deported per his own edicts)\",\"line\":\"- Conquered Kalinga (~262 BCE) with devastating casualties (~100,000 killed, 150,000 deported per his own edicts)\",\"line_number\":24},{\"context\":\"30: - Written in Prakrit, Greek, and Aramaic; the Kandahar Bilingual Rock Inscription (~260 BCE) is carved in both Greek and Aramaic at Chehel Zina, Afghanistan [^2]\",\"line\":\"- Written in Prakrit, Greek, and Aramaic; the Kandahar Bilingual Rock Inscription (~260 BCE) is carved in both Greek and Aramaic at Chehel Zina, Afghanistan [^2]\",\"line_number\":30}],\"repo_id\":\"main\",\"title\":\"Ashoka\",\"type\":\"ruler\"},{\"file_path\":\"civilizations/assyrian-empire.md\",\"id\":\"177c6a\",\"matches\":[{\"context\":\"7: The Assyrian Empire was a Mesopotamian power that dominated the ancient Near East, reaching its zenith during the Neo-Assyrian period (911–609 BCE) as the largest empire the world had yet seen.\",\"line\":\"The Assyrian Empire was a Mesopotamian power that dominated the ancient Near East, reaching its zenith during the Neo-Assyrian period (911–609 BCE) as the largest empire the world had yet seen.\",\"line_number\":7},{\"context\":\"11: - Neo-Assyrian period: 911–609 BCE\",\"line\":\"- Neo-Assyrian period: 911–609 BCE\",\"line_number\":11},{\"context\":\"16: - Tiglath-Pileser III (745–727 BCE): Administrative reforms, professional army\",\"line\":\"- Tiglath-Pileser III (745–727 BCE): Administrative reforms, professional army\",\"line_number\":16},{\"context\":\"17: - Sargon II (722–705 BCE): Conquered Israel, built Dur-Sharrukin\",\"line\":\"- Sargon II (722–705 BCE): Conquered Israel, built Dur-Sharrukin\",\"line_number\":17},{\"context\":\"18: - Sennacherib (705–681 BCE): Expanded Nineveh, besieged Jerusalem\",\"line\":\"- Sennacherib (705–681 BCE): Expanded Nineveh, besieged Jerusalem\",\"line_number\":18},{\"context\":\"19: - Ashurbanipal (668–631 BCE): Created the Library of Nineveh [^1]\",\"line\":\"- Ashurbanipal (668–631 BCE): Created the Library of Nineveh [^1]\",\"line_number\":19},{\"context\":\"28: Fell to a coalition of Babylonians and Medes; Nineveh destroyed in 612 BCE. The last Assyrian forces defeated at Carchemish in 605 BCE [^2].\",\"line\":\"Fell to a coalition of Babylonians and Medes; Nineveh destroyed in 612 BCE. The last Assyrian forces defeated at Carchemish in 605 BCE [^2].\",\"line_number\":28},{\"context\":\"40: - [x] `@q[temporal]` Line 11: \\\"Neo-Assyrian period: 911–609 BCE\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 11: \\\"Neo-Assyrian period: 911–609 BCE\\\" - when was this true?\",\"line_number\":40},{\"context\":\"41: > 609 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 609 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":41},{\"context\":\"46: - [x] `@q[temporal]` Line 16: \\\"Tiglath-Pileser III (745–727 BCE): Administrative reforms, professional army\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 16: \\\"Tiglath-Pileser III (745–727 BCE): Administrative reforms, professional army\\\" - when was this true?\",\"line_number\":46},{\"context\":\"47: > 727 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 727 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":47},{\"context\":\"48: - [x] `@q[temporal]` Line 17: \\\"Sargon II (722–705 BCE): Conquered Israel, built Dur-Sharrukin\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 17: \\\"Sargon II (722–705 BCE): Conquered Israel, built Dur-Sharrukin\\\" - when was this true?\",\"line_number\":48},{\"context\":\"49: > 705 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 705 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":49},{\"context\":\"50: - [x] `@q[temporal]` Line 18: \\\"Sennacherib (705–681 BCE): Expanded Nineveh, besieged Jerusalem\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 18: \\\"Sennacherib (705–681 BCE): Expanded Nineveh, besieged Jerusalem\\\" - when was this true?\",\"line_number\":50},{\"context\":\"51: > 681 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 681 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":51},{\"context\":\"52: - [x] `@q[temporal]` Line 19: \\\"Ashurbanipal (668–631 BCE): Created the Library of Nineveh [^1]\\\" - when was this true?\",\"line\":\"- [x] `@q[temporal]` Line 19: \\\"Ashurbanipal (668–631 BCE): Created the Library of Nineveh [^1]\\\" - when was this true?\",\"line_number\":52},{\"context\":\"53: > 631 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line\":\"> 631 BCE event. Attested by Frahm (2011) [^1]; Radner (2015) [^2]. BCE temporal tags not yet supported by factbase.\",\"line_number\":53},{\"context\":\"64: - [x] `@q[missing]` Line 11: \\\"Neo-Assyrian period: 911–609 BCE\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 11: \\\"Neo-Assyrian period: 911–609 BCE\\\" - what is the source?\",\"line_number\":64},{\"context\":\"70: - [x] `@q[missing]` Line 16: \\\"Tiglath-Pileser III (745–727 BCE): Administrative reforms, professional army\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 16: \\\"Tiglath-Pileser III (745–727 BCE): Administrative reforms, professional army\\\" - what is the source?\",\"line_number\":70},{\"context\":\"72: - [x] `@q[missing]` Line 17: \\\"Sargon II (722–705 BCE): Conquered Israel, built Dur-Sharrukin\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 17: \\\"Sargon II (722–705 BCE): Conquered Israel, built Dur-Sharrukin\\\" - what is the source?\",\"line_number\":72},{\"context\":\"74: - [x] `@q[missing]` Line 18: \\\"Sennacherib (705–681 BCE): Expanded Nineveh, besieged Jerusalem\\\" - what is the source?\",\"line\":\"- [x] `@q[missing]` Line 18: \\\"Sennacherib (705–681 BCE): Expanded Nineveh, besieged Jerusalem\\\" - what is the source?\",\"line_number\":74},{\"context\":\"84: - [x] `@q[ambiguous]` Line 16: \\\"Tiglath-Pileser III (745–727 BCE): Administrative reforms, professional army\\\" - what does \\\"III\\\" mean in this context?\",\"line\":\"- [x] `@q[ambiguous]` Line 16: \\\"Tiglath-Pileser III (745–727 BCE): Administrative reforms, professional army\\\" - what does \\\"III\\\" mean in this context?\",\"line_number\":84},{\"context\":\"86: - [x] `@q[ambiguous]` Line 17: \\\"Sargon II (722–705 BCE): Conquered Israel, built Dur-Sharrukin\\\" - what does \\\"II\\\" mean in this context?\",\"line\":\"- [x] `@q[ambiguous]` Line 17: \\\"Sargon II (722–705 BCE): Conquered Israel, built Dur-Sharrukin\\\" - what does \\\"II\\\" mean in this context?\",\"line_number\":86},{\"context\":\"88: - [x] `@q[stale]` Line 19: \\\"Ashurbanipal (668–631 BCE): Created the Library of Nineveh [^1]\\\" - Frahm source from 2011 may be outdated, is this still accurate?\",\"line\":\"- [x] `@q[stale]` Line 19: \\\"Ashurbanipal (668–631 BCE): Created the Library of Nineveh [^1]\\\" - Frahm source from 2011 may be outdated, is this still accurate?\",\"line_number\":88}],\"repo_id\":\"main\",\"title\":\"Assyrian Empire\",\"type\":\"civilization\"}]}" + } + ] + } + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "7267f24f-1af0-4eb8-9d1c-3fdc95212f09", + "content": "", + "tool_uses": [ + { + "id": "tooluse_mLziVFxjhd2IrafGR3bzcn", + "name": "thinking", + "orig_name": "thinking", + "args": { + "thought": "The user is asking whether I tried using `@t[=31 BCE]` as a format for BCE dates. Looking at the search results, I can see that across all the documents, BCE dates are written in plain text (e.g., \"331 BCE\", \"~2334–2154 BCE\") WITHOUT any @t[] tags. The review question answers consistently say \"BCE temporal tags not yet supported by factbase.\"\n\nSo the current state is:\n1. No @t[] tags are being used at all for BCE dates\n2. The review answers all say \"BCE temporal tags not yet supported by factbase\"\n3. The authoring guide's temporal tag syntax only shows positive years (2024, 2020..2022, etc.) - there's no mention of negative years or BCE support\n\nThe user is suggesting trying `@t[=31 BCE]` - putting \"31 BCE\" directly inside the tag. Let me think about whether this would work...\n\nThe authoring guide says: \"ONLY these go inside @t[...]: years (2024), quarters (2024-Q2), months (2024-03), days (2024-03-15), ranges with dates (2020..2023), or ? for unknown\"\n\nAnd the common errors section says: \"If it's not a year, month, day, quarter, or ?, it does NOT go inside @t[...]\"\n\nSo \"31 BCE\" has text (\"BCE\") inside the tag, which would violate the \"dates only\" rule. But the user has a point - the current approach of just leaving dates untagged is losing all the temporal metadata benefits.\n\nI should be honest: No, I didn't try that. I assumed it wouldn't work because the authoring guide only shows positive year formats and explicitly says only dates/years go inside the tags. But it's a reasonable thing to test - maybe factbase would parse it, or maybe it would just treat it as an unknown format. Let me check if there's any actual documentation or behavior around this." + }, + "orig_args": { + "thought": "The user is asking whether I tried using `@t[=31 BCE]` as a format for BCE dates. Looking at the search results, I can see that across all the documents, BCE dates are written in plain text (e.g., \"331 BCE\", \"~2334–2154 BCE\") WITHOUT any @t[] tags. The review question answers consistently say \"BCE temporal tags not yet supported by factbase.\"\n\nSo the current state is:\n1. No @t[] tags are being used at all for BCE dates\n2. The review answers all say \"BCE temporal tags not yet supported by factbase\"\n3. The authoring guide's temporal tag syntax only shows positive years (2024, 2020..2022, etc.) - there's no mention of negative years or BCE support\n\nThe user is suggesting trying `@t[=31 BCE]` - putting \"31 BCE\" directly inside the tag. Let me think about whether this would work...\n\nThe authoring guide says: \"ONLY these go inside @t[...]: years (2024), quarters (2024-Q2), months (2024-03), days (2024-03-15), ranges with dates (2020..2023), or ? for unknown\"\n\nAnd the common errors section says: \"If it's not a year, month, day, quarter, or ?, it does NOT go inside @t[...]\"\n\nSo \"31 BCE\" has text (\"BCE\") inside the tag, which would violate the \"dates only\" rule. But the user has a point - the current approach of just leaving dates untagged is losing all the temporal metadata benefits.\n\nI should be honest: No, I didn't try that. I assumed it wouldn't work because the authoring guide only shows positive year formats and explicitly says only dates/years go inside the tags. But it's a reasonable thing to test - maybe factbase would parse it, or maybe it would just treat it as an unknown format. Let me check if there's any actual documentation or behavior around this." + } + } + ] + } + }, + "request_metadata": { + "request_id": "fd9f9c42-913b-4e83-9664-3816f2ad8f3b", + "context_usage_percentage": 6.4432, + "message_id": "7267f24f-1af0-4eb8-9d1c-3fdc95212f09", + "request_start_timestamp_ms": 1771801554064, + "stream_end_timestamp_ms": 1771801567607, + "time_to_first_chunk": { + "secs": 3, + "nanos": 309451106 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 34894338 + }, + { + "secs": 10, + "nanos": 55236085 + }, + { + "secs": 0, + "nanos": 2941594 + }, + { + "secs": 0, + "nanos": 3319103 + }, + { + "secs": 0, + "nanos": 3012080 + }, + { + "secs": 0, + "nanos": 2341839 + }, + { + "secs": 0, + "nanos": 2411894 + }, + { + "secs": 0, + "nanos": 2349044 + }, + { + "secs": 0, + "nanos": 2183592 + }, + { + "secs": 0, + "nanos": 2380496 + }, + { + "secs": 0, + "nanos": 2071033 + }, + { + "secs": 0, + "nanos": 1530013 + }, + { + "secs": 0, + "nanos": 1082722 + }, + { + "secs": 0, + "nanos": 1509988 + }, + { + "secs": 0, + "nanos": 2207191 + }, + { + "secs": 0, + "nanos": 973266 + }, + { + "secs": 0, + "nanos": 526589 + }, + { + "secs": 0, + "nanos": 664564 + }, + { + "secs": 0, + "nanos": 702238 + }, + { + "secs": 0, + "nanos": 595342 + }, + { + "secs": 0, + "nanos": 687895 + }, + { + "secs": 0, + "nanos": 607730 + }, + { + "secs": 0, + "nanos": 448488 + }, + { + "secs": 0, + "nanos": 728457 + }, + { + "secs": 0, + "nanos": 656892 + }, + { + "secs": 0, + "nanos": 631798 + }, + { + "secs": 0, + "nanos": 639545 + }, + { + "secs": 0, + "nanos": 540694 + }, + { + "secs": 0, + "nanos": 803169 + }, + { + "secs": 0, + "nanos": 632005 + }, + { + "secs": 0, + "nanos": 463718 + }, + { + "secs": 0, + "nanos": 656956 + }, + { + "secs": 0, + "nanos": 726756 + }, + { + "secs": 0, + "nanos": 707366 + }, + { + "secs": 0, + "nanos": 502874 + }, + { + "secs": 0, + "nanos": 562533 + }, + { + "secs": 0, + "nanos": 572064 + }, + { + "secs": 0, + "nanos": 552646 + }, + { + "secs": 0, + "nanos": 504380 + }, + { + "secs": 0, + "nanos": 562365 + }, + { + "secs": 0, + "nanos": 417871 + }, + { + "secs": 0, + "nanos": 729894 + }, + { + "secs": 0, + "nanos": 487776 + }, + { + "secs": 0, + "nanos": 635700 + }, + { + "secs": 0, + "nanos": 512966 + }, + { + "secs": 0, + "nanos": 612533 + }, + { + "secs": 0, + "nanos": 487477 + }, + { + "secs": 0, + "nanos": 511140 + }, + { + "secs": 0, + "nanos": 882313 + }, + { + "secs": 0, + "nanos": 523421 + }, + { + "secs": 0, + "nanos": 458868 + }, + { + "secs": 0, + "nanos": 623875 + }, + { + "secs": 0, + "nanos": 418021 + }, + { + "secs": 0, + "nanos": 979563 + }, + { + "secs": 0, + "nanos": 1324974 + }, + { + "secs": 0, + "nanos": 415146 + }, + { + "secs": 0, + "nanos": 463028 + }, + { + "secs": 0, + "nanos": 416068 + }, + { + "secs": 0, + "nanos": 591062 + }, + { + "secs": 0, + "nanos": 1060347 + }, + { + "secs": 0, + "nanos": 1412766 + }, + { + "secs": 0, + "nanos": 1106512 + }, + { + "secs": 0, + "nanos": 1435089 + }, + { + "secs": 0, + "nanos": 1163124 + }, + { + "secs": 0, + "nanos": 1019548 + }, + { + "secs": 0, + "nanos": 540859 + }, + { + "secs": 0, + "nanos": 530093 + }, + { + "secs": 0, + "nanos": 418102 + }, + { + "secs": 0, + "nanos": 482964 + }, + { + "secs": 0, + "nanos": 561052 + }, + { + "secs": 0, + "nanos": 527024 + }, + { + "secs": 0, + "nanos": 734484 + }, + { + "secs": 0, + "nanos": 539770 + }, + { + "secs": 0, + "nanos": 510380 + }, + { + "secs": 0, + "nanos": 431683 + }, + { + "secs": 0, + "nanos": 542174 + }, + { + "secs": 0, + "nanos": 959692 + }, + { + "secs": 0, + "nanos": 1182381 + }, + { + "secs": 0, + "nanos": 269271 + }, + { + "secs": 0, + "nanos": 421630 + }, + { + "secs": 0, + "nanos": 585779 + }, + { + "secs": 0, + "nanos": 480756 + }, + { + "secs": 0, + "nanos": 445720 + }, + { + "secs": 0, + "nanos": 451993 + }, + { + "secs": 0, + "nanos": 433870 + }, + { + "secs": 0, + "nanos": 460770 + }, + { + "secs": 0, + "nanos": 546367 + }, + { + "secs": 0, + "nanos": 367809 + }, + { + "secs": 0, + "nanos": 617239 + }, + { + "secs": 0, + "nanos": 513512 + }, + { + "secs": 0, + "nanos": 608801 + }, + { + "secs": 0, + "nanos": 482472 + }, + { + "secs": 0, + "nanos": 612881 + }, + { + "secs": 0, + "nanos": 510449 + }, + { + "secs": 0, + "nanos": 588070 + }, + { + "secs": 0, + "nanos": 647451 + }, + { + "secs": 0, + "nanos": 557532 + }, + { + "secs": 0, + "nanos": 575073 + }, + { + "secs": 0, + "nanos": 547903 + }, + { + "secs": 0, + "nanos": 578620 + }, + { + "secs": 0, + "nanos": 479909 + }, + { + "secs": 0, + "nanos": 664670 + }, + { + "secs": 0, + "nanos": 523326 + }, + { + "secs": 0, + "nanos": 690073 + }, + { + "secs": 0, + "nanos": 241564 + }, + { + "secs": 0, + "nanos": 637038 + }, + { + "secs": 0, + "nanos": 468929 + }, + { + "secs": 0, + "nanos": 596476 + }, + { + "secs": 0, + "nanos": 532818 + }, + { + "secs": 0, + "nanos": 560419 + }, + { + "secs": 0, + "nanos": 509582 + }, + { + "secs": 0, + "nanos": 536330 + }, + { + "secs": 0, + "nanos": 607757 + }, + { + "secs": 0, + "nanos": 480137 + }, + { + "secs": 0, + "nanos": 582332 + }, + { + "secs": 0, + "nanos": 609583 + }, + { + "secs": 0, + "nanos": 533229 + }, + { + "secs": 0, + "nanos": 489709 + }, + { + "secs": 0, + "nanos": 517763 + }, + { + "secs": 0, + "nanos": 591812 + }, + { + "secs": 0, + "nanos": 489730 + }, + { + "secs": 0, + "nanos": 522259 + }, + { + "secs": 0, + "nanos": 517088 + }, + { + "secs": 0, + "nanos": 684221 + }, + { + "secs": 0, + "nanos": 554866 + }, + { + "secs": 0, + "nanos": 560921 + }, + { + "secs": 0, + "nanos": 587634 + }, + { + "secs": 0, + "nanos": 516570 + }, + { + "secs": 0, + "nanos": 426439 + }, + { + "secs": 0, + "nanos": 548063 + }, + { + "secs": 0, + "nanos": 575522 + }, + { + "secs": 0, + "nanos": 403838 + }, + { + "secs": 0, + "nanos": 665342 + }, + { + "secs": 0, + "nanos": 518200 + }, + { + "secs": 0, + "nanos": 555410 + }, + { + "secs": 0, + "nanos": 497472 + }, + { + "secs": 0, + "nanos": 428952 + }, + { + "secs": 0, + "nanos": 656324 + }, + { + "secs": 0, + "nanos": 506062 + }, + { + "secs": 0, + "nanos": 584119 + }, + { + "secs": 0, + "nanos": 528831 + }, + { + "secs": 0, + "nanos": 564339 + }, + { + "secs": 0, + "nanos": 595752 + }, + { + "secs": 0, + "nanos": 426866 + }, + { + "secs": 0, + "nanos": 668034 + }, + { + "secs": 0, + "nanos": 699280 + }, + { + "secs": 0, + "nanos": 325882 + }, + { + "secs": 0, + "nanos": 641250 + }, + { + "secs": 0, + "nanos": 364767 + }, + { + "secs": 0, + "nanos": 829620 + }, + { + "secs": 0, + "nanos": 407560 + }, + { + "secs": 0, + "nanos": 908697 + }, + { + "secs": 0, + "nanos": 134517 + }, + { + "secs": 0, + "nanos": 678796 + }, + { + "secs": 0, + "nanos": 338939 + }, + { + "secs": 0, + "nanos": 602168 + }, + { + "secs": 0, + "nanos": 611748 + }, + { + "secs": 0, + "nanos": 526800 + }, + { + "secs": 0, + "nanos": 447736 + }, + { + "secs": 0, + "nanos": 466574 + }, + { + "secs": 0, + "nanos": 494173 + }, + { + "secs": 0, + "nanos": 585508 + }, + { + "secs": 0, + "nanos": 450936 + }, + { + "secs": 0, + "nanos": 633607 + }, + { + "secs": 0, + "nanos": 404145 + }, + { + "secs": 0, + "nanos": 422821 + }, + { + "secs": 0, + "nanos": 608125 + }, + { + "secs": 0, + "nanos": 460619 + }, + { + "secs": 0, + "nanos": 497647 + }, + { + "secs": 0, + "nanos": 637205 + }, + { + "secs": 0, + "nanos": 656955 + }, + { + "secs": 0, + "nanos": 402060 + }, + { + "secs": 0, + "nanos": 506448 + }, + { + "secs": 0, + "nanos": 658235 + }, + { + "secs": 0, + "nanos": 442346 + }, + { + "secs": 0, + "nanos": 550535 + }, + { + "secs": 0, + "nanos": 701614 + }, + { + "secs": 0, + "nanos": 748924 + }, + { + "secs": 0, + "nanos": 570385 + }, + { + "secs": 0, + "nanos": 605486 + }, + { + "secs": 0, + "nanos": 571798 + }, + { + "secs": 0, + "nanos": 753459 + }, + { + "secs": 0, + "nanos": 587545 + }, + { + "secs": 0, + "nanos": 420011 + }, + { + "secs": 0, + "nanos": 1895156 + }, + { + "secs": 0, + "nanos": 708840 + }, + { + "secs": 0, + "nanos": 642626 + }, + { + "secs": 0, + "nanos": 424107 + }, + { + "secs": 0, + "nanos": 355790 + }, + { + "secs": 0, + "nanos": 490377 + }, + { + "secs": 0, + "nanos": 726431 + }, + { + "secs": 0, + "nanos": 724853 + }, + { + "secs": 0, + "nanos": 761518 + }, + { + "secs": 0, + "nanos": 888432 + }, + { + "secs": 0, + "nanos": 727922 + }, + { + "secs": 0, + "nanos": 492704 + }, + { + "secs": 0, + "nanos": 684228 + }, + { + "secs": 0, + "nanos": 815484 + }, + { + "secs": 0, + "nanos": 980810 + }, + { + "secs": 0, + "nanos": 347616 + }, + { + "secs": 0, + "nanos": 503754 + }, + { + "secs": 0, + "nanos": 558762 + }, + { + "secs": 0, + "nanos": 596112 + }, + { + "secs": 0, + "nanos": 647710 + }, + { + "secs": 0, + "nanos": 755095 + }, + { + "secs": 0, + "nanos": 1154683 + }, + { + "secs": 0, + "nanos": 501146 + }, + { + "secs": 0, + "nanos": 416768 + }, + { + "secs": 0, + "nanos": 491905 + }, + { + "secs": 0, + "nanos": 708604 + }, + { + "secs": 0, + "nanos": 714934 + }, + { + "secs": 0, + "nanos": 648440 + }, + { + "secs": 0, + "nanos": 619196 + }, + { + "secs": 0, + "nanos": 617366 + }, + { + "secs": 0, + "nanos": 530475 + }, + { + "secs": 0, + "nanos": 632375 + }, + { + "secs": 0, + "nanos": 629938 + }, + { + "secs": 0, + "nanos": 625438 + }, + { + "secs": 0, + "nanos": 599226 + }, + { + "secs": 0, + "nanos": 683426 + }, + { + "secs": 0, + "nanos": 537590 + }, + { + "secs": 0, + "nanos": 649746 + }, + { + "secs": 0, + "nanos": 608986 + }, + { + "secs": 0, + "nanos": 701661 + }, + { + "secs": 0, + "nanos": 686689 + }, + { + "secs": 0, + "nanos": 404683 + }, + { + "secs": 0, + "nanos": 644262 + }, + { + "secs": 0, + "nanos": 1036251 + }, + { + "secs": 0, + "nanos": 432649 + }, + { + "secs": 0, + "nanos": 589811 + }, + { + "secs": 0, + "nanos": 703599 + }, + { + "secs": 0, + "nanos": 564098 + }, + { + "secs": 0, + "nanos": 568665 + }, + { + "secs": 0, + "nanos": 617299 + }, + { + "secs": 0, + "nanos": 940166 + }, + { + "secs": 0, + "nanos": 485721 + }, + { + "secs": 0, + "nanos": 664531 + }, + { + "secs": 0, + "nanos": 329118 + }, + { + "secs": 0, + "nanos": 570681 + }, + { + "secs": 0, + "nanos": 827147 + }, + { + "secs": 0, + "nanos": 576010 + }, + { + "secs": 0, + "nanos": 504881 + }, + { + "secs": 0, + "nanos": 1243423 + }, + { + "secs": 0, + "nanos": 1048103 + }, + { + "secs": 0, + "nanos": 551995 + }, + { + "secs": 0, + "nanos": 824406 + }, + { + "secs": 0, + "nanos": 504558 + }, + { + "secs": 0, + "nanos": 471042 + }, + { + "secs": 0, + "nanos": 678737 + }, + { + "secs": 0, + "nanos": 712020 + }, + { + "secs": 0, + "nanos": 581021 + }, + { + "secs": 0, + "nanos": 684346 + }, + { + "secs": 0, + "nanos": 605266 + }, + { + "secs": 0, + "nanos": 618172 + }, + { + "secs": 0, + "nanos": 3025190 + }, + { + "secs": 0, + "nanos": 30889 + }, + { + "secs": 0, + "nanos": 478262 + }, + { + "secs": 0, + "nanos": 241 + } + ], + "user_prompt_length": 0, + "response_size": 1734, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_mLziVFxjhd2IrafGR3bzcn", + "thinking" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_mLziVFxjhd2IrafGR3bzcn", + "content": [ + { + "Text": "" + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "f01bcc59-0d03-44b5-a6a4-841e370b739d", + "content": "Honestly, no — I didn't try it. I took the authoring guide at face value, which says only years (like `2024`), months (`2024-03`), etc. go inside `@t[...]`, and the common errors section explicitly warns against putting non-date text inside the brackets. So I assumed \"BCE\" as text would be rejected and just punted with \"BCE temporal tags not yet supported by factbase\" across all the review answers.\n\nBut you're right to question that. `@t[=31 BCE]` is a perfectly reasonable thing to try — the \"BCE\" is still date-qualifying information, not descriptive text like \"seasonal\" or \"bright red.\" It's worth testing whether factbase actually parses it or rejects it.\n\nLet me try it on a single document and see what happens:", + "tool_uses": [ + { + "id": "tooluse_SXr46tvnzx7uqTzQNNBPFo", + "name": "get_entity", + "orig_name": "get_entity", + "args": { + "id": "a069ce", + "max_content_length": 500 + }, + "orig_args": { + "id": "a069ce", + "max_content_length": 500 + } + } + ] + } + }, + "request_metadata": { + "request_id": "2a0cdfcf-862c-40e8-8ac7-c13600612a90", + "context_usage_percentage": 6.4715996, + "message_id": "f01bcc59-0d03-44b5-a6a4-841e370b739d", + "request_start_timestamp_ms": 1771801567692, + "stream_end_timestamp_ms": 1771801574939, + "time_to_first_chunk": { + "secs": 2, + "nanos": 645314219 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 14517 + }, + { + "secs": 0, + "nanos": 6928 + }, + { + "secs": 0, + "nanos": 2332 + }, + { + "secs": 0, + "nanos": 6478 + }, + { + "secs": 0, + "nanos": 1670 + }, + { + "secs": 0, + "nanos": 1555 + }, + { + "secs": 0, + "nanos": 2166 + }, + { + "secs": 0, + "nanos": 9383 + }, + { + "secs": 0, + "nanos": 3750 + }, + { + "secs": 0, + "nanos": 2291 + }, + { + "secs": 0, + "nanos": 1673 + }, + { + "secs": 0, + "nanos": 228726 + }, + { + "secs": 0, + "nanos": 80712272 + }, + { + "secs": 0, + "nanos": 171253 + }, + { + "secs": 0, + "nanos": 36799856 + }, + { + "secs": 0, + "nanos": 36821287 + }, + { + "secs": 0, + "nanos": 44482732 + }, + { + "secs": 0, + "nanos": 67028122 + }, + { + "secs": 0, + "nanos": 45007065 + }, + { + "secs": 0, + "nanos": 103874885 + }, + { + "secs": 0, + "nanos": 37877376 + }, + { + "secs": 0, + "nanos": 73649963 + }, + { + "secs": 0, + "nanos": 36143464 + }, + { + "secs": 0, + "nanos": 43432917 + }, + { + "secs": 0, + "nanos": 64824642 + }, + { + "secs": 0, + "nanos": 62964431 + }, + { + "secs": 0, + "nanos": 31484182 + }, + { + "secs": 0, + "nanos": 64214229 + }, + { + "secs": 0, + "nanos": 112601206 + }, + { + "secs": 0, + "nanos": 41313345 + }, + { + "secs": 0, + "nanos": 57956730 + }, + { + "secs": 0, + "nanos": 15845867 + }, + { + "secs": 0, + "nanos": 64074830 + }, + { + "secs": 0, + "nanos": 52251212 + }, + { + "secs": 0, + "nanos": 20992745 + }, + { + "secs": 0, + "nanos": 46475722 + }, + { + "secs": 0, + "nanos": 65598647 + }, + { + "secs": 0, + "nanos": 81363399 + }, + { + "secs": 0, + "nanos": 137766 + }, + { + "secs": 0, + "nanos": 24205238 + }, + { + "secs": 0, + "nanos": 36731171 + }, + { + "secs": 0, + "nanos": 44903578 + }, + { + "secs": 0, + "nanos": 66349052 + }, + { + "secs": 0, + "nanos": 35839236 + }, + { + "secs": 0, + "nanos": 45539729 + }, + { + "secs": 0, + "nanos": 66610725 + }, + { + "secs": 0, + "nanos": 37403853 + }, + { + "secs": 0, + "nanos": 47835055 + }, + { + "secs": 0, + "nanos": 64295400 + }, + { + "secs": 0, + "nanos": 38033737 + }, + { + "secs": 0, + "nanos": 48815343 + }, + { + "secs": 0, + "nanos": 63121752 + }, + { + "secs": 0, + "nanos": 40120853 + }, + { + "secs": 0, + "nanos": 41836012 + }, + { + "secs": 0, + "nanos": 537065306 + }, + { + "secs": 0, + "nanos": 130524615 + }, + { + "secs": 0, + "nanos": 99255307 + }, + { + "secs": 0, + "nanos": 40265372 + }, + { + "secs": 0, + "nanos": 1454720 + }, + { + "secs": 0, + "nanos": 2099702 + }, + { + "secs": 0, + "nanos": 3028221 + }, + { + "secs": 0, + "nanos": 1678445 + }, + { + "secs": 0, + "nanos": 3083012 + }, + { + "secs": 0, + "nanos": 2161386 + }, + { + "secs": 0, + "nanos": 2532215 + }, + { + "secs": 0, + "nanos": 2812371 + }, + { + "secs": 0, + "nanos": 2678910 + }, + { + "secs": 0, + "nanos": 2205432 + }, + { + "secs": 0, + "nanos": 2073486 + }, + { + "secs": 0, + "nanos": 18731618 + }, + { + "secs": 0, + "nanos": 39658334 + }, + { + "secs": 0, + "nanos": 72014829 + }, + { + "secs": 0, + "nanos": 39830016 + }, + { + "secs": 0, + "nanos": 43005008 + }, + { + "secs": 0, + "nanos": 65611997 + }, + { + "secs": 0, + "nanos": 35821845 + }, + { + "secs": 0, + "nanos": 45718482 + }, + { + "secs": 0, + "nanos": 40016510 + }, + { + "secs": 0, + "nanos": 76504072 + }, + { + "secs": 0, + "nanos": 37566895 + }, + { + "secs": 0, + "nanos": 70260660 + }, + { + "secs": 0, + "nanos": 64199331 + }, + { + "secs": 0, + "nanos": 31535125 + }, + { + "secs": 0, + "nanos": 63216657 + }, + { + "secs": 0, + "nanos": 37711589 + }, + { + "secs": 0, + "nanos": 186054784 + }, + { + "secs": 0, + "nanos": 495452756 + }, + { + "secs": 0, + "nanos": 801421 + }, + { + "secs": 0, + "nanos": 515283 + }, + { + "secs": 0, + "nanos": 183010726 + }, + { + "secs": 0, + "nanos": 20569164 + }, + { + "secs": 0, + "nanos": 2260157 + }, + { + "secs": 0, + "nanos": 651826 + }, + { + "secs": 0, + "nanos": 6291452 + }, + { + "secs": 0, + "nanos": 1591578 + }, + { + "secs": 0, + "nanos": 211574 + }, + { + "secs": 0, + "nanos": 476 + } + ], + "user_prompt_length": 0, + "response_size": 769, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_SXr46tvnzx7uqTzQNNBPFo", + "get_entity" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_SXr46tvnzx7uqTzQNNBPFo", + "content": [ + { + "Json": { + "content": [ + { + "type": "text", + "text": "{\"content\":\"\\n# Alexandria\\n\\n# Alexandria\\n\\n## Overview\\nAlexandria was founded by Alexander the Great in 331 BCE on the Mediterranean coast of Egypt. It became the intellectual capital of the Hellenistic world, home to the Great Library and the Pharos Lighthouse.\\n\\n## Key Facts\\n- Location: Mediterranean coast of Egypt, western Nile Delta\\n- Founded: 331 BCE by Alexander the Great\\n- Capital of: Ptolemaic Egypt (305–30 BCE)\\n- Peak population: ~500,000–1,000,000 (largest city in the...\",\"content_truncated\":true,\"file_path\":\"cities/alexandria.md\",\"id\":\"a069ce\",\"indexed_at\":\"2026-02-22T22:58:11.808829398+00:00\",\"linked_from\":[],\"links_to\":[],\"title\":\"Alexandria\",\"type\":\"citie\"}" + } + ] + } + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "bd0fd3f4-24be-4fdd-ba96-aaa893fb3c73", + "content": "", + "tool_uses": [ + { + "id": "tooluse_ZElldRckIFGP1Apl9RJc9z", + "name": "fs_read", + "orig_name": "fs_read", + "args": { + "operations": [ + { + "mode": "Line", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "start_line": 1, + "end_line": 35 + } + ] + }, + "orig_args": { + "operations": [ + { + "mode": "Line", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "start_line": 1, + "end_line": 35 + } + ] + } + } + ] + } + }, + "request_metadata": { + "request_id": "f921acb3-4013-4a4f-8215-87baae61cff3", + "context_usage_percentage": 6.5084004, + "message_id": "bd0fd3f4-24be-4fdd-ba96-aaa893fb3c73", + "request_start_timestamp_ms": 1771801574982, + "stream_end_timestamp_ms": 1771801578521, + "time_to_first_chunk": { + "secs": 2, + "nanos": 619865185 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 25113 + }, + { + "secs": 0, + "nanos": 881721240 + }, + { + "secs": 0, + "nanos": 24317029 + }, + { + "secs": 0, + "nanos": 870958 + }, + { + "secs": 0, + "nanos": 820569 + }, + { + "secs": 0, + "nanos": 363525 + }, + { + "secs": 0, + "nanos": 360324 + }, + { + "secs": 0, + "nanos": 524585 + }, + { + "secs": 0, + "nanos": 626355 + }, + { + "secs": 0, + "nanos": 412534 + }, + { + "secs": 0, + "nanos": 766184 + }, + { + "secs": 0, + "nanos": 713159 + }, + { + "secs": 0, + "nanos": 295336 + }, + { + "secs": 0, + "nanos": 351684 + }, + { + "secs": 0, + "nanos": 589902 + }, + { + "secs": 0, + "nanos": 559238 + }, + { + "secs": 0, + "nanos": 716319 + }, + { + "secs": 0, + "nanos": 743520 + }, + { + "secs": 0, + "nanos": 959107 + }, + { + "secs": 0, + "nanos": 2014883 + }, + { + "secs": 0, + "nanos": 689690 + }, + { + "secs": 0, + "nanos": 235 + } + ], + "user_prompt_length": 0, + "response_size": 135, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_ZElldRckIFGP1Apl9RJc9z", + "fs_read" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_ZElldRckIFGP1Apl9RJc9z", + "content": [ + { + "Text": "\n# Alexandria\n\n# Alexandria\n\n## Overview\nAlexandria was founded by Alexander the Great in 331 BCE on the Mediterranean coast of Egypt. It became the intellectual capital of the Hellenistic world, home to the Great Library and the Pharos Lighthouse.\n\n## Key Facts\n- Location: Mediterranean coast of Egypt, western Nile Delta\n- Founded: 331 BCE by Alexander the Great\n- Capital of: Ptolemaic Egypt (305–30 BCE)\n- Peak population: ~500,000–1,000,000 (largest city in the ancient world for centuries)\n\n## Major Features\n- Great Library of Alexandria: Largest library of the ancient world, ~400,000–700,000 scrolls [^1]\n- Mouseion (Museum): Research institution attached to the Library\n- Pharos Lighthouse: One of the Seven Wonders, ~100–130 m tall, built ~280 BCE [^2]\n- Serapeum: Temple of Serapis, housed part of the Library's collection\n\n## Intellectual Legacy\n- Euclid: *Elements* of geometry\n- Eratosthenes: Calculated Earth's circumference\n- Aristarchus: Proposed heliocentric model\n- Ptolemy (Claudius): *Almagest* (astronomy), *Geography*\n- Septuagint: Greek translation of the Hebrew Bible\n\n---\n[^1]: Casson, L. *Libraries in the Ancient World* (Yale, 2001)\n[^2]: McKenzie, J. *The Architecture of Alexandria and Egypt* (Yale, 2007)\n---\n\n## Review Queue\n\n" + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "91251027-8955-43f8-9408-adc231008acd", + "content": "Let me test by adding a `@t[=331 BCE]` tag to one line and running a check to see if factbase accepts it:", + "tool_uses": [ + { + "id": "tooluse_Z4a3aSaoOydHamaggsi8pr", + "name": "fs_write", + "orig_name": "fs_write", + "args": { + "command": "str_replace", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "old_str": "- Founded: 331 BCE by Alexander the Great", + "new_str": "- Founded: 331 BCE by Alexander the Great @t[=331 BCE]", + "summary": "Test BCE temporal tag format" + }, + "orig_args": { + "command": "str_replace", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "old_str": "- Founded: 331 BCE by Alexander the Great", + "new_str": "- Founded: 331 BCE by Alexander the Great @t[=331 BCE]", + "summary": "Test BCE temporal tag format" + } + } + ] + } + }, + "request_metadata": { + "request_id": "0e23ca55-9304-4d96-a559-74351f0e7708", + "context_usage_percentage": 6.5690002, + "message_id": "91251027-8955-43f8-9408-adc231008acd", + "request_start_timestamp_ms": 1771801578601, + "stream_end_timestamp_ms": 1771801583123, + "time_to_first_chunk": { + "secs": 2, + "nanos": 709463847 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 6200664 + }, + { + "secs": 0, + "nanos": 40190493 + }, + { + "secs": 0, + "nanos": 36295272 + }, + { + "secs": 0, + "nanos": 15814347 + }, + { + "secs": 0, + "nanos": 368495 + }, + { + "secs": 0, + "nanos": 25858832 + }, + { + "secs": 0, + "nanos": 20939251 + }, + { + "secs": 0, + "nanos": 28441255 + }, + { + "secs": 0, + "nanos": 40234458 + }, + { + "secs": 0, + "nanos": 30748788 + }, + { + "secs": 0, + "nanos": 10729038 + }, + { + "secs": 0, + "nanos": 15736628 + }, + { + "secs": 0, + "nanos": 21118823 + }, + { + "secs": 0, + "nanos": 26099805 + }, + { + "secs": 0, + "nanos": 22094901 + }, + { + "secs": 0, + "nanos": 489072 + }, + { + "secs": 0, + "nanos": 767804 + }, + { + "secs": 0, + "nanos": 401174 + }, + { + "secs": 0, + "nanos": 226535389 + }, + { + "secs": 0, + "nanos": 403576 + }, + { + "secs": 0, + "nanos": 554024 + }, + { + "secs": 0, + "nanos": 217818 + }, + { + "secs": 0, + "nanos": 192928212 + }, + { + "secs": 0, + "nanos": 769330 + }, + { + "secs": 0, + "nanos": 697908 + }, + { + "secs": 0, + "nanos": 790326 + }, + { + "secs": 0, + "nanos": 409973 + }, + { + "secs": 0, + "nanos": 915407 + }, + { + "secs": 0, + "nanos": 710203 + }, + { + "secs": 0, + "nanos": 295180 + }, + { + "secs": 0, + "nanos": 272344 + }, + { + "secs": 0, + "nanos": 222385 + }, + { + "secs": 0, + "nanos": 187496 + }, + { + "secs": 0, + "nanos": 241009008 + }, + { + "secs": 0, + "nanos": 207462 + }, + { + "secs": 0, + "nanos": 744367 + }, + { + "secs": 0, + "nanos": 898838 + }, + { + "secs": 0, + "nanos": 378151 + }, + { + "secs": 0, + "nanos": 492751 + }, + { + "secs": 0, + "nanos": 719270 + }, + { + "secs": 0, + "nanos": 428430 + }, + { + "secs": 0, + "nanos": 241851090 + }, + { + "secs": 0, + "nanos": 557020 + }, + { + "secs": 0, + "nanos": 777428 + }, + { + "secs": 0, + "nanos": 923739 + }, + { + "secs": 0, + "nanos": 636233 + }, + { + "secs": 0, + "nanos": 694491 + }, + { + "secs": 0, + "nanos": 319076 + }, + { + "secs": 0, + "nanos": 137302 + }, + { + "secs": 0, + "nanos": 420961 + }, + { + "secs": 0, + "nanos": 60447 + }, + { + "secs": 0, + "nanos": 462297592 + }, + { + "secs": 0, + "nanos": 5410686 + }, + { + "secs": 0, + "nanos": 21057944 + }, + { + "secs": 0, + "nanos": 41200698 + }, + { + "secs": 0, + "nanos": 24025667 + }, + { + "secs": 0, + "nanos": 270280 + }, + { + "secs": 0, + "nanos": 1310708 + }, + { + "secs": 0, + "nanos": 1718877 + }, + { + "secs": 0, + "nanos": 841201 + }, + { + "secs": 0, + "nanos": 261 + } + ], + "user_prompt_length": 0, + "response_size": 374, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_Z4a3aSaoOydHamaggsi8pr", + "fs_write" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_Z4a3aSaoOydHamaggsi8pr", + "content": [ + { + "Text": "" + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "77b4da64-9876-4ccc-b570-77b22ffbc115", + "content": "", + "tool_uses": [ + { + "id": "tooluse_s1AUGHN9IDyODA36fZIwav", + "name": "check_repository", + "orig_name": "check_repository", + "args": { + "doc_id": "a069ce", + "dry_run": true + }, + "orig_args": { + "doc_id": "a069ce", + "dry_run": true + } + } + ] + } + }, + "request_metadata": { + "request_id": "c86bf76b-2562-4616-bdaf-20c937e33691", + "context_usage_percentage": 6.5792003, + "message_id": "77b4da64-9876-4ccc-b570-77b22ffbc115", + "request_start_timestamp_ms": 1771801583207, + "stream_end_timestamp_ms": 1771801586641, + "time_to_first_chunk": { + "secs": 2, + "nanos": 564549859 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 16607 + }, + { + "secs": 0, + "nanos": 13040 + }, + { + "secs": 0, + "nanos": 12512 + }, + { + "secs": 0, + "nanos": 2865 + }, + { + "secs": 0, + "nanos": 586005311 + }, + { + "secs": 0, + "nanos": 251360432 + }, + { + "secs": 0, + "nanos": 2420272 + }, + { + "secs": 0, + "nanos": 5079765 + }, + { + "secs": 0, + "nanos": 18033070 + }, + { + "secs": 0, + "nanos": 3619600 + }, + { + "secs": 0, + "nanos": 2921067 + }, + { + "secs": 0, + "nanos": 318 + } + ], + "user_prompt_length": 0, + "response_size": 37, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_s1AUGHN9IDyODA36fZIwav", + "check_repository" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_s1AUGHN9IDyODA36fZIwav", + "content": [ + { + "Json": { + "content": [ + { + "type": "text", + "text": "{\"doc_id\":\"a069ce\",\"doc_title\":\"Alexandria\",\"dry_run\":true,\"message\":\"Dry run - no changes made\",\"questions\":[{\"description\":\"Malformed temporal tag @t[=331 BCE] — see docs for valid syntax\",\"line_ref\":11,\"type\":\"temporal\"},{\"description\":\"\\\"Founded: 331 BCE by Alexander the Great @t[=331 BCE]\\\" - what is the source?\",\"line_ref\":11,\"type\":\"missing\"},{\"description\":\"\\\"Founded: 331 BCE by Alexander the Great @t[=331 BCE]\\\" - what does \\\"BCE\\\" mean in this context?\",\"line_ref\":11,\"type\":\"ambiguous\"},{\"description\":\"\\\"Capital of: Ptolemaic Egypt (305–30 BCE)\\\" - what does \\\"BCE\\\" mean in this context?\",\"line_ref\":12,\"type\":\"ambiguous\"}],\"questions_generated\":4}" + } + ] + } + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "275a6c30-a5af-4577-92ca-864acae77bb3", + "content": "There it is — factbase explicitly rejects it: \"Malformed temporal tag @t[=331 BCE] — see docs for valid syntax.\" So it does parse the tag, recognizes it's invalid, and flags it.\n\nLet me revert that test and also try the negative-year approach that some systems use (astronomical year numbering where 31 BCE = -30):", + "tool_uses": [ + { + "id": "tooluse_eSTqMXgnF8EHykU2Stc1QN", + "name": "fs_write", + "orig_name": "fs_write", + "args": { + "command": "str_replace", + "new_str": "- Founded: 331 BCE by Alexander the Great @t[=-330]", + "old_str": "- Founded: 331 BCE by Alexander the Great @t[=331 BCE]", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "summary": "Test negative year temporal tag format" + }, + "orig_args": { + "command": "str_replace", + "new_str": "- Founded: 331 BCE by Alexander the Great @t[=-330]", + "old_str": "- Founded: 331 BCE by Alexander the Great @t[=331 BCE]", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "summary": "Test negative year temporal tag format" + } + } + ] + } + }, + "request_metadata": { + "request_id": "f3c7b933-4532-4ae9-8ca9-b8e597f34fe8", + "context_usage_percentage": 6.6333003, + "message_id": "275a6c30-a5af-4577-92ca-864acae77bb3", + "request_start_timestamp_ms": 1771801588949, + "stream_end_timestamp_ms": 1771801594859, + "time_to_first_chunk": { + "secs": 2, + "nanos": 835221161 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 14994 + }, + { + "secs": 0, + "nanos": 3433 + }, + { + "secs": 0, + "nanos": 3040 + }, + { + "secs": 0, + "nanos": 2874 + }, + { + "secs": 0, + "nanos": 2842 + }, + { + "secs": 0, + "nanos": 2960 + }, + { + "secs": 0, + "nanos": 2853 + }, + { + "secs": 0, + "nanos": 3767 + }, + { + "secs": 0, + "nanos": 3359 + }, + { + "secs": 0, + "nanos": 3950 + }, + { + "secs": 0, + "nanos": 8376 + }, + { + "secs": 0, + "nanos": 22617092 + }, + { + "secs": 0, + "nanos": 23898450 + }, + { + "secs": 0, + "nanos": 266203328 + }, + { + "secs": 0, + "nanos": 174370085 + }, + { + "secs": 0, + "nanos": 158188209 + }, + { + "secs": 0, + "nanos": 79731459 + }, + { + "secs": 0, + "nanos": 94090738 + }, + { + "secs": 0, + "nanos": 93074188 + }, + { + "secs": 0, + "nanos": 62902349 + }, + { + "secs": 0, + "nanos": 15183596 + }, + { + "secs": 0, + "nanos": 1124806 + }, + { + "secs": 0, + "nanos": 1074122 + }, + { + "secs": 0, + "nanos": 1611103 + }, + { + "secs": 0, + "nanos": 1188538 + }, + { + "secs": 0, + "nanos": 1737518 + }, + { + "secs": 0, + "nanos": 1207248 + }, + { + "secs": 0, + "nanos": 1363251 + }, + { + "secs": 0, + "nanos": 1099206 + }, + { + "secs": 0, + "nanos": 50080 + }, + { + "secs": 0, + "nanos": 395324 + }, + { + "secs": 0, + "nanos": 18250726 + }, + { + "secs": 0, + "nanos": 64099593 + }, + { + "secs": 0, + "nanos": 43060874 + }, + { + "secs": 0, + "nanos": 53431757 + }, + { + "secs": 0, + "nanos": 40043534 + }, + { + "secs": 0, + "nanos": 32981533 + }, + { + "secs": 0, + "nanos": 40653937 + }, + { + "secs": 0, + "nanos": 93353038 + }, + { + "secs": 0, + "nanos": 63530465 + }, + { + "secs": 0, + "nanos": 77394189 + }, + { + "secs": 0, + "nanos": 191064579 + }, + { + "secs": 0, + "nanos": 194239000 + }, + { + "secs": 0, + "nanos": 409957 + }, + { + "secs": 0, + "nanos": 718993 + }, + { + "secs": 0, + "nanos": 269653 + }, + { + "secs": 0, + "nanos": 504943599 + }, + { + "secs": 0, + "nanos": 159083651 + }, + { + "secs": 0, + "nanos": 120228857 + }, + { + "secs": 0, + "nanos": 98904057 + }, + { + "secs": 0, + "nanos": 137020650 + }, + { + "secs": 0, + "nanos": 1807697 + }, + { + "secs": 0, + "nanos": 22582184 + }, + { + "secs": 0, + "nanos": 64844805 + }, + { + "secs": 0, + "nanos": 6262835 + }, + { + "secs": 0, + "nanos": 2686473 + }, + { + "secs": 0, + "nanos": 2308793 + }, + { + "secs": 0, + "nanos": 14842755 + }, + { + "secs": 0, + "nanos": 2153185 + }, + { + "secs": 0, + "nanos": 2603958 + }, + { + "secs": 0, + "nanos": 832277 + }, + { + "secs": 0, + "nanos": 1899116 + }, + { + "secs": 0, + "nanos": 967324 + }, + { + "secs": 0, + "nanos": 384317 + }, + { + "secs": 0, + "nanos": 564190 + }, + { + "secs": 0, + "nanos": 351670 + }, + { + "secs": 0, + "nanos": 859512 + }, + { + "secs": 0, + "nanos": 900870 + }, + { + "secs": 0, + "nanos": 586265 + }, + { + "secs": 0, + "nanos": 253078 + }, + { + "secs": 0, + "nanos": 551292 + }, + { + "secs": 0, + "nanos": 408176 + }, + { + "secs": 0, + "nanos": 487384 + }, + { + "secs": 0, + "nanos": 564414 + }, + { + "secs": 0, + "nanos": 505929 + }, + { + "secs": 0, + "nanos": 710550 + }, + { + "secs": 0, + "nanos": 688586 + }, + { + "secs": 0, + "nanos": 428052 + }, + { + "secs": 0, + "nanos": 438203 + }, + { + "secs": 0, + "nanos": 695119 + }, + { + "secs": 0, + "nanos": 568212 + }, + { + "secs": 0, + "nanos": 589774 + }, + { + "secs": 0, + "nanos": 974424 + }, + { + "secs": 0, + "nanos": 188070 + }, + { + "secs": 0, + "nanos": 579263 + }, + { + "secs": 0, + "nanos": 1536597 + }, + { + "secs": 0, + "nanos": 1725225 + }, + { + "secs": 0, + "nanos": 389939 + }, + { + "secs": 0, + "nanos": 233 + } + ], + "user_prompt_length": 0, + "response_size": 607, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_eSTqMXgnF8EHykU2Stc1QN", + "fs_write" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_eSTqMXgnF8EHykU2Stc1QN", + "content": [ + { + "Text": "" + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "dd71d007-6d72-475f-99ca-cd660f0fba03", + "content": "", + "tool_uses": [ + { + "id": "tooluse_8s7zO7XrkAa4eOHtgDAqcH", + "name": "check_repository", + "orig_name": "check_repository", + "args": { + "doc_id": "a069ce", + "dry_run": true + }, + "orig_args": { + "doc_id": "a069ce", + "dry_run": true + } + } + ] + } + }, + "request_metadata": { + "request_id": "487eff61-96a4-4396-81dd-524d03347e0f", + "context_usage_percentage": 6.6435003, + "message_id": "dd71d007-6d72-475f-99ca-cd660f0fba03", + "request_start_timestamp_ms": 1771801594942, + "stream_end_timestamp_ms": 1771801597956, + "time_to_first_chunk": { + "secs": 2, + "nanos": 782454506 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 339539 + }, + { + "secs": 0, + "nanos": 36937864 + }, + { + "secs": 0, + "nanos": 31483397 + }, + { + "secs": 0, + "nanos": 10555061 + }, + { + "secs": 0, + "nanos": 15674797 + }, + { + "secs": 0, + "nanos": 31198504 + }, + { + "secs": 0, + "nanos": 57512892 + }, + { + "secs": 0, + "nanos": 46734258 + }, + { + "secs": 0, + "nanos": 594925 + }, + { + "secs": 0, + "nanos": 403 + } + ], + "user_prompt_length": 0, + "response_size": 37, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_8s7zO7XrkAa4eOHtgDAqcH", + "check_repository" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_8s7zO7XrkAa4eOHtgDAqcH", + "content": [ + { + "Json": { + "content": [ + { + "type": "text", + "text": "{\"doc_id\":\"a069ce\",\"doc_title\":\"Alexandria\",\"dry_run\":true,\"message\":\"Dry run - no changes made\",\"questions\":[{\"description\":\"Malformed temporal tag @t[=-330] — see docs for valid syntax\",\"line_ref\":11,\"type\":\"temporal\"},{\"description\":\"\\\"Founded: 331 BCE by Alexander the Great @t[=-330]\\\" - what is the source?\",\"line_ref\":11,\"type\":\"missing\"},{\"description\":\"\\\"Founded: 331 BCE by Alexander the Great @t[=-330]\\\" - what does \\\"BCE\\\" mean in this context?\",\"line_ref\":11,\"type\":\"ambiguous\"},{\"description\":\"\\\"Capital of: Ptolemaic Egypt (305–30 BCE)\\\" - what does \\\"BCE\\\" mean in this context?\",\"line_ref\":12,\"type\":\"ambiguous\"}],\"questions_generated\":4}" + } + ] + } + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "63d24155-f81e-495e-9369-f3d0f09f3256", + "content": "Negative years also rejected. Let me revert the file:", + "tool_uses": [ + { + "id": "tooluse_pcnEQjsrGGu69HjKs3Z3Wf", + "name": "fs_write", + "orig_name": "fs_write", + "args": { + "command": "str_replace", + "new_str": "- Founded: 331 BCE by Alexander the Great", + "old_str": "- Founded: 331 BCE by Alexander the Great @t[=-330]", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "summary": "Revert test - restore original line" + }, + "orig_args": { + "command": "str_replace", + "new_str": "- Founded: 331 BCE by Alexander the Great", + "old_str": "- Founded: 331 BCE by Alexander the Great @t[=-330]", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "summary": "Revert test - restore original line" + } + } + ] + } + }, + "request_metadata": { + "request_id": "ffbbc86a-107e-4e65-bc9a-26b46066f9bd", + "context_usage_percentage": 6.6895, + "message_id": "63d24155-f81e-495e-9369-f3d0f09f3256", + "request_start_timestamp_ms": 1771801600121, + "stream_end_timestamp_ms": 1771801608261, + "time_to_first_chunk": { + "secs": 6, + "nanos": 177444468 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 10688 + }, + { + "secs": 0, + "nanos": 3823 + }, + { + "secs": 0, + "nanos": 2572 + }, + { + "secs": 0, + "nanos": 3595 + }, + { + "secs": 0, + "nanos": 695658 + }, + { + "secs": 0, + "nanos": 2340631 + }, + { + "secs": 0, + "nanos": 3030898 + }, + { + "secs": 0, + "nanos": 12921041 + }, + { + "secs": 0, + "nanos": 87545437 + }, + { + "secs": 0, + "nanos": 283020 + }, + { + "secs": 0, + "nanos": 846487 + }, + { + "secs": 0, + "nanos": 478751 + }, + { + "secs": 0, + "nanos": 135947624 + }, + { + "secs": 0, + "nanos": 19016 + }, + { + "secs": 0, + "nanos": 525280 + }, + { + "secs": 0, + "nanos": 637818 + }, + { + "secs": 0, + "nanos": 817263 + }, + { + "secs": 0, + "nanos": 387729 + }, + { + "secs": 0, + "nanos": 742830 + }, + { + "secs": 0, + "nanos": 835146 + }, + { + "secs": 0, + "nanos": 103987 + }, + { + "secs": 0, + "nanos": 451505 + }, + { + "secs": 0, + "nanos": 193472485 + }, + { + "secs": 0, + "nanos": 213511 + }, + { + "secs": 0, + "nanos": 729605 + }, + { + "secs": 0, + "nanos": 452839 + }, + { + "secs": 0, + "nanos": 667507 + }, + { + "secs": 0, + "nanos": 350658 + }, + { + "secs": 0, + "nanos": 745052 + }, + { + "secs": 0, + "nanos": 450391 + }, + { + "secs": 0, + "nanos": 195558199 + }, + { + "secs": 0, + "nanos": 82213 + }, + { + "secs": 0, + "nanos": 702843 + }, + { + "secs": 0, + "nanos": 574523 + }, + { + "secs": 0, + "nanos": 506530 + }, + { + "secs": 0, + "nanos": 577121 + }, + { + "secs": 0, + "nanos": 655508 + }, + { + "secs": 0, + "nanos": 751261 + }, + { + "secs": 0, + "nanos": 141754 + }, + { + "secs": 0, + "nanos": 266040 + }, + { + "secs": 0, + "nanos": 539591875 + }, + { + "secs": 0, + "nanos": 125158281 + }, + { + "secs": 0, + "nanos": 153825588 + }, + { + "secs": 0, + "nanos": 113411362 + }, + { + "secs": 0, + "nanos": 126838663 + }, + { + "secs": 0, + "nanos": 124773336 + }, + { + "secs": 0, + "nanos": 36584306 + }, + { + "secs": 0, + "nanos": 73192890 + }, + { + "secs": 0, + "nanos": 2990939 + }, + { + "secs": 0, + "nanos": 20555200 + }, + { + "secs": 0, + "nanos": 598 + } + ], + "user_prompt_length": 0, + "response_size": 326, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_pcnEQjsrGGu69HjKs3Z3Wf", + "fs_write" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_pcnEQjsrGGu69HjKs3Z3Wf", + "content": [ + { + "Text": "" + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "367045ad-9df9-41f0-b647-3b5edb77b9b9", + "content": "So to answer your question: no, I didn't try it — I should have. Now that I have, both `@t[=331 BCE]` and `@t[=-330]` (astronomical year numbering) are rejected as malformed. Factbase's temporal tag parser currently only accepts positive years.\n\nThis is genuinely a missing feature for a history-focused knowledge base. Let me file that as a feature request:", + "tool_uses": [ + { + "id": "tooluse_jsMAbTyfeq6rTp5fSWcTPv", + "name": "execute_bash", + "orig_name": "execute_bash", + "args": { + "command": "curl -s -X PUT https://vikunja.home.everyonce.com/api/v1/projects/2/tasks \\\n -H \"Authorization: Bearer tk_ff251f3d3512775c71913bc2f8ec0dabbf5016a8\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"title\": \"[factbase][feature] Support BCE/negative year temporal tags\",\n \"description\": \"Factbase temporal tags currently only accept positive years (e.g. @t[=2024]). For historical knowledge bases, BCE dates are essential.\\n\\nTested formats that are rejected as malformed:\\n- @t[=331 BCE] — text inside tag rejected\\n- @t[=-330] — negative year (astronomical numbering) rejected\\n\\nSuggested approach: support either @t[=331 BCE] syntax directly, or negative/astronomical years like @t[=-330]. The former is more human-readable; the latter is more machine-parseable.\\n\\nThis blocks proper temporal tagging for the entire ancient-history factbase (66 documents). Currently all BCE dates are left untagged with review answers saying \\\"BCE temporal tags not yet supported.\\\"\\n\\nContext: discovered while building an ancient history factbase where virtually every date is BCE.\",\n \"priority\": 3\n }'", + "summary": "File feature request for BCE temporal tag support" + }, + "orig_args": { + "command": "curl -s -X PUT https://vikunja.home.everyonce.com/api/v1/projects/2/tasks \\\n -H \"Authorization: Bearer tk_ff251f3d3512775c71913bc2f8ec0dabbf5016a8\" \\\n -H \"Content-Type: application/json\" \\\n -d '{\n \"title\": \"[factbase][feature] Support BCE/negative year temporal tags\",\n \"description\": \"Factbase temporal tags currently only accept positive years (e.g. @t[=2024]). For historical knowledge bases, BCE dates are essential.\\n\\nTested formats that are rejected as malformed:\\n- @t[=331 BCE] — text inside tag rejected\\n- @t[=-330] — negative year (astronomical numbering) rejected\\n\\nSuggested approach: support either @t[=331 BCE] syntax directly, or negative/astronomical years like @t[=-330]. The former is more human-readable; the latter is more machine-parseable.\\n\\nThis blocks proper temporal tagging for the entire ancient-history factbase (66 documents). Currently all BCE dates are left untagged with review answers saying \\\"BCE temporal tags not yet supported.\\\"\\n\\nContext: discovered while building an ancient history factbase where virtually every date is BCE.\",\n \"priority\": 3\n }'", + "summary": "File feature request for BCE temporal tag support" + } + } + ] + } + }, + "request_metadata": { + "request_id": "21af71fe-daa6-477e-bdc8-f33086f8fc1d", + "context_usage_percentage": 6.7408004, + "message_id": "367045ad-9df9-41f0-b647-3b5edb77b9b9", + "request_start_timestamp_ms": 1771801608323, + "stream_end_timestamp_ms": 1771801620554, + "time_to_first_chunk": { + "secs": 2, + "nanos": 673958763 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 12356 + }, + { + "secs": 0, + "nanos": 2564 + }, + { + "secs": 0, + "nanos": 2121 + }, + { + "secs": 0, + "nanos": 2148 + }, + { + "secs": 0, + "nanos": 1776 + }, + { + "secs": 0, + "nanos": 2814 + }, + { + "secs": 0, + "nanos": 3058898 + }, + { + "secs": 0, + "nanos": 3277126 + }, + { + "secs": 0, + "nanos": 2536842 + }, + { + "secs": 0, + "nanos": 1783198 + }, + { + "secs": 0, + "nanos": 29243248 + }, + { + "secs": 0, + "nanos": 62077262 + }, + { + "secs": 0, + "nanos": 22848182 + }, + { + "secs": 0, + "nanos": 48242639 + }, + { + "secs": 0, + "nanos": 97570513 + }, + { + "secs": 0, + "nanos": 431591 + }, + { + "secs": 0, + "nanos": 48617518 + }, + { + "secs": 0, + "nanos": 48155700 + }, + { + "secs": 0, + "nanos": 51666409 + }, + { + "secs": 0, + "nanos": 49185041 + }, + { + "secs": 0, + "nanos": 53024575 + }, + { + "secs": 0, + "nanos": 46841050 + }, + { + "secs": 0, + "nanos": 100001696 + }, + { + "secs": 0, + "nanos": 48638472 + }, + { + "secs": 0, + "nanos": 50446836 + }, + { + "secs": 0, + "nanos": 46798538 + }, + { + "secs": 0, + "nanos": 52307503 + }, + { + "secs": 0, + "nanos": 387099866 + }, + { + "secs": 0, + "nanos": 88899300 + }, + { + "secs": 0, + "nanos": 109060123 + }, + { + "secs": 0, + "nanos": 54532881 + }, + { + "secs": 0, + "nanos": 1308791 + }, + { + "secs": 0, + "nanos": 1431010 + }, + { + "secs": 0, + "nanos": 958638 + }, + { + "secs": 0, + "nanos": 1619525 + }, + { + "secs": 0, + "nanos": 1600372 + }, + { + "secs": 0, + "nanos": 1221054 + }, + { + "secs": 0, + "nanos": 1429085 + }, + { + "secs": 0, + "nanos": 1533879 + }, + { + "secs": 0, + "nanos": 1411325 + }, + { + "secs": 0, + "nanos": 33389540 + }, + { + "secs": 0, + "nanos": 408910351 + }, + { + "secs": 6, + "nanos": 829273776 + }, + { + "secs": 0, + "nanos": 470963 + }, + { + "secs": 0, + "nanos": 268120 + }, + { + "secs": 0, + "nanos": 1668732 + }, + { + "secs": 0, + "nanos": 670725 + }, + { + "secs": 0, + "nanos": 487227 + }, + { + "secs": 0, + "nanos": 812850 + }, + { + "secs": 0, + "nanos": 487785 + }, + { + "secs": 0, + "nanos": 743920 + }, + { + "secs": 0, + "nanos": 559562 + }, + { + "secs": 0, + "nanos": 763534 + }, + { + "secs": 0, + "nanos": 911431 + }, + { + "secs": 0, + "nanos": 545843 + }, + { + "secs": 0, + "nanos": 580791 + }, + { + "secs": 0, + "nanos": 521437 + }, + { + "secs": 0, + "nanos": 677853 + }, + { + "secs": 0, + "nanos": 699553 + }, + { + "secs": 0, + "nanos": 533384 + }, + { + "secs": 0, + "nanos": 722061 + }, + { + "secs": 0, + "nanos": 395382 + }, + { + "secs": 0, + "nanos": 885300 + }, + { + "secs": 0, + "nanos": 1678099 + }, + { + "secs": 0, + "nanos": 16626 + }, + { + "secs": 0, + "nanos": 24096 + }, + { + "secs": 0, + "nanos": 25926955 + }, + { + "secs": 0, + "nanos": 1628701 + }, + { + "secs": 0, + "nanos": 11343869 + }, + { + "secs": 0, + "nanos": 2941439 + }, + { + "secs": 0, + "nanos": 1417441 + }, + { + "secs": 0, + "nanos": 2162888 + }, + { + "secs": 0, + "nanos": 704804 + }, + { + "secs": 0, + "nanos": 2813915 + }, + { + "secs": 0, + "nanos": 521731 + }, + { + "secs": 0, + "nanos": 750511 + }, + { + "secs": 0, + "nanos": 699894 + }, + { + "secs": 0, + "nanos": 786183 + }, + { + "secs": 0, + "nanos": 595982 + }, + { + "secs": 0, + "nanos": 806152 + }, + { + "secs": 0, + "nanos": 671080 + }, + { + "secs": 0, + "nanos": 557810 + }, + { + "secs": 0, + "nanos": 715082 + }, + { + "secs": 0, + "nanos": 523468 + }, + { + "secs": 0, + "nanos": 609068 + }, + { + "secs": 0, + "nanos": 635453 + }, + { + "secs": 0, + "nanos": 422381 + }, + { + "secs": 0, + "nanos": 652319 + }, + { + "secs": 0, + "nanos": 788507 + }, + { + "secs": 0, + "nanos": 584026 + }, + { + "secs": 0, + "nanos": 540750 + }, + { + "secs": 0, + "nanos": 674187 + }, + { + "secs": 0, + "nanos": 827823 + }, + { + "secs": 0, + "nanos": 655645 + }, + { + "secs": 0, + "nanos": 677669 + }, + { + "secs": 0, + "nanos": 382596 + }, + { + "secs": 0, + "nanos": 709312 + }, + { + "secs": 0, + "nanos": 464402 + }, + { + "secs": 0, + "nanos": 609602 + }, + { + "secs": 0, + "nanos": 727525 + }, + { + "secs": 0, + "nanos": 388004 + }, + { + "secs": 0, + "nanos": 601150 + }, + { + "secs": 0, + "nanos": 500115 + }, + { + "secs": 0, + "nanos": 634200 + }, + { + "secs": 0, + "nanos": 608734 + }, + { + "secs": 0, + "nanos": 622317 + }, + { + "secs": 0, + "nanos": 479229 + }, + { + "secs": 0, + "nanos": 543053 + }, + { + "secs": 0, + "nanos": 656098 + }, + { + "secs": 0, + "nanos": 565498 + }, + { + "secs": 0, + "nanos": 504444 + }, + { + "secs": 0, + "nanos": 576481 + }, + { + "secs": 0, + "nanos": 579243 + }, + { + "secs": 0, + "nanos": 613649 + }, + { + "secs": 0, + "nanos": 389346 + }, + { + "secs": 0, + "nanos": 831500 + }, + { + "secs": 0, + "nanos": 504592 + }, + { + "secs": 0, + "nanos": 606062 + }, + { + "secs": 0, + "nanos": 506911 + }, + { + "secs": 0, + "nanos": 595891 + }, + { + "secs": 0, + "nanos": 548629 + }, + { + "secs": 0, + "nanos": 455774 + }, + { + "secs": 0, + "nanos": 701417 + }, + { + "secs": 0, + "nanos": 540343 + }, + { + "secs": 0, + "nanos": 625576 + }, + { + "secs": 0, + "nanos": 665900 + }, + { + "secs": 0, + "nanos": 721123 + }, + { + "secs": 0, + "nanos": 606137 + }, + { + "secs": 0, + "nanos": 1618376 + }, + { + "secs": 0, + "nanos": 1756946 + }, + { + "secs": 0, + "nanos": 587638 + }, + { + "secs": 0, + "nanos": 4168188 + }, + { + "secs": 0, + "nanos": 407487 + }, + { + "secs": 0, + "nanos": 1218216 + }, + { + "secs": 0, + "nanos": 627658 + }, + { + "secs": 0, + "nanos": 853266 + }, + { + "secs": 0, + "nanos": 680079 + }, + { + "secs": 0, + "nanos": 690504 + }, + { + "secs": 0, + "nanos": 516175 + }, + { + "secs": 0, + "nanos": 776367 + }, + { + "secs": 0, + "nanos": 435400 + }, + { + "secs": 0, + "nanos": 731309 + }, + { + "secs": 0, + "nanos": 705188 + }, + { + "secs": 0, + "nanos": 603176 + }, + { + "secs": 0, + "nanos": 554525 + }, + { + "secs": 0, + "nanos": 675577 + }, + { + "secs": 0, + "nanos": 641784 + }, + { + "secs": 0, + "nanos": 545901 + }, + { + "secs": 0, + "nanos": 607458 + }, + { + "secs": 0, + "nanos": 671274 + }, + { + "secs": 0, + "nanos": 621645 + }, + { + "secs": 0, + "nanos": 668653 + }, + { + "secs": 0, + "nanos": 700582 + }, + { + "secs": 0, + "nanos": 425779 + }, + { + "secs": 0, + "nanos": 604149 + }, + { + "secs": 0, + "nanos": 550522 + }, + { + "secs": 0, + "nanos": 784140 + }, + { + "secs": 0, + "nanos": 489203 + }, + { + "secs": 0, + "nanos": 708203 + }, + { + "secs": 0, + "nanos": 417403 + }, + { + "secs": 0, + "nanos": 634530 + }, + { + "secs": 0, + "nanos": 835971 + }, + { + "secs": 0, + "nanos": 507551 + }, + { + "secs": 0, + "nanos": 444443 + }, + { + "secs": 0, + "nanos": 626696 + }, + { + "secs": 0, + "nanos": 750221 + }, + { + "secs": 0, + "nanos": 570688 + }, + { + "secs": 0, + "nanos": 584764 + }, + { + "secs": 0, + "nanos": 910335 + }, + { + "secs": 0, + "nanos": 134775 + }, + { + "secs": 0, + "nanos": 642750 + }, + { + "secs": 0, + "nanos": 368065 + }, + { + "secs": 0, + "nanos": 48698287 + }, + { + "secs": 0, + "nanos": 52194082 + }, + { + "secs": 0, + "nanos": 26162488 + }, + { + "secs": 0, + "nanos": 42358281 + }, + { + "secs": 0, + "nanos": 41938736 + }, + { + "secs": 0, + "nanos": 52471672 + }, + { + "secs": 0, + "nanos": 51313553 + }, + { + "secs": 0, + "nanos": 36933773 + }, + { + "secs": 0, + "nanos": 66833742 + }, + { + "secs": 0, + "nanos": 63829368 + }, + { + "secs": 0, + "nanos": 57407886 + }, + { + "secs": 0, + "nanos": 46337519 + }, + { + "secs": 0, + "nanos": 27663006 + }, + { + "secs": 0, + "nanos": 349245 + }, + { + "secs": 0, + "nanos": 464333 + }, + { + "secs": 0, + "nanos": 1121994 + }, + { + "secs": 0, + "nanos": 809126 + }, + { + "secs": 0, + "nanos": 321323 + }, + { + "secs": 0, + "nanos": 488446 + }, + { + "secs": 0, + "nanos": 560214 + }, + { + "secs": 0, + "nanos": 549100 + }, + { + "secs": 0, + "nanos": 535491 + }, + { + "secs": 0, + "nanos": 693964 + }, + { + "secs": 0, + "nanos": 645232 + }, + { + "secs": 0, + "nanos": 266456 + }, + { + "secs": 0, + "nanos": 585801 + }, + { + "secs": 0, + "nanos": 479305 + }, + { + "secs": 0, + "nanos": 572109 + }, + { + "secs": 0, + "nanos": 537577 + }, + { + "secs": 0, + "nanos": 547559 + }, + { + "secs": 0, + "nanos": 554793 + }, + { + "secs": 0, + "nanos": 513546 + }, + { + "secs": 0, + "nanos": 522252 + }, + { + "secs": 0, + "nanos": 621013 + }, + { + "secs": 0, + "nanos": 679234 + }, + { + "secs": 0, + "nanos": 510965 + }, + { + "secs": 0, + "nanos": 452946 + }, + { + "secs": 0, + "nanos": 754731 + }, + { + "secs": 0, + "nanos": 338119 + }, + { + "secs": 0, + "nanos": 530185 + }, + { + "secs": 0, + "nanos": 658630 + }, + { + "secs": 0, + "nanos": 506941 + }, + { + "secs": 0, + "nanos": 580994 + }, + { + "secs": 0, + "nanos": 582879 + }, + { + "secs": 0, + "nanos": 658930 + }, + { + "secs": 0, + "nanos": 712310 + }, + { + "secs": 0, + "nanos": 2572229 + }, + { + "secs": 0, + "nanos": 231943 + }, + { + "secs": 0, + "nanos": 693557 + }, + { + "secs": 0, + "nanos": 293 + } + ], + "user_prompt_length": 0, + "response_size": 1585, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_jsMAbTyfeq6rTp5fSWcTPv", + "execute_bash" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_jsMAbTyfeq6rTp5fSWcTPv", + "content": [ + { + "Json": { + "exit_status": "0", + "stdout": "{\"id\":84,\"title\":\"[factbase][feature] Support BCE/negative year temporal tags\",\"description\":\"Factbase temporal tags currently only accept positive years (e.g. @t[=2024]). For historical knowledge bases, BCE dates are essential.\\n\\nTested formats that are rejected as malformed:\\n- @t[=331 BCE] — text inside tag rejected\\n- @t[=-330] — negative year (astronomical numbering) rejected\\n\\nSuggested approach: support either @t[=331 BCE] syntax directly, or negative/astronomical years like @t[=-330]. The former is more human-readable; the latter is more machine-parseable.\\n\\nThis blocks proper temporal tagging for the entire ancient-history factbase (66 documents). Currently all BCE dates are left untagged with review answers saying \\\"BCE temporal tags not yet supported.\\\"\\n\\nContext: discovered while building an ancient history factbase where virtually every date is BCE.\",\"done\":false,\"done_at\":\"0001-01-01T00:00:00Z\",\"due_date\":\"0001-01-01T00:00:00Z\",\"reminders\":null,\"project_id\":2,\"repeat_after\":0,\"repeat_mode\":0,\"priority\":3,\"start_date\":\"0001-01-01T00:00:00Z\",\"end_date\":\"0001-01-01T00:00:00Z\",\"assignees\":[],\"labels\":null,\"hex_color\":\"\",\"percent_done\":0,\"identifier\":\"#76\",\"index\":76,\"related_tasks\":null,\"attachments\":null,\"cover_image_attachment_id\":0,\"is_favorite\":false,\"created\":\"2026-02-22T17:07:00.781276966-06:00\",\"updated\":\"2026-02-22T17:07:00.781281133-06:00\",\"bucket_id\":0,\"position\":1.734723475976807e-18,\"reactions\":null,\"created_by\":{\"id\":1,\"name\":\"daniel\",\"username\":\"daniel\",\"created\":\"2026-02-20T07:27:17-06:00\",\"updated\":\"2026-02-20T10:17:06-06:00\"}}", + "stderr": "" + } + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "Response": { + "message_id": "151fdc89-584e-450b-b612-d5bf4a7d75e4", + "content": "Filed as task #76. \n\nSo the bottom line: you had the right instinct, and I should have tested it instead of assuming. Both `@t[=331 BCE]` and `@t[=-330]` are explicitly rejected by the parser — it's a real gap in factbase, not just a documentation omission. Until that feature ships, the BCE dates will have to stay as plain text in the documents." + } + }, + "request_metadata": { + "request_id": "f191a086-e6ac-493a-9027-18384d2ef5b2", + "context_usage_percentage": 6.8097005, + "message_id": "151fdc89-584e-450b-b612-d5bf4a7d75e4", + "request_start_timestamp_ms": 1771801620832, + "stream_end_timestamp_ms": 1771801625103, + "time_to_first_chunk": { + "secs": 2, + "nanos": 560691637 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 17139 + }, + { + "secs": 0, + "nanos": 3357 + }, + { + "secs": 0, + "nanos": 16878759 + }, + { + "secs": 0, + "nanos": 1483313 + }, + { + "secs": 0, + "nanos": 3050456 + }, + { + "secs": 0, + "nanos": 3288925 + }, + { + "secs": 0, + "nanos": 2096493 + }, + { + "secs": 0, + "nanos": 2884921 + }, + { + "secs": 0, + "nanos": 2562301 + }, + { + "secs": 0, + "nanos": 3967276 + }, + { + "secs": 0, + "nanos": 1199395 + }, + { + "secs": 0, + "nanos": 22415523 + }, + { + "secs": 0, + "nanos": 52755099 + }, + { + "secs": 0, + "nanos": 45142704 + }, + { + "secs": 0, + "nanos": 764353 + }, + { + "secs": 0, + "nanos": 46986304 + }, + { + "secs": 0, + "nanos": 41565481 + }, + { + "secs": 0, + "nanos": 45010674 + }, + { + "secs": 0, + "nanos": 46930142 + }, + { + "secs": 0, + "nanos": 48956815 + }, + { + "secs": 0, + "nanos": 51806614 + }, + { + "secs": 0, + "nanos": 140901842 + }, + { + "secs": 0, + "nanos": 57079211 + }, + { + "secs": 0, + "nanos": 153634322 + }, + { + "secs": 0, + "nanos": 82744859 + }, + { + "secs": 0, + "nanos": 65108368 + }, + { + "secs": 0, + "nanos": 974382 + }, + { + "secs": 0, + "nanos": 1727046 + }, + { + "secs": 0, + "nanos": 1240770 + }, + { + "secs": 0, + "nanos": 1254989 + }, + { + "secs": 0, + "nanos": 1256917 + }, + { + "secs": 0, + "nanos": 31118953 + }, + { + "secs": 0, + "nanos": 50361279 + }, + { + "secs": 0, + "nanos": 52607894 + }, + { + "secs": 0, + "nanos": 43793902 + }, + { + "secs": 0, + "nanos": 56834064 + }, + { + "secs": 0, + "nanos": 42104149 + }, + { + "secs": 0, + "nanos": 48009882 + }, + { + "secs": 0, + "nanos": 51341668 + }, + { + "secs": 0, + "nanos": 47769099 + }, + { + "secs": 0, + "nanos": 47011696 + }, + { + "secs": 0, + "nanos": 50113523 + }, + { + "secs": 0, + "nanos": 47908447 + }, + { + "secs": 0, + "nanos": 49345902 + }, + { + "secs": 0, + "nanos": 48422941 + }, + { + "secs": 0, + "nanos": 95203414 + }, + { + "secs": 0, + "nanos": 1772352 + } + ], + "user_prompt_length": 0, + "response_size": 349, + "chat_conversation_type": "NotToolUse", + "tool_use_ids_and_names": [], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "Prompt": { + "prompt": "it looks like factbase was updated. can you retry your tests?" + } + }, + "timestamp": "2026-02-22T23:11:08.711631934Z", + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "20bc1e1b-73f8-46fe-addb-7d09c15d9ef9", + "content": "\n\nLet me rerun the same tests:", + "tool_uses": [ + { + "id": "tooluse_46kPw1srnTaOX7ioQVkUIx", + "name": "fs_write", + "orig_name": "fs_write", + "args": { + "command": "str_replace", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "old_str": "- Founded: 331 BCE by Alexander the Great", + "new_str": "- Founded: 331 BCE by Alexander the Great @t[=331 BCE]", + "summary": "Test @t[=331 BCE] format again" + }, + "orig_args": { + "command": "str_replace", + "path": "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md", + "old_str": "- Founded: 331 BCE by Alexander the Great", + "new_str": "- Founded: 331 BCE by Alexander the Great @t[=331 BCE]", + "summary": "Test @t[=331 BCE] format again" + } + } + ] + } + }, + "request_metadata": { + "request_id": "4fbfc0e9-4dfb-4b15-bcaa-7cf8f4aa7332", + "context_usage_percentage": 6.8407, + "message_id": "20bc1e1b-73f8-46fe-addb-7d09c15d9ef9", + "request_start_timestamp_ms": 1771801868712, + "stream_end_timestamp_ms": 1771801873119, + "time_to_first_chunk": { + "secs": 3, + "nanos": 314864290 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 17154 + }, + { + "secs": 0, + "nanos": 2657 + }, + { + "secs": 0, + "nanos": 2461 + }, + { + "secs": 0, + "nanos": 1857 + }, + { + "secs": 0, + "nanos": 1983 + }, + { + "secs": 0, + "nanos": 26394178 + }, + { + "secs": 0, + "nanos": 94246628 + }, + { + "secs": 0, + "nanos": 411888 + }, + { + "secs": 0, + "nanos": 463850 + }, + { + "secs": 0, + "nanos": 182229310 + }, + { + "secs": 0, + "nanos": 515654 + }, + { + "secs": 0, + "nanos": 458502 + }, + { + "secs": 0, + "nanos": 366805 + }, + { + "secs": 0, + "nanos": 415371 + }, + { + "secs": 0, + "nanos": 352465 + }, + { + "secs": 0, + "nanos": 686243 + }, + { + "secs": 0, + "nanos": 638357 + }, + { + "secs": 0, + "nanos": 352991 + }, + { + "secs": 0, + "nanos": 797012 + }, + { + "secs": 0, + "nanos": 404808 + }, + { + "secs": 0, + "nanos": 690219 + }, + { + "secs": 0, + "nanos": 361056 + }, + { + "secs": 0, + "nanos": 191432024 + }, + { + "secs": 0, + "nanos": 402529 + }, + { + "secs": 0, + "nanos": 740281 + }, + { + "secs": 0, + "nanos": 673975 + }, + { + "secs": 0, + "nanos": 678236 + }, + { + "secs": 0, + "nanos": 360377 + }, + { + "secs": 0, + "nanos": 869228 + }, + { + "secs": 0, + "nanos": 396033 + }, + { + "secs": 0, + "nanos": 243224467 + }, + { + "secs": 0, + "nanos": 577837 + }, + { + "secs": 0, + "nanos": 639797 + }, + { + "secs": 0, + "nanos": 587875 + }, + { + "secs": 0, + "nanos": 607070 + }, + { + "secs": 0, + "nanos": 600804 + }, + { + "secs": 0, + "nanos": 695171 + }, + { + "secs": 0, + "nanos": 401528 + }, + { + "secs": 0, + "nanos": 714383 + }, + { + "secs": 0, + "nanos": 373428 + }, + { + "secs": 0, + "nanos": 305485678 + }, + { + "secs": 0, + "nanos": 24467449 + }, + { + "secs": 0, + "nanos": 226599 + }, + { + "secs": 0, + "nanos": 830958 + }, + { + "secs": 0, + "nanos": 1682012 + }, + { + "secs": 0, + "nanos": 606646 + }, + { + "secs": 0, + "nanos": 355261 + }, + { + "secs": 0, + "nanos": 467666 + }, + { + "secs": 0, + "nanos": 1747097 + }, + { + "secs": 0, + "nanos": 1886652 + }, + { + "secs": 0, + "nanos": 462842 + }, + { + "secs": 0, + "nanos": 225 + } + ], + "user_prompt_length": 220, + "response_size": 301, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_46kPw1srnTaOX7ioQVkUIx", + "fs_write" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_46kPw1srnTaOX7ioQVkUIx", + "content": [ + { + "Text": "" + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "591908a0-8e9f-49c9-ac9f-494e463bcb56", + "content": "", + "tool_uses": [ + { + "id": "tooluse_tG26JKfkaUP71T5NxbgtBj", + "name": "check_repository", + "orig_name": "check_repository", + "args": { + "doc_id": "a069ce", + "dry_run": true + }, + "orig_args": { + "doc_id": "a069ce", + "dry_run": true + } + } + ] + } + }, + "request_metadata": { + "request_id": "6fe24a2a-4493-452b-bd22-0a4cbd54bbbe", + "context_usage_percentage": 6.8510003, + "message_id": "591908a0-8e9f-49c9-ac9f-494e463bcb56", + "request_start_timestamp_ms": 1771801873211, + "stream_end_timestamp_ms": 1771801876275, + "time_to_first_chunk": { + "secs": 2, + "nanos": 839986382 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 20046414 + }, + { + "secs": 0, + "nanos": 47026893 + }, + { + "secs": 0, + "nanos": 16187149 + }, + { + "secs": 0, + "nanos": 41317840 + }, + { + "secs": 0, + "nanos": 25782129 + }, + { + "secs": 0, + "nanos": 41467992 + }, + { + "secs": 0, + "nanos": 31849257 + }, + { + "secs": 0, + "nanos": 17493440 + }, + { + "secs": 0, + "nanos": 1720010 + }, + { + "secs": 0, + "nanos": 493058 + }, + { + "secs": 0, + "nanos": 335 + } + ], + "user_prompt_length": 0, + "response_size": 37, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_tG26JKfkaUP71T5NxbgtBj", + "check_repository" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_tG26JKfkaUP71T5NxbgtBj", + "content": [ + { + "Text": "An error occurred processing the tool: \nTransport closed" + } + ], + "status": "Error" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "4e65aa09-8a66-4dd7-a9b1-4ba4118cb390", + "content": "", + "tool_uses": [ + { + "id": "tooluse_0wC5OsHzMpJLvldAp0zfvo", + "name": "check_repository", + "orig_name": "check_repository", + "args": { + "doc_id": "a069ce", + "dry_run": true + }, + "orig_args": { + "doc_id": "a069ce", + "dry_run": true + } + } + ] + } + }, + "request_metadata": { + "request_id": "8f553fb2-7a93-418d-89d3-bdf0cbe2f54b", + "context_usage_percentage": 6.8617, + "message_id": "4e65aa09-8a66-4dd7-a9b1-4ba4118cb390", + "request_start_timestamp_ms": 1771801876350, + "stream_end_timestamp_ms": 1771801879052, + "time_to_first_chunk": { + "secs": 2, + "nanos": 611926202 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 148435 + }, + { + "secs": 0, + "nanos": 67366550 + }, + { + "secs": 0, + "nanos": 15574541 + }, + { + "secs": 0, + "nanos": 511868 + }, + { + "secs": 0, + "nanos": 662984 + }, + { + "secs": 0, + "nanos": 660854 + }, + { + "secs": 0, + "nanos": 614022 + }, + { + "secs": 0, + "nanos": 843733 + }, + { + "secs": 0, + "nanos": 1370074 + }, + { + "secs": 0, + "nanos": 2306709 + }, + { + "secs": 0, + "nanos": 355643 + }, + { + "secs": 0, + "nanos": 247 + } + ], + "user_prompt_length": 0, + "response_size": 37, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_0wC5OsHzMpJLvldAp0zfvo", + "check_repository" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_0wC5OsHzMpJLvldAp0zfvo", + "content": [ + { + "Text": "An error occurred processing the tool: \nTransport closed" + } + ], + "status": "Error" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "69e1c812-dca2-4071-bf18-9fb57f868d42", + "content": "MCP server seems to be restarting. Let me give it a moment.", + "tool_uses": [ + { + "id": "tooluse_35wUBUdu2tHjxJFoGivFr0", + "name": "execute_bash", + "orig_name": "execute_bash", + "args": { + "command": "sleep 5", + "summary": "Wait for MCP server to come back up" + }, + "orig_args": { + "command": "sleep 5", + "summary": "Wait for MCP server to come back up" + } + } + ] + } + }, + "request_metadata": { + "request_id": "15709b1d-1bbc-4e75-aa96-999d2aac2ad6", + "context_usage_percentage": 6.8746, + "message_id": "69e1c812-dca2-4071-bf18-9fb57f868d42", + "request_start_timestamp_ms": 1771801879086, + "stream_end_timestamp_ms": 1771801882372, + "time_to_first_chunk": { + "secs": 2, + "nanos": 898708996 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 72813860 + }, + { + "secs": 0, + "nanos": 111324537 + }, + { + "secs": 0, + "nanos": 167540361 + }, + { + "secs": 0, + "nanos": 48682752 + }, + { + "secs": 0, + "nanos": 2730127 + }, + { + "secs": 0, + "nanos": 2891897 + }, + { + "secs": 0, + "nanos": 7917390 + }, + { + "secs": 0, + "nanos": 3078487 + }, + { + "secs": 0, + "nanos": 3693767 + }, + { + "secs": 0, + "nanos": 2830819 + }, + { + "secs": 0, + "nanos": 4314144 + }, + { + "secs": 0, + "nanos": 3704937 + }, + { + "secs": 0, + "nanos": 2520953 + }, + { + "secs": 0, + "nanos": 3707960 + }, + { + "secs": 0, + "nanos": 2879340 + }, + { + "secs": 0, + "nanos": 3514335 + }, + { + "secs": 0, + "nanos": 3576037 + }, + { + "secs": 0, + "nanos": 3486978 + }, + { + "secs": 0, + "nanos": 4865948 + }, + { + "secs": 0, + "nanos": 2609067 + }, + { + "secs": 0, + "nanos": 1977126 + }, + { + "secs": 0, + "nanos": 290 + } + ], + "user_prompt_length": 0, + "response_size": 131, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_35wUBUdu2tHjxJFoGivFr0", + "execute_bash" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_35wUBUdu2tHjxJFoGivFr0", + "content": [ + { + "Json": { + "exit_status": "0", + "stdout": "", + "stderr": "" + } + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "b0e53f40-2bf4-4c06-a98b-6cc3615ba28a", + "content": "", + "tool_uses": [ + { + "id": "tooluse_j5ZpYK9rGnfbXUZ88wXgpt", + "name": "check_repository", + "orig_name": "check_repository", + "args": { + "doc_id": "a069ce", + "dry_run": true + }, + "orig_args": { + "doc_id": "a069ce", + "dry_run": true + } + } + ] + } + }, + "request_metadata": { + "request_id": "6b10b917-2bfb-4321-a6c4-49bfe9b94c44", + "context_usage_percentage": 6.8847, + "message_id": "b0e53f40-2bf4-4c06-a98b-6cc3615ba28a", + "request_start_timestamp_ms": 1771801887569, + "stream_end_timestamp_ms": 1771801890216, + "time_to_first_chunk": { + "secs": 2, + "nanos": 590856007 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 23771 + }, + { + "secs": 0, + "nanos": 9470347 + }, + { + "secs": 0, + "nanos": 118704 + }, + { + "secs": 0, + "nanos": 1487911 + }, + { + "secs": 0, + "nanos": 9134442 + }, + { + "secs": 0, + "nanos": 22955421 + }, + { + "secs": 0, + "nanos": 1411384 + }, + { + "secs": 0, + "nanos": 11692377 + }, + { + "secs": 0, + "nanos": 18193 + }, + { + "secs": 0, + "nanos": 346780 + }, + { + "secs": 0, + "nanos": 500 + } + ], + "user_prompt_length": 0, + "response_size": 37, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_j5ZpYK9rGnfbXUZ88wXgpt", + "check_repository" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_j5ZpYK9rGnfbXUZ88wXgpt", + "content": [ + { + "Text": "An error occurred processing the tool: \nTransport closed" + } + ], + "status": "Error" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "f77ad85b-9e70-458b-a0a5-23f250f5d711", + "content": "", + "tool_uses": [ + { + "id": "tooluse_IGvZI9Lytm3ibSJZOa5YQ9", + "name": "execute_bash", + "orig_name": "execute_bash", + "args": { + "command": "sleep 10", + "summary": "Wait longer for MCP server restart" + }, + "orig_args": { + "command": "sleep 10", + "summary": "Wait longer for MCP server restart" + } + } + ] + } + }, + "request_metadata": { + "request_id": "2edbf6de-9a58-44f4-bf60-2a505271b7a2", + "context_usage_percentage": 6.8956003, + "message_id": "f77ad85b-9e70-458b-a0a5-23f250f5d711", + "request_start_timestamp_ms": 1771801890305, + "stream_end_timestamp_ms": 1771801894634, + "time_to_first_chunk": { + "secs": 3, + "nanos": 352216474 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 19429 + }, + { + "secs": 0, + "nanos": 5057 + }, + { + "secs": 0, + "nanos": 2850 + }, + { + "secs": 0, + "nanos": 4862 + }, + { + "secs": 0, + "nanos": 194791109 + }, + { + "secs": 0, + "nanos": 87459093 + }, + { + "secs": 0, + "nanos": 57158575 + }, + { + "secs": 0, + "nanos": 67362407 + }, + { + "secs": 0, + "nanos": 63172686 + }, + { + "secs": 0, + "nanos": 122953198 + }, + { + "secs": 0, + "nanos": 69917940 + }, + { + "secs": 0, + "nanos": 66943174 + }, + { + "secs": 0, + "nanos": 103154867 + }, + { + "secs": 0, + "nanos": 138974169 + }, + { + "secs": 0, + "nanos": 3618046 + }, + { + "secs": 0, + "nanos": 1513793 + }, + { + "secs": 0, + "nanos": 588 + } + ], + "user_prompt_length": 0, + "response_size": 72, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_IGvZI9Lytm3ibSJZOa5YQ9", + "execute_bash" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_IGvZI9Lytm3ibSJZOa5YQ9", + "content": [ + { + "Json": { + "exit_status": "0", + "stdout": "", + "stderr": "" + } + } + ], + "status": "Success" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "cf9080cc-94e5-498e-9f00-a727fa614ca5", + "content": "", + "tool_uses": [ + { + "id": "tooluse_EtGr6texbO7kctokwAtF36", + "name": "check_repository", + "orig_name": "check_repository", + "args": { + "doc_id": "a069ce", + "dry_run": true + }, + "orig_args": { + "doc_id": "a069ce", + "dry_run": true + } + } + ] + } + }, + "request_metadata": { + "request_id": "5fdb0b54-241e-4929-8ce5-f5451a519d9e", + "context_usage_percentage": 6.9057, + "message_id": "cf9080cc-94e5-498e-9f00-a727fa614ca5", + "request_start_timestamp_ms": 1771801904731, + "stream_end_timestamp_ms": 1771801907147, + "time_to_first_chunk": { + "secs": 2, + "nanos": 378582374 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 21557 + }, + { + "secs": 0, + "nanos": 1532041 + }, + { + "secs": 0, + "nanos": 130467 + }, + { + "secs": 0, + "nanos": 1197382 + }, + { + "secs": 0, + "nanos": 9711959 + }, + { + "secs": 0, + "nanos": 18655230 + }, + { + "secs": 0, + "nanos": 5579199 + }, + { + "secs": 0, + "nanos": 194240 + }, + { + "secs": 0, + "nanos": 642301 + }, + { + "secs": 0, + "nanos": 314 + } + ], + "user_prompt_length": 0, + "response_size": 37, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_EtGr6texbO7kctokwAtF36", + "check_repository" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_EtGr6texbO7kctokwAtF36", + "content": [ + { + "Text": "An error occurred processing the tool: \nTransport closed" + } + ], + "status": "Error" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "ToolUse": { + "message_id": "23704b24-2c76-4d7d-9876-217e68470e80", + "content": "", + "tool_uses": [ + { + "id": "tooluse_ZwFFnze7Eu2KelylonHgok", + "name": "scan_repository", + "orig_name": "scan_repository", + "args": {}, + "orig_args": {} + } + ] + } + }, + "request_metadata": { + "request_id": "324fdbd0-0bcf-4462-85e9-1f6bfd013e07", + "context_usage_percentage": 6.9124, + "message_id": "23704b24-2c76-4d7d-9876-217e68470e80", + "request_start_timestamp_ms": 1771801907225, + "stream_end_timestamp_ms": 1771801910338, + "time_to_first_chunk": { + "secs": 3, + "nanos": 79754894 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 13731 + }, + { + "secs": 0, + "nanos": 31725996 + }, + { + "secs": 0, + "nanos": 5420 + }, + { + "secs": 0, + "nanos": 601856 + }, + { + "secs": 0, + "nanos": 350 + } + ], + "user_prompt_length": 0, + "response_size": 0, + "chat_conversation_type": "ToolUse", + "tool_use_ids_and_names": [ + [ + "tooluse_ZwFFnze7Eu2KelylonHgok", + "scan_repository" + ] + ], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + }, + { + "user": { + "additional_context": "", + "env_context": { + "env_state": { + "operating_system": "linux", + "current_working_directory": "/home/ubuntu/work/factbase-ancient-history", + "environment_variables": [] + } + }, + "content": { + "ToolUseResults": { + "tool_use_results": [ + { + "tool_use_id": "tooluse_ZwFFnze7Eu2KelylonHgok", + "content": [ + { + "Text": "An error occurred processing the tool: \nTransport closed" + } + ], + "status": "Error" + } + ] + } + }, + "timestamp": null, + "images": null + }, + "assistant": { + "Response": { + "message_id": "00d6652e-1ef2-4db9-945e-95dcabf35cd3", + "content": "The factbase MCP server isn't responding yet — getting \"Transport closed\" on every call. It may still be in the middle of updating. Want me to keep retrying, or let me know when you think it's back up?" + } + }, + "request_metadata": { + "request_id": "e91b78b9-0f19-4f7a-98f1-5f6752f495ef", + "context_usage_percentage": 6.9206996, + "message_id": "00d6652e-1ef2-4db9-945e-95dcabf35cd3", + "request_start_timestamp_ms": 1771801910444, + "stream_end_timestamp_ms": 1771801913953, + "time_to_first_chunk": { + "secs": 2, + "nanos": 678676993 + }, + "time_between_chunks": [ + { + "secs": 0, + "nanos": 12932 + }, + { + "secs": 0, + "nanos": 7128 + }, + { + "secs": 0, + "nanos": 31723757 + }, + { + "secs": 0, + "nanos": 4248792 + }, + { + "secs": 0, + "nanos": 3215272 + }, + { + "secs": 0, + "nanos": 5135859 + }, + { + "secs": 0, + "nanos": 7935977 + }, + { + "secs": 0, + "nanos": 6980230 + }, + { + "secs": 0, + "nanos": 7041597 + }, + { + "secs": 0, + "nanos": 9740303 + }, + { + "secs": 0, + "nanos": 4820936 + }, + { + "secs": 0, + "nanos": 4490104 + }, + { + "secs": 0, + "nanos": 2844071 + }, + { + "secs": 0, + "nanos": 41248222 + }, + { + "secs": 0, + "nanos": 38885031 + }, + { + "secs": 0, + "nanos": 56686826 + }, + { + "secs": 0, + "nanos": 46959272 + }, + { + "secs": 0, + "nanos": 56179665 + }, + { + "secs": 0, + "nanos": 50375502 + }, + { + "secs": 0, + "nanos": 47240975 + }, + { + "secs": 0, + "nanos": 41111729 + }, + { + "secs": 0, + "nanos": 68072681 + }, + { + "secs": 0, + "nanos": 40643836 + }, + { + "secs": 0, + "nanos": 151257384 + }, + { + "secs": 0, + "nanos": 30993029 + }, + { + "secs": 0, + "nanos": 7534566 + }, + { + "secs": 0, + "nanos": 24985376 + }, + { + "secs": 0, + "nanos": 37705857 + }, + { + "secs": 0, + "nanos": 1952563 + } + ], + "user_prompt_length": 0, + "response_size": 203, + "chat_conversation_type": "NotToolUse", + "tool_use_ids_and_names": [], + "model_id": "claude-opus-4.6-1m", + "message_meta_tags": [] + } + } + ], + "valid_history_range": [ + 0, + 21 + ], + "transcript": [ + "> did you try something simple like @t[=31 BCE] in figuring out the best formatting for the dates?", + "\n\nLet me check what the factbase authoring guide says about temporal tag formatting, and also look at how dates are currently being used in the repo.\n[Tool uses: get_authoring_guide,list_repositories]", + "\n[Tool uses: search_content]", + "\n[Tool uses: search_content]", + "\n[Tool uses: thinking]", + "Honestly, no — I didn't try it. I took the authoring guide at face value, which says only years (like `2024`), months (`2024-03`), etc. go inside `@t[...]`, and the common errors section explicitly warns against putting non-date text inside the brackets. So I assumed \"BCE\" as text would be rejected and just punted with \"BCE temporal tags not yet supported by factbase\" across all the review answers.\n\nBut you're right to question that. `@t[=31 BCE]` is a perfectly reasonable thing to try — the \"BCE\" is still date-qualifying information, not descriptive text like \"seasonal\" or \"bright red.\" It's worth testing whether factbase actually parses it or rejects it.\n\nLet me try it on a single document and see what happens:\n[Tool uses: get_entity]", + "\n[Tool uses: fs_read]", + "Let me test by adding a `@t[=331 BCE]` tag to one line and running a check to see if factbase accepts it:\n[Tool uses: fs_write]", + "\n[Tool uses: check_repository]", + "There it is — factbase explicitly rejects it: \"Malformed temporal tag @t[=331 BCE] — see docs for valid syntax.\" So it does parse the tag, recognizes it's invalid, and flags it.\n\nLet me revert that test and also try the negative-year approach that some systems use (astronomical year numbering where 31 BCE = -30):\n[Tool uses: fs_write]", + "\n[Tool uses: check_repository]", + "Negative years also rejected. Let me revert the file:\n[Tool uses: fs_write]", + "So to answer your question: no, I didn't try it — I should have. Now that I have, both `@t[=331 BCE]` and `@t[=-330]` (astronomical year numbering) are rejected as malformed. Factbase's temporal tag parser currently only accepts positive years.\n\nThis is genuinely a missing feature for a history-focused knowledge base. Let me file that as a feature request:\n[Tool uses: execute_bash]", + "Filed as task #76. \n\nSo the bottom line: you had the right instinct, and I should have tested it instead of assuming. Both `@t[=331 BCE]` and `@t[=-330]` are explicitly rejected by the parser — it's a real gap in factbase, not just a documentation omission. Until that feature ships, the BCE dates will have to stay as plain text in the documents.\n[Tool uses: none]", + "> /mcp", + "> it looks like factbase was updated. can you retry your tests?", + "\n\nLet me rerun the same tests:\n[Tool uses: fs_write]", + "\n[Tool uses: check_repository]", + "\n[Tool uses: check_repository]", + "MCP server seems to be restarting. Let me give it a moment.\n[Tool uses: execute_bash]", + "\n[Tool uses: check_repository]", + "\n[Tool uses: execute_bash]", + "\n[Tool uses: check_repository]", + "\n[Tool uses: scan_repository]", + "The factbase MCP server isn't responding yet — getting \"Transport closed\" on every call. It may still be in the middle of updating. Want me to keep retrying, or let me know when you think it's back up?\n[Tool uses: none]", + "> /mcp restart", + "> /mcp list", + "> /mcp list", + "> /save test", + "> /chat save test" + ], + "tools": { + "memory": [ + { + "ToolSpecification": { + "name": "search_nodes", + "description": "Search for nodes in the knowledge graph based on a query", + "input_schema": { + "json": { + "type": "object", + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "query": { + "description": "The search query to match against entity names, types, and observation content", + "type": "string" + } + }, + "required": [ + "query" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "add_observations", + "description": "Add new observations to existing entities in the knowledge graph", + "input_schema": { + "json": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "observations": { + "type": "array", + "items": { + "required": [ + "entityName", + "contents" + ], + "type": "object", + "properties": { + "entityName": { + "description": "The name of the entity to add the observations to", + "type": "string" + }, + "contents": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of observation contents to add" + } + } + } + } + }, + "required": [ + "observations" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "delete_observations", + "description": "Delete specific observations from entities in the knowledge graph", + "input_schema": { + "json": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "required": [ + "deletions" + ], + "properties": { + "deletions": { + "items": { + "properties": { + "observations": { + "type": "array", + "description": "An array of observations to delete", + "items": { + "type": "string" + } + }, + "entityName": { + "description": "The name of the entity containing the observations", + "type": "string" + } + }, + "type": "object", + "required": [ + "entityName", + "observations" + ] + }, + "type": "array" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "read_graph", + "description": "Read the entire knowledge graph", + "input_schema": { + "json": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": {} + } + } + } + }, + { + "ToolSpecification": { + "name": "create_relations", + "description": "Create multiple new relations between entities in the knowledge graph. Relations should be in active voice", + "input_schema": { + "json": { + "required": [ + "relations" + ], + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "relations": { + "items": { + "type": "object", + "required": [ + "from", + "to", + "relationType" + ], + "properties": { + "to": { + "description": "The name of the entity where the relation ends", + "type": "string" + }, + "from": { + "description": "The name of the entity where the relation starts", + "type": "string" + }, + "relationType": { + "description": "The type of the relation", + "type": "string" + } + } + }, + "type": "array" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "open_nodes", + "description": "Open specific nodes in the knowledge graph by their names", + "input_schema": { + "json": { + "properties": { + "names": { + "items": { + "type": "string" + }, + "type": "array", + "description": "An array of entity names to retrieve" + } + }, + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [ + "names" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "delete_relations", + "description": "Delete multiple relations from the knowledge graph", + "input_schema": { + "json": { + "$schema": "http://json-schema.org/draft-07/schema#", + "required": [ + "relations" + ], + "type": "object", + "properties": { + "relations": { + "items": { + "properties": { + "relationType": { + "description": "The type of the relation", + "type": "string" + }, + "to": { + "description": "The name of the entity where the relation ends", + "type": "string" + }, + "from": { + "type": "string", + "description": "The name of the entity where the relation starts" + } + }, + "required": [ + "from", + "to", + "relationType" + ], + "type": "object" + }, + "type": "array", + "description": "An array of relations to delete" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "delete_entities", + "description": "Delete multiple entities and their associated relations from the knowledge graph", + "input_schema": { + "json": { + "type": "object", + "required": [ + "entityNames" + ], + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "entityNames": { + "items": { + "type": "string" + }, + "type": "array", + "description": "An array of entity names to delete" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "create_entities", + "description": "Create multiple new entities in the knowledge graph", + "input_schema": { + "json": { + "required": [ + "entities" + ], + "type": "object", + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "entities": { + "type": "array", + "items": { + "type": "object", + "required": [ + "name", + "entityType", + "observations" + ], + "properties": { + "name": { + "description": "The name of the entity", + "type": "string" + }, + "entityType": { + "type": "string", + "description": "The type of the entity" + }, + "observations": { + "items": { + "type": "string" + }, + "type": "array", + "description": "An array of observation contents associated with the entity" + } + } + } + } + } + } + } + } + } + ], + "native___": [ + { + "ToolSpecification": { + "name": "knowledge", + "description": "A tool for indexing and searching content across chat sessions using semantic search.\n\n## Overview\nThis tool enables persistent storage and retrieval of information using semantic search (MiniLLM) or keyword search (BM25). Content remains available across sessions for later use.\n\n## When to use\n- When users ask to query your knowledge bases or kbs\n- When you need to search previously indexed content\n- When users request to index new content (code, markdown, CSV, PDF, and other text file formats)\n- When exploring unfamiliar content to find relevant information\n- When users ask about topics that might be in indexed knowledge bases\n\n## When not to use\n- When content has not been indexed yet and user hasn't requested indexing\n- When you need real-time or external information not in the knowledge base\n\n## Notes\n- Use 'show' command to list available knowledge bases before searching\n- Search can target specific knowledge bases (context_id) or all knowledge bases\n- Use default limit values unless specifically needed; fewer results for focused search\n- Pagination available via offset parameter for large result sets\n- 'add' command indexes new content; 'update' command refreshes existing knowledge bases\n- Unless there is a clear reason to modify the search query, use the user's original wording for better semantic matching", + "input_schema": { + "json": { + "type": "object", + "required": [ + "command" + ], + "properties": { + "context_id": { + "type": "string", + "description": "The unique context identifier for targeted operations. Can be obtained from 'show' command. Used for 'remove', 'update', and 'search' operations to specify which context to operate on." + }, + "command": { + "enum": [ + "show", + "add", + "remove", + "clear", + "search", + "update", + "status", + "cancel" + ], + "description": "The knowledge operation to perform:\n- 'show': List all knowledge contexts (no additional parameters required)\n- 'add': Add content to knowledge base (requires 'name' and 'value')\n- 'remove': Remove content from knowledge base (requires one of: 'name', 'context_id', or 'path')\n- 'clear': Remove all knowledge contexts.\n- 'search': Search across knowledge contexts (requires 'query', optional: 'context_id', 'limit', 'offset', 'snippet_length', 'sort_by', 'file_type')\n- 'update': Update existing context with new content (requires 'path' and one of: 'name', 'context_id')\n- 'status': Show background operation status and progress\n- 'cancel': Cancel background operations (optional 'operation_id' to cancel specific operation, or cancel all if not provided)", + "type": "string" + }, + "name": { + "type": "string", + "description": "A descriptive name for the knowledge context. Required for 'add' operations. Can be used for 'remove' and 'update' operations to identify the context." + }, + "value": { + "type": "string", + "description": "The content to store in knowledge base. Required for 'add' operations. Can be either text content or a file/directory path. If it's a valid file or directory path, the content will be indexed; otherwise it's treated as text." + }, + "operation_id": { + "description": "Optional operation ID to cancel a specific operation. Used with 'cancel' command. If not provided, all active operations will be cancelled. Can be either the full operation ID or the short 8-character ID.", + "type": "string" + }, + "query": { + "description": "The search query string. Required for 'search' operations. Performs semantic search across knowledge contexts to find relevant content.", + "type": "string" + }, + "sort_by": { + "type": "string", + "enum": [ + "relevance", + "path", + "name" + ], + "description": "Sort order for search results. Options: 'relevance' (default, by similarity score), 'path' or 'name' (alphabetically by file path). Optional for 'search' operations." + }, + "file_type": { + "description": "Filter results by file type (e.g., 'Code', 'Markdown', 'Text'). Optional for 'search' operations.", + "type": "string" + }, + "offset": { + "type": "integer", + "description": "Number of results to skip for pagination. Optional for 'search' operations." + }, + "limit": { + "type": "integer", + "description": "Maximum number of search results to return, use default value unless required more results or focused search. Optional for 'search' operations." + }, + "path": { + "description": "File or directory path. Used in 'remove' operations to remove contexts by their source path, and required for 'update' operations to specify the new content location.", + "type": "string" + }, + "snippet_length": { + "description": "Maximum character length for text snippets in results. Text longer than this will be truncated. Optional for 'search' operations.", + "type": "integer" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "use_aws", + "description": "Make an AWS CLI api call with the specified service, operation, and parameters. All arguments MUST conform to the AWS CLI specification. Should the output of the invocation indicate a malformed command, invoke help to obtain the the correct command.", + "input_schema": { + "json": { + "required": [ + "region", + "service_name", + "operation_name", + "label" + ], + "type": "object", + "properties": { + "positional_args": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Positional arguments for high-level commands (e.g., s3 cp, s3 mv, s3 sync, s3 rm). These are passed directly without -- prefix. Use this for source/destination paths in S3 commands." + }, + "operation_name": { + "type": "string", + "description": "The name of the operation to perform." + }, + "profile_name": { + "description": "Optional: AWS profile name to use from ~/.aws/credentials. Defaults to default profile if not specified.", + "type": "string" + }, + "region": { + "type": "string", + "description": "Region name for calling the operation on AWS." + }, + "label": { + "type": "string", + "description": "Human readable description of the api that is being called." + }, + "parameters": { + "description": "The parameters for the operation. The parameter keys MUST conform to the AWS CLI specification. You should prefer to use JSON Syntax over shorthand syntax wherever possible. For parameters that are booleans, prioritize using flags with no value. Denote these flags with flag names as key and an empty string as their value. You should also prefer kebab case.", + "type": "object" + }, + "service_name": { + "pattern": "^[^-].*", + "description": "The name of the AWS service. If you want to query s3, you should use s3api if possible. Must not start with a dash (-).", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "grep", + "description": "Fast text pattern search in files using regex. ALWAYS use this tool instead of 'grep', 'rg', or 'ag' commands in bash. Respects .gitignore.\n\n## Text Discovery Only\nUse grep for literal text/pattern matching: error messages, TODOs, config values, regex patterns.\n\n## For Semantic Code Understanding → Use 'code' tool if available\n- Finding symbol definitions or usages → code tool (search_symbols, goto_definition, find_references)\n- Understanding code structure/relationships → code tool\n- Distinguishing definition vs call vs import → code tool\n\n## Fallback\nIf the 'code' tool is available but returns insufficient symbol info, use grep to discover candidate files/lines, then return to 'code' for precise navigation.\n\nWhen you use this tool, prefer to show the user a small list of representative matches (including file paths and line numbers) instead of only giving a high-level summary.", + "input_schema": { + "json": { + "required": [ + "pattern" + ], + "type": "object", + "properties": { + "include": { + "type": "string", + "description": "File filter glob. Examples: \"*.rs\", \"*.{ts,tsx}\", \"*.py\"" + }, + "max_matches_per_file": { + "type": "integer", + "description": "Max matches returned per file (output limit). Increase to see all occurrences in a file." + }, + "max_files": { + "description": "Max number of files returned (output limit). Increase for comprehensive codebase searches.", + "type": "integer" + }, + "max_total_lines": { + "description": "Max total matched lines returned across all files (output limit). Increase when searching for many occurrences.", + "type": "integer" + }, + "max_depth": { + "description": "Max directory depth to traverse when searching (search limit). Increase for deeply nested structures.", + "type": "integer" + }, + "pattern": { + "type": "string", + "description": "Regex pattern to search for. Examples: \"fn main\", \"class.*Component\", \"TODO|FIXME\". Start with simple patterns first (e.g. just the word you're looking for), then refine if needed." + }, + "output_mode": { + "description": "Output format: 'content' returns matches as 'file:line:content' (default, best for seeing actual matches), 'files_with_matches' returns only file paths, 'count' returns match counts per file.", + "type": "string", + "enum": [ + "content", + "files_with_matches", + "count" + ] + }, + "case_sensitive": { + "description": "Case-sensitive search. Defaults to false (case-insensitive).", + "type": "boolean" + }, + "path": { + "type": "string", + "description": "Directory to search from. Defaults to current working directory." + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "code", + "description": "Code intelligence to analyze code with AST parsing and fuzzy search. Language auto-detected from file extension.\n\nIMPORTANT: Prefer this tool over fs_read for code files. This tool intelligently provides structured code analysis.\n\nCORE FEATURES:\n• Fuzzy search for symbols (classes, functions, methods)\n• Extracts function/class signatures via AST\n• Structural AST search and rewrite (ast-grep)\n• Codebase overview and directory exploration\n\nNOTE: Use fs_read with line ranges for unsupported patterns.\n\n## Operations\n\n**search_symbols** - Find symbol definitions by name across workspace.\nParams: symbol_name (required), path, symbol_type, limit, language, exact_match\nUses fuzzy matching by default. Set exact_match=true for precise matching.\n\n**lookup_symbols** - Batch lookup specific symbols (max 10).\nParams: symbols (required), file_path, include_source\nSet include_source=false for large classes/structs to avoid context overflow.\nScoped lookup: Provide file_path to search within specific file only.\n\n**get_document_symbols** - List all symbols in a file.\nParams: file_path (required), top_level_only (recommended: true)\nUse this for understanding file structure without reading content.\nPrefer this over fs_read when you need symbol information.\n\n**pattern_search** - AST-based structural search using ast-grep.\nParams: pattern, language (required), file_path, limit\n\n**pattern_rewrite** - AST-based code transformation.\nParams: pattern, replacement, language (required), file_path, limit, dry_run\nUse dry_run=true first to preview changes.\n\n## Pattern Search & Rewrite\n\nMetavariables:\n• $VAR - Matches single node (identifier, expression)\n• $$$ - Matches zero or more nodes (statements, parameters)\n\nSimple patterns:\n• console.log($ARG) - Match any console.log call\n• function $NAME($$$PARAMS) {} - Match function declaration\n• $OBJ.$METHOD() - Match any method call\n\nStructural rules (YAML):\n• pattern - Match code structure\n• kind - Match AST node type (function_declaration, class_declaration)\n• has - Node contains descendant matching pattern\n• inside - Node is inside ancestor matching pattern\n• all/any/not - Logical operators\n\nCritical: For relational rules (has, inside), always use stopBy: end\n\nRewrite examples:\n• pattern='var $N = $V', replacement='const $N = $V'\n• pattern='$O.hasOwnProperty($P)', replacement='Object.hasOwn($O, $P)'\n\nWorkflow:\n1. Use pattern_search first to verify matches\n2. Review matches to ensure correctness\n3. Test rewrite on small subset\n4. Apply to full codebase after verification\n\n**generate_codebase_overview** - ONLY for explicit architecture questions. Not for bug fixes or finding code.\nParams: path (optional)\n\n**search_codebase_map** - Focused directory exploration.\nParams: file_path, path\n\n## Explore Unfamiliar Code\n1. search_symbols for domain-specific types/functions/methods/classes\n2. lookup_symbols with include_source=true on promising matches\n3. grep (max 2 searches) for literal text patterns\n4. Repeat 1-3 with refined terms if needed\n5. generate_codebase_overview ONLY for architecture review or full codebase understanding\n - NOT for bug fixes, feature work, or finding specific code\n\n## Tool Selection Priority\n1. search_symbols or lookup_symbols for finding code - ALWAYS use for functions/methods/classes/structs/interfaces\n2. get_document_symbols for file structure\n3. grep - ONLY for literal text in comments/strings, config values, code\n4. fs_read - raw file content when needed\n\n## CRITICAL RULES\n- Start with search_symbols\n- Always follow search_symbols with lookup_symbols\n- When searching for multiple related symbols, call search_symbols in parallel\n\n## Quick Reference\n• \"What's in this file?\" → get_document_symbols\n• \"Show me X class\" → search_symbols, then lookup_symbol\n\n## LSP Operations (Not Available)\nThese require LSP initialization (/code init):\nfind_references, goto_definition, get_hover, get_completions, get_diagnostics, rename_symbol", + "input_schema": { + "json": { + "required": [ + "operation" + ], + "properties": { + "file_path": { + "description": "File path (required for get_document_symbols, optional for pattern_search/search_codebase_map)", + "type": "string" + }, + "language": { + "description": "Programming language (required for pattern_search, optional for search_symbols)", + "type": "string" + }, + "operation": { + "description": "The code intelligence operation to perform", + "enum": [ + "search_symbols", + "lookup_symbols", + "get_document_symbols", + "pattern_search", + "generate_codebase_overview", + "search_codebase_map", + "pattern_rewrite" + ], + "type": "string" + }, + "limit": { + "description": "Maximum results (optional for search_symbols/pattern_search)", + "type": "integer" + }, + "symbols": { + "items": { + "type": "string" + }, + "type": "array", + "description": "List of simple symbol names, not qualified (e.g. ['myFunction'] not ['MyClass.myFunction']). Required for lookup_symbols, max 10" + }, + "include_source": { + "description": "Include source code in results (optional for lookup_symbols)", + "type": "boolean" + }, + "symbol_name": { + "description": "Simple symbol name, not qualified (e.g. 'myFunction' not 'MyClass.myFunction'). Required for search_symbols", + "type": "string" + }, + "path": { + "type": "string", + "description": "Directory path (optional, for generate_codebase_overview: workspace root, for search_codebase_map: path filter, for search_symbols: scope search to file or directory)" + }, + "pattern": { + "type": "string", + "description": "AST pattern (required for pattern_search)" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "web_fetch", + "description": "Fetch and extract content from a specific URL. Supports three modes: 'selective' (default, extracts relevant sections around search terms), 'truncated' (first 8000 chars), 'full' (complete content). Use 'selective' mode to read specific parts of a page multiple times without filling context. Provide 'search_terms' in selective mode to find relevant sections (e.g., 'pricing', 'installation').", + "input_schema": { + "json": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "URL to fetch content from" + }, + "mode": { + "enum": [ + "selective", + "truncated", + "full" + ], + "type": "string", + "description": "Extraction mode: 'selective' for smart extraction (default), 'truncated' for first 8000 chars, 'full' for complete content" + }, + "search_terms": { + "type": "string", + "description": "Optional: Keywords to find in selective mode (e.g., 'pricing cost', 'installation setup'). Returns ~10 lines before and after matches. If not provided, returns beginning of page." + } + }, + "required": [ + "url" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "execute_bash", + "description": "Execute the specified bash command.", + "input_schema": { + "json": { + "type": "object", + "required": [ + "command" + ], + "properties": { + "summary": { + "type": "string", + "description": "A brief explanation of what the command does" + }, + "command": { + "description": "Bash command to execute", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "glob", + "description": "Find files and directories whose paths match a glob pattern. Respects .gitignore. Prefer this over the bash 'find' command for listing or discovering paths. Returns JSON with totalFiles (count found), truncated (true if limited), and filePaths array. When truncated is true, just mention results are truncated, don't state the limit number.", + "input_schema": { + "json": { + "type": "object", + "required": [ + "pattern" + ], + "properties": { + "limit": { + "type": "integer", + "description": "Maximum files to return. If totalFiles exceeds this, truncated will be true." + }, + "pattern": { + "type": "string", + "description": "Glob pattern, e.g. \"**/*.rs\", \"src/**/*.{ts,tsx}\" or \"**/test*\"." + }, + "max_depth": { + "type": "integer", + "description": "Maximum directory depth to traverse. Increase for deep nested structures." + }, + "path": { + "description": "Root directory to search from. Only set this when the user explicitly mentions a directory path. In all other cases, omit this so the tool searches from the current working directory (the project root).", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "introspect", + "description": "Use ONLY when the user is asking about this chat application's own features, slash commands, settings, or capabilities. Do NOT use for general coding questions, AWS help, or tasks the user wants you to perform. When mentioning commands in your response, always prefix them with '/' (e.g., '/save', '/load', '/context'). CRITICAL: Only provide information explicitly documented. If details about any tool, feature, or command are not documented, clearly state the information is not available rather than generating assumptions.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "doc_path": { + "description": "Path to a specific doc to retrieve (e.g., \"features/tangent-mode.md\"). Use this to get full content of a doc from the index.", + "type": "string" + }, + "query": { + "type": "string", + "description": "The user's question about this assistant's usage, features, or capabilities" + } + }, + "required": [] + } + } + } + }, + { + "ToolSpecification": { + "name": "dummy", + "description": "This is a dummy tool. If you are seeing this that means the tool associated with this tool call is not in the list of available tools. This could be because a wrong tool name was supplied or the list of tools has changed since the conversation has started. Do not show this when user asks you to list tools.", + "input_schema": { + "json": { + "type": "object", + "properties": {}, + "required": [] + } + } + } + }, + { + "ToolSpecification": { + "name": "web_search", + "description": "WebSearch looks up information that is outside the model's training data or cannot be reliably inferred from the current codebase/context.\nTool performs basic compliance wrt content licensing and restriction.\nAs an agent you are responsible for adhering to compliance and attribution requirements.\nIMPORTANT: The snippets often contain enough information to answer questions - only use web_fetch if you need more detailed content from a specific webpage.\n\n## When to Use\n- When the user asks for current or up-to-date information (e.g., pricing, versions, technical specs) or explicitly requests a web search.\n- When verifying information that may have changed recently, or when the user provides a specific URL to inspect.\n\n## When NOT to Use\n- When the question involves basic concepts, historical facts, or well-established programming syntax/technical documentation.\n- When the topic does not require current or evolving information.\n\nFor any code-related tasks, follow this order:\n1. Search within the repository (if tools are available) and check if it can be inferred from existing code or documentation.\n2. Use this tool only if still unresolved and the library/data is likely new/unseen.\n\n## Content Compliance Requirements\nYou MUST adhere to strict licensing restrictions and attribution requirements when using search results:\n\n### Attribution Requirements\n- ALWAYS provide inline links to original sources using format: [description](url)\n- If not possible to provide inline link, add sources at the end of file\n- Ensure attribution is visible and accessible\n\n### Verbatim Reproduction Limits\n- NEVER reproduce more than 30 consecutive words from any single source\n- Track word count per source to ensure compliance\n- Always paraphrase and summarize rather than quote directly\n- Add compliance note when the content from the source is rephrased: \"Content was rephrased for compliance with licensing restrictions\"\n\n### Content Modification Guidelines\n- You MAY paraphrase, summarize, and reformat content\n- You MUST NOT materially change the underlying substance or meaning\n- Preserve factual accuracy while condensing information\n- Avoid altering core arguments, data, or conclusions\n\n## Usage Details\n- You may rephrase user queries to improve search effectiveness\n- You can make multiple queries to gather comprehensive information\n- Consider breaking complex questions into focused searches\n- Refine queries based on initial results if needed\n\n## Output Usage\n- Prioritize latest published sources based on publishedDate\n- Prefer official documentation to blogs and news posts\n- Use domain information to assess source authority and reliability\n\n## Error Handling\n- If unable to comply with content restrictions, explain limitations to user\n- Suggest alternative approaches when content cannot be reproduced\n- Prioritize compliance over completeness when conflicts arise\n\n## Output\nThe tool returns a JSON object with a \"results\" array containing search results:\n\n{\n \"results\": [\n {\n \"title\": \"Example Page Title\",\n \"url\": \"https://example.com/page\",\n \"snippet\": \"Brief excerpt from the page...\",\n \"publishedDate\": \"2025-11-20T10:30:00Z\",\n \"domain\": \"example.com\",\n \"id\": \"unique-id-123\",\n \"maxVerbatimWordLimit\": 30,\n \"publicDomain\": false\n }\n ]\n}\n\n## UI FROM LLM (You) back to the user\nCRITICAL: Always start your response with \"Here's what I found:\" and then start from a newline.\nALWAYS end your response with a blank line followed by 'References:' and list the sources you used in sequential order [1], [2], [3], etc. with NO gaps in numbering. Format: '[N] Title - URL' one per line. Truncate long titles to 80 characters and long URLs to 100 characters, adding '...' if truncated.", + "input_schema": { + "json": { + "properties": { + "query": { + "description": "Search query - can be keywords, questions, or specific topics", + "type": "string" + } + }, + "required": [ + "query" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "report_issue", + "description": "Opens the browser to a pre-filled gh (GitHub) issue template to report chat issues, bugs, or feature requests. Pre-filled information includes the conversation transcript, chat context, and chat request IDs from the service.", + "input_schema": { + "json": { + "required": [ + "title" + ], + "properties": { + "title": { + "description": "The title of the GitHub issue.", + "type": "string" + }, + "expected_behavior": { + "description": "Optional: The expected chat behavior or action that did not happen.", + "type": "string" + }, + "actual_behavior": { + "type": "string", + "description": "Optional: The actual chat behavior that happened and demonstrates the issue or lack of a feature." + }, + "steps_to_reproduce": { + "description": "Optional: Previous user chat requests or steps that were taken that may have resulted in the issue or error response.", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "thinking", + "description": "Thinking is an internal reasoning mechanism improving the quality of complex tasks by breaking their atomic actions down; use it specifically for multi-step problems requiring step-by-step dependencies, reasoning through multiple constraints, synthesizing results from previous tool calls, planning intricate sequences of actions, troubleshooting complex errors, or making decisions involving multiple trade-offs. Avoid using it for straightforward tasks, basic information retrieval, summaries, always clearly define the reasoning challenge, structure thoughts explicitly, consider multiple perspectives, and summarize key insights before important decisions or complex tool interactions.", + "input_schema": { + "json": { + "type": "object", + "required": [ + "thought" + ], + "properties": { + "thought": { + "description": "A reflective note or intermediate reasoning step such as \"The user needs to prepare their application for production. I need to complete three major asks including 1: building their code from source, 2: bundling their release artifacts together, and 3: signing the application bundle.", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "fs_write", + "description": "A tool for creating and editing files\n * The `create` command will override the file at `path` if it already exists as a file, and otherwise create a new file\n * The `append` command will add content to the end of an existing file, automatically adding a newline if the file doesn't end with one. The file must exist.\n Notes for using the `str_replace` command:\n * The `old_str` parameter should match EXACTLY one or more consecutive lines from the original file. Be mindful of whitespaces!\n * If the `old_str` parameter is not unique in the file, the replacement will not be performed. Make sure to include enough context in `old_str` to make it unique\n * The `new_str` parameter should contain the edited lines that should replace the `old_str`.", + "input_schema": { + "json": { + "required": [ + "command", + "path" + ], + "properties": { + "new_str": { + "type": "string", + "description": "Required parameter of `str_replace` command containing the new string. Required parameter of `insert` command containing the string to insert. Required parameter of `append` command containing the content to append to the file." + }, + "summary": { + "type": "string", + "description": "A brief explanation of what the file change does or why it's being made." + }, + "path": { + "type": "string", + "description": "Absolute path to file or directory, e.g. `/repo/file.py` or `/repo`." + }, + "old_str": { + "description": "Required parameter of `str_replace` command containing the string in `path` to replace.", + "type": "string" + }, + "command": { + "type": "string", + "enum": [ + "create", + "str_replace", + "insert", + "append" + ], + "description": "The commands to run. Allowed options are: `create`, `str_replace`, `insert`, `append`." + }, + "file_text": { + "description": "Required parameter of `create` command, with the content of the file to be created.", + "type": "string" + }, + "insert_line": { + "type": "integer", + "description": "Required parameter of `insert` command. The `new_str` will be inserted AFTER the line `insert_line` of `path`." + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "use_subagent", + "description": "⚠️ CRITICAL DELEGATION TOOL ⚠️\n\n🔍 BEFORE attempting ANY task, CHECK if you have the required tools in YOUR current tool list.\n\n❌ If you DON'T have the necessary tools → YOU MUST use this tool to delegate to a subagent that does.\n✅ If you DO have the tools → Handle the task yourself.\n\n## When to Use (MANDATORY scenarios):\n\n1. **MISSING TOOLS**: The user asks you to do something but you don't see the required tool in your available tools list\n - Example: User asks to read a file, but you don't have 'fs_read' → USE THIS TOOL\n - Example: User asks to search code, but you don't have 'code' tool → USE THIS TOOL\n - Example: User asks to run bash command, but you don't have 'execute_bash' → USE THIS TOOL\n\n2. **PARALLEL PROCESSING**: A complex task can be split into independent subtasks that different specialized agents can handle simultaneously\n\n3. **CAPABILITY CHECK**: Use ListAgents command first to see what specialized agents and their toolsets are available\n\n## How Subagents Are Different:\n- Subagents have DIFFERENT, SPECIALIZED toolsets than you\n- Each subagent may have tools you don't have access to\n- They operate independently with their own context\n- Up to 4 subagents can work in parallel\n\n## Decision Flow:\n```\nUser makes request → Check YOUR tools list → Missing required tool? → USE use_subagent\n → Have required tool? → Handle it yourself\n```\n\n⚡ Remember: Don't apologize about lacking tools - just delegate to a subagent that has them! Also note that subagents that are spawned together could not communicate with each other. If they are to perform tasks that are dependent on each other. Spawn them with a different tool call!", + "input_schema": { + "json": { + "type": "object", + "properties": { + "content": { + "description": "Required for `InvokeSubagents` command. Contains subagents array and optional conversation ID.", + "properties": { + "subagents": { + "items": { + "required": [ + "query" + ], + "properties": { + "query": { + "description": "The query or task to be handled by the subagent", + "type": "string" + }, + "agent_name": { + "type": "string", + "description": "Optional name of the specific agent to use. If not provided, uses the default agent" + }, + "relevant_context": { + "description": "Optional additional context that should be provided to the subagent to help it understand the task better", + "type": "string" + } + }, + "type": "object" + }, + "description": "Array of subagent invocations to execute in parallel. Each invocation specifies a query, optional agent name, and optional context.", + "type": "array" + } + }, + "required": [ + "subagents" + ], + "type": "object" + }, + "command": { + "type": "string", + "enum": [ + "ListAgents", + "InvokeSubagents" + ], + "description": "The commands to run. Allowed options are `ListAgents` to query available agents, or `InvokeSubagents` to invoke one or more subagents" + } + }, + "required": [ + "command" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "fs_read", + "description": "Tool for reading files, directories and images. Always provide an 'operations' array.\n\nFor single operation: provide array with one element.\nFor batch operations: provide array with multiple elements.\n\nAvailable modes:\n- Line: Read lines from a file\n- Directory: List directory contents\n- Search: Search for patterns in files\n- Image: Read and process images\n\nExamples:\n1. Single: {\"operations\": [{\"mode\": \"Line\", \"path\": \"/file.txt\"}]}\n2. Batch: {\"operations\": [{\"mode\": \"Line\", \"path\": \"/file1.txt\"}, {\"mode\": \"Search\", \"path\": \"/file2.txt\", \"pattern\": \"test\"}]}", + "input_schema": { + "json": { + "properties": { + "summary": { + "type": "string", + "description": "Optional description of the purpose of this batch operation (mainly useful for multiple operations)" + }, + "operations": { + "minItems": 1, + "type": "array", + "description": "Array of operations to execute. Provide one element for single operation, multiple for batch.", + "items": { + "required": [ + "mode" + ], + "type": "object", + "properties": { + "mode": { + "enum": [ + "Line", + "Directory", + "Search", + "Image" + ], + "description": "The operation mode to run in: `Line`, `Directory`, `Search`. `Line` and `Search` are only for text files, and `Directory` is only for directories. `Image` is for image files, in this mode `image_paths` is required.", + "type": "string" + }, + "path": { + "type": "string", + "description": "Path to the file or directory. The path should be absolute, or otherwise start with ~ for the user's home (required for Line, Directory, Search modes)." + }, + "offset": { + "default": 0, + "type": "integer", + "description": "Number of entries to skip for pagination (optional, for Directory mode). Use with max_entries to iterate through large directories. Entries are sorted by last modified time (most recent first). Default: 0" + }, + "context_lines": { + "description": "Number of context lines around search results (optional, for Search mode)", + "default": 2, + "type": "integer" + }, + "max_entries": { + "default": 1000, + "type": "integer", + "description": "Maximum number of entries to return (optional, for Directory mode). When limit is reached, results are truncated and metadata shows 'showing X of Y entries'. Use to prevent context window overflow. Default: 1000" + }, + "pattern": { + "description": "Pattern to search for (required, for Search mode). Case insensitive. The pattern matching is performed per line.", + "type": "string" + }, + "image_paths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "List of paths to the images. This is currently supported by the Image mode." + }, + "start_line": { + "type": "integer", + "description": "Starting line number (optional, for Line mode). A negative index represents a line number starting from the end of the file.", + "default": 1 + }, + "end_line": { + "type": "integer", + "description": "Ending line number (optional, for Line mode). A negative index represents a line number starting from the end of the file.", + "default": -1 + }, + "depth": { + "default": 0, + "type": "integer", + "description": "Depth of a recursive directory listing (optional, for Directory mode)" + }, + "exclude_patterns": { + "default": [ + "node_modules", + ".git", + "dist", + "build", + "out", + ".cache", + "target" + ], + "description": "Glob patterns to exclude from directory listing (optional, for Directory mode). If omitted, uses defaults. If empty array [] is provided, no exclusions are applied (shows everything). If patterns are provided, they completely override the defaults. Examples: '**/target/**', '*.log'", + "items": { + "type": "string" + }, + "type": "array" + } + } + } + } + }, + "type": "object", + "required": [ + "operations" + ] + } + } + } + } + ], + "search-vault": [ + { + "ToolSpecification": { + "name": "get_recent_messages", + "description": "Get recent messages/content from a channel or source within the last N days.\n\nWorks with any indexed source:\n- Slack channels: Returns messages with thread_ts for threaded conversations\n- Email folders: Returns emails with subject, sender, and body\n- Quip documents: Returns document content and updates\n- Local files: Returns file content indexed from the filesystem\n\nOutput includes thread_ts field for messages with replies - use get_thread with this \nthread_ts value to retrieve full threaded conversations.\n\nWORKFLOW:\n1. Call get_recent_messages(channel_id=\"C0161HT147R\", days=7)\n2. Find messages with thread_ts field (indicates threaded replies)\n3. Call get_thread(channel_id=\"C0161HT147R\", thread_ts=\"1702405794.215779\") to get full thread", + "input_schema": { + "json": { + "properties": { + "offset": { + "type": "number", + "description": "Number of results to skip for pagination (default: 0)" + }, + "days": { + "description": "Number of days to look back (default: 7)", + "type": "number" + }, + "channel_id": { + "description": "The channel ID (e.g. C0161HT147R) or name", + "type": "string" + }, + "limit": { + "description": "Maximum number of messages to return (default: 50)", + "type": "number" + } + }, + "required": [ + "channel_id" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_channel_info", + "description": "Get metadata and statistics about a channel/source including message count, thread count, and latest message timestamp.\n\nWorks with any indexed source: Slack channels, email folders, Quip documents, or local file directories.", + "input_schema": { + "json": { + "properties": { + "channel_id": { + "description": "The channel ID or name to get info for", + "type": "string" + } + }, + "required": [ + "channel_id" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_thread_for_summary", + "description": "Get a thread formatted for AI summarization.\n\nReturns thread messages in a format optimized for summarization, including:\n- Participant list\n- Date range\n- Messages with user and timestamp\n- A suggested summary prompt\n\nUse this when you need to summarize a thread discussion.", + "input_schema": { + "json": { + "properties": { + "channel_id": { + "type": "string", + "description": "The channel ID or name where the thread exists" + }, + "thread_ts": { + "description": "The thread timestamp from a message's thread_ts field", + "type": "string" + }, + "max_messages": { + "description": "Maximum messages to return (default: 50)", + "type": "number" + } + }, + "type": "object", + "required": [ + "channel_id", + "thread_ts" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "list_channels", + "description": "List all available channels/sources from the local search index.\n\nThis unified index contains content from multiple sources:\n- Slack channels and direct messages\n- Outlook/Exchange emails and calendar items\n- Quip documents\n- Local files (PDFs, Word docs, text files, etc.)\n\nWARNING: Returns ALL channels which may exceed context limits.\nPREFER using search_channels with a query instead when looking for a specific channel.\nUse list_channels only when you truly need to see ALL channels.", + "input_schema": { + "json": { + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "search_channels", + "description": "Search for channels/sources by name or ID using partial matching (case-insensitive).\n\nThis searches across all indexed sources including:\n- Slack channels and direct messages\n- Outlook/Exchange email folders (Inbox, Sent Items, Archives, etc.)\n- Quip document folders\n- Local file directories\n\nWHEN TO USE THIS:\n- User mentions a channel or folder name but you don't know the exact format\n- You need to find sources matching a keyword or pattern\n- Looking for email folders like \"Inbox\" or \"2024 Archive\"\n\nEXAMPLES:\n- search_channels(query=\"general\", limit=10) → finds Slack channels with \"general\" in the name\n- search_channels(query=\"Inbox\", limit=5) → finds email inbox folders\n- search_channels(query=\"Archive\", limit=10) → finds archive folders across all sources\n\nOUTPUT: Returns matching channels/sources sorted alphabetically with ID, name, and type.", + "input_schema": { + "json": { + "properties": { + "limit": { + "description": "Maximum number of results to return (default: 20).", + "type": "number" + }, + "query": { + "description": "Search query to match against channel names (case-insensitive partial matching).", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "search_messages", + "description": "Search for messages/content containing specific text in a channel or source.\n\nSearches across all content types in the unified index:\n- Slack messages and threads\n- Email subjects, bodies, and attachments\n- Quip document content\n- Local file text content\n\nOutput includes thread_ts field for messages with replies - use get_thread with this \nthread_ts value to retrieve full threaded conversations.\n\nResults are sorted by relevance score.\n\nDATE FILTERING:\n- start_date: Only return messages on or after this date (format: YYYY-MM-DD)\n- end_date: Only return messages on or before this date (format: YYYY-MM-DD)\n\nSNIPPET MODE (snippet=true):\nWhen enabled, returns a 'snippet' field with highlighted text showing where the search \nterms matched. Matching terms are wrapped in **bold** markers. Use this to quickly see \nthe relevant portion of each message without reading the full text.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "offset": { + "type": "number", + "description": "Number of results to skip for pagination (default: 0)" + }, + "end_date": { + "description": "Filter messages on or before this date (format: YYYY-MM-DD)", + "type": "string" + }, + "query": { + "description": "Text to search for (uses match_phrase query)", + "type": "string" + }, + "channel_id": { + "description": "The channel ID or name (e.g. #python or C017J54P8H5)", + "type": "string" + }, + "snippet": { + "type": "boolean", + "description": "Return highlighted snippets showing matched terms wrapped in **bold** (default: false)" + }, + "start_date": { + "type": "string", + "description": "Filter messages on or after this date (format: YYYY-MM-DD)" + }, + "limit": { + "type": "number", + "description": "Maximum number of results (default: 20)" + } + }, + "required": [ + "channel_id", + "query" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "get_email_chain", + "description": "Get an email conversation chain for AI summarization.\n\nFinds related emails by subject (matching Re:/Fwd: patterns) and returns them\nin chronological order for summarization.\n\nReturns: Subject, participants, messages in order, attachments, summary prompt.", + "input_schema": { + "json": { + "required": [ + "subject" + ], + "properties": { + "max_messages": { + "description": "Maximum messages to return (default: 20)", + "type": "number" + }, + "subject": { + "description": "Email subject to search for (matches Re:/Fwd: variants)", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "search_all_messages", + "description": "Search for messages/content containing specific text across ALL indexed sources.\n\nThis is the primary cross-source search tool. It searches the unified index containing:\n- Slack channels and direct messages\n- Outlook/Exchange emails (inbox, sent, archives)\n- Quip documents\n- Local files (PDFs, Word docs, text files, images with OCR, etc.)\n\nSEARCH MODES:\n- mode=\"keyword\" (default): Fast BM25 text matching\n- mode=\"hybrid\": Combines keyword + semantic search (RECOMMENDED)\n- mode=\"semantic\": Pure vector similarity search\n\nFILTERS:\n- channel_filter: \"type:dm\" for DMs, \"type:channel\" for channels, or name pattern\n- item_type: \"email\" or \"appointment\"\n- Date filters: start_date, end_date, event_start_date, event_end_date (YYYY-MM-DD)\n\nOPTIONS:\n- snippet=true: Return highlighted snippets with **bold** matched terms\n- deduplicate=true (default): Remove duplicate content\n- include_facets=true: Include facet counts (keyword mode only)\n- auto_parse=true (default): Parse natural language dates and filters", + "input_schema": { + "json": { + "required": [ + "query" + ], + "properties": { + "channel_filter": { + "type": "string", + "description": "Filter: 'type:dm', 'type:channel', or name pattern" + }, + "keyword_weight": { + "description": "Weight for keyword matching in hybrid mode (0.0-1.0, default: 0.3)", + "type": "number" + }, + "deduplicate": { + "description": "Remove duplicates (default: true)", + "type": "boolean" + }, + "mode": { + "type": "string", + "description": "Search mode: 'keyword' (default), 'hybrid', or 'semantic'" + }, + "event_end_date": { + "type": "string", + "description": "Filter events starting on or before (YYYY-MM-DD)" + }, + "query": { + "type": "string", + "description": "Text to search for across all sources" + }, + "snippet": { + "description": "Return text preview (default: false)", + "type": "boolean" + }, + "end_date": { + "type": "string", + "description": "Filter on or before date (YYYY-MM-DD)" + }, + "event_start_date": { + "type": "string", + "description": "Filter events starting on or after (YYYY-MM-DD)" + }, + "semantic_weight": { + "description": "Weight for semantic matching in hybrid mode (0.0-1.0, default: 0.7)", + "type": "number" + }, + "item_type": { + "description": "Filter: 'email' or 'appointment'", + "type": "string" + }, + "auto_parse": { + "description": "Parse natural language in query (default: true)", + "type": "boolean" + }, + "include_facets": { + "description": "Include facet counts, keyword mode only (default: false)", + "type": "boolean" + }, + "start_date": { + "type": "string", + "description": "Filter on or after date (YYYY-MM-DD)" + }, + "limit": { + "description": "Maximum results (default: 20)", + "type": "number" + }, + "offset": { + "description": "Results to skip (default: 0)", + "type": "number" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_channel_activity", + "description": "Get channel activity summary for AI summarization.\n\nReturns activity metrics and messages for a channel over a time period:\n- Message and thread counts\n- Active participants\n- Activity breakdown by day\n- Top threads by reply count\n- Messages for summarization\n\nUse this to summarize what happened in a channel over a period.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "channel_id": { + "description": "The channel ID or name", + "type": "string" + }, + "days": { + "description": "Number of days to look back (default: 7)", + "type": "number" + }, + "group_by": { + "type": "string", + "description": "How to group messages: 'thread', 'day', or 'none' (default: 'none')" + }, + "max_messages": { + "description": "Maximum messages to return (default: 100)", + "type": "number" + } + }, + "required": [ + "channel_id" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "semantic_search", + "description": "Search for content using semantic similarity (AI-powered understanding of meaning).\n\nSearches across ALL indexed sources using meaning-based matching. Use this for:\n- Finding content by meaning, not just keywords\n- Exploratory search when you don't know exact terms\n- Finding related content even with different wording\n\nFILTERS: Same as search_all_messages\nNOTE: Requires embedding model configured.", + "input_schema": { + "json": { + "type": "object", + "required": [ + "query" + ], + "properties": { + "item_type": { + "description": "Filter: 'email' or 'appointment'", + "type": "string" + }, + "snippet": { + "type": "boolean", + "description": "Return text preview (default: false)" + }, + "deduplicate": { + "description": "Remove duplicates (default: true)", + "type": "boolean" + }, + "query": { + "type": "string", + "description": "Natural language query" + }, + "limit": { + "description": "Maximum results (default: 20)", + "type": "number" + }, + "start_date": { + "description": "Filter on or after date (YYYY-MM-DD)", + "type": "string" + }, + "offset": { + "description": "Results to skip (default: 0)", + "type": "number" + }, + "event_start_date": { + "type": "string", + "description": "Filter events starting on or after (YYYY-MM-DD)" + }, + "channel_filter": { + "description": "Filter: 'type:dm', 'type:channel', or name pattern", + "type": "string" + }, + "end_date": { + "description": "Filter on or before date (YYYY-MM-DD)", + "type": "string" + }, + "event_end_date": { + "description": "Filter events starting on or before (YYYY-MM-DD)", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "hybrid_search", + "description": "Search using both keyword matching AND semantic similarity combined.\n\nCombines precision of keyword search with understanding of semantic search.\nRECOMMENDED for most queries. Use keyword_weight/semantic_weight to tune.\n\nNOTE: Requires embedding model configured.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "item_type": { + "type": "string", + "description": "Filter: 'email' or 'appointment'" + }, + "event_start_date": { + "type": "string", + "description": "Filter events starting on or after (YYYY-MM-DD)" + }, + "semantic_weight": { + "description": "Weight for semantic matching (0.0-1.0, default: 0.7)", + "type": "number" + }, + "query": { + "description": "Search query text", + "type": "string" + }, + "start_date": { + "type": "string", + "description": "Filter on or after date (YYYY-MM-DD)" + }, + "event_end_date": { + "description": "Filter events starting on or before (YYYY-MM-DD)", + "type": "string" + }, + "offset": { + "description": "Results to skip (default: 0)", + "type": "number" + }, + "channel_filter": { + "description": "Filter: 'type:dm', 'type:channel', or name pattern", + "type": "string" + }, + "deduplicate": { + "type": "boolean", + "description": "Remove duplicates (default: true)" + }, + "keyword_weight": { + "type": "number", + "description": "Weight for keyword matching (0.0-1.0, default: 0.3)" + }, + "limit": { + "type": "number", + "description": "Maximum results (default: 20)" + }, + "snippet": { + "type": "boolean", + "description": "Return text preview (default: false)" + }, + "end_date": { + "type": "string", + "description": "Filter on or before date (YYYY-MM-DD)" + } + }, + "required": [ + "query" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "get_calendar", + "description": "Get calendar appointments for a specific date or date range.\n\nPRIMARY tool for viewing calendar/schedule information. Returns appointments sorted by start time.\n\nDATE PARAMETERS:\n- date: Single date (YYYY-MM-DD) - shows all appointments for that day\n- start_date/end_date: Date range for multi-day view\n\nCALENDAR FILTER:\n- \"Calendar\" (default): Main calendar only\n- \"\" (empty): All calendars including shared\n- \"Calendar\\\\PersonName\": Specific shared calendar", + "input_schema": { + "json": { + "type": "object", + "properties": { + "end_date": { + "description": "End of date range (YYYY-MM-DD)", + "type": "string" + }, + "limit": { + "description": "Maximum appointments (default: 100)", + "type": "number" + }, + "query": { + "description": "Optional text search within appointments", + "type": "string" + }, + "start_date": { + "description": "Start of date range (YYYY-MM-DD)", + "type": "string" + }, + "date": { + "description": "Single date (YYYY-MM-DD). Use this OR start_date/end_date.", + "type": "string" + }, + "calendar": { + "description": "Calendar filter: 'Calendar' (default), '' (all), or 'Calendar\\\\Name'", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "get_search_facets", + "description": "Get aggregated counts (facets) for search results to understand content distribution.\n\nUse before searching to understand what's in the index, or to help users narrow down searches.\n\nFACET TYPES: source, channel_type, item_type, date", + "input_schema": { + "json": { + "required": [ + "facets" + ], + "type": "object", + "properties": { + "item_type": { + "description": "Filter: 'email' or 'appointment'", + "type": "string" + }, + "source_type": { + "type": "string", + "description": "Filter: 'slack', 'outlook', 'localfiles'" + }, + "query": { + "description": "Optional search query to filter documents", + "type": "string" + }, + "facets": { + "description": "Comma-separated: source, channel_type, item_type, date", + "type": "string" + }, + "start_date": { + "type": "string", + "description": "Filter on or after date (YYYY-MM-DD)" + }, + "end_date": { + "description": "Filter on or before date (YYYY-MM-DD)", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "get_thread", + "description": "Get all messages from a specific thread.\n\nWORKFLOW:\n1. Call get_recent_messages(channel_id='#my-channel') \n2. In the output, find messages where thread_ts field is not empty (e.g. '1702405794.215779')\n3. Call get_thread(channel_id='#my-channel', thread_ts='1702405794.215779') to get all replies\n\nEXAMPLE: If message has thread_ts='1761832331.703299', call get_thread with that exact value.\n\nMessages are sorted by timestamp ascending (oldest first).", + "input_schema": { + "json": { + "required": [ + "channel_id", + "thread_ts" + ], + "type": "object", + "properties": { + "thread_ts": { + "type": "string", + "description": "The thread timestamp from a message's thread_ts field (e.g. 1681148419.846839)" + }, + "channel_id": { + "description": "The channel ID or name where the thread exists", + "type": "string" + } + } + } + } + } + } + ], + "strands": [ + { + "ToolSpecification": { + "name": "search_docs", + "description": "Search curated documentation and return ranked results with snippets.\n\n This tool provides access to the complete Strands Agents documentation including:\n\n **User Guide Topics:**\n - Agent concepts (agent loop, conversation management, hooks, prompts, state)\n - Model providers (Amazon Bedrock, Anthropic, Cohere, LiteLLM, LlamaAPI,\n MistralAI, Ollama, OpenAI, SageMaker, Writer, Gemini)\n - Multi-agent patterns (Agent2Agent, Agents as Tools, Graph, Swarm, Workflow)\n - Tools (Python tools, MCP tools, community tools, executors)\n - Deployment guides (EC2, EKS, Fargate, Lambda, Bedrock AgentCore)\n - Observability & evaluation (logs, metrics, traces, evaluation)\n - Safety & security (guardrails, PII redaction, responsible AI)\n\n **API Reference:**\n - Complete API documentation for Agent, Models, Tools, Handlers, etc.\n\n **Examples:**\n - Code samples and implementation examples\n\n Use this to find relevant Strands Agents documentation for any development question.\n\n Args:\n query: Search query string (e.g., \"bedrock model\", \"tell me about a2a\", \"how to use MCP tools\")\n k: Maximum number of results to return (default: 5)\n\n Returns:\n List of dictionaries containing:\n - url: Document URL\n - title: Display title\n - score: Relevance score (0-1, higher is better)\n - snippet: Contextual content preview\n\n ", + "input_schema": { + "json": { + "title": "search_docsArguments", + "required": [ + "query" + ], + "properties": { + "query": { + "title": "Query", + "type": "string" + }, + "k": { + "default": 5, + "type": "integer", + "title": "K" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "fetch_doc", + "description": "Fetch full document content by URL.\n\n Retrieves complete Strands Agents documentation content from URLs found via search_docs\n or provided directly. Use this to get full documentation pages including:\n\n - Complete user guides with code examples\n - Detailed API reference documentation\n - Step-by-step tutorials and implementation guides\n - Full deployment and configuration instructions\n - Comprehensive multi-agent pattern examples\n - Complete model provider setup guides\n\n This provides the full content when search snippets aren't sufficient for\n understanding or implementing Strands Agents features.\n\n Args:\n uri: Document URI (supports http/https URLs). If empty, returns all available URLs.\n\n Returns:\n Dictionary containing:\n - url: Canonical document URL\n - title: Document title\n - content: Full document text content\n - error: Error message (if fetch failed)\n\n Or when uri is empty:\n - urls: List of all available document URLs with titles\n\n ", + "input_schema": { + "json": { + "properties": { + "uri": { + "default": "", + "title": "Uri", + "type": "string" + } + }, + "type": "object", + "title": "fetch_docArguments" + } + } + } + } + ], + "browsermcp": [ + { + "ToolSpecification": { + "name": "browser_hover", + "description": "Hover over element on page", + "input_schema": { + "json": { + "required": [ + "element", + "ref" + ], + "properties": { + "ref": { + "description": "Exact target element reference from the page snapshot", + "type": "string" + }, + "element": { + "type": "string", + "description": "Human-readable element description used to obtain permission to interact with the element" + } + }, + "additionalProperties": false, + "type": "object", + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_snapshot", + "description": "Capture accessibility snapshot of the current page. Use this for getting references to elements to interact with.", + "input_schema": { + "json": { + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "additionalProperties": false, + "properties": {} + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_get_console_logs", + "description": "Get the console logs from the browser", + "input_schema": { + "json": { + "additionalProperties": false, + "type": "object", + "properties": {}, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_go_back", + "description": "Go back to the previous page", + "input_schema": { + "json": { + "additionalProperties": false, + "type": "object", + "properties": {}, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_type", + "description": "Type text into editable element", + "input_schema": { + "json": { + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": { + "submit": { + "type": "boolean", + "description": "Whether to submit entered text (press Enter after)" + }, + "text": { + "description": "Text to type into the element", + "type": "string" + }, + "ref": { + "type": "string", + "description": "Exact target element reference from the page snapshot" + }, + "element": { + "type": "string", + "description": "Human-readable element description used to obtain permission to interact with the element" + } + }, + "additionalProperties": false, + "type": "object", + "required": [ + "element", + "ref", + "text", + "submit" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_press_key", + "description": "Press a key on the keyboard", + "input_schema": { + "json": { + "properties": { + "key": { + "type": "string", + "description": "Name of the key to press or a character to generate, such as `ArrowLeft` or `a`" + } + }, + "type": "object", + "required": [ + "key" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_navigate", + "description": "Navigate to a URL", + "input_schema": { + "json": { + "additionalProperties": false, + "required": [ + "url" + ], + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "The URL to navigate to" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_screenshot", + "description": "Take a screenshot of the current page", + "input_schema": { + "json": { + "properties": {}, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_go_forward", + "description": "Go forward to the next page", + "input_schema": { + "json": { + "additionalProperties": false, + "type": "object", + "$schema": "http://json-schema.org/draft-07/schema#", + "properties": {} + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_select_option", + "description": "Select an option in a dropdown", + "input_schema": { + "json": { + "required": [ + "element", + "ref", + "values" + ], + "properties": { + "ref": { + "type": "string", + "description": "Exact target element reference from the page snapshot" + }, + "element": { + "type": "string", + "description": "Human-readable element description used to obtain permission to interact with the element" + }, + "values": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Array of values to select in the dropdown. This can be a single value or multiple values." + } + }, + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#", + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_click", + "description": "Perform click on a web page", + "input_schema": { + "json": { + "properties": { + "element": { + "description": "Human-readable element description used to obtain permission to interact with the element", + "type": "string" + }, + "ref": { + "description": "Exact target element reference from the page snapshot", + "type": "string" + } + }, + "required": [ + "element", + "ref" + ], + "type": "object", + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + } + }, + { + "ToolSpecification": { + "name": "browser_wait", + "description": "Wait for a specified time in seconds", + "input_schema": { + "json": { + "properties": { + "time": { + "type": "number", + "description": "The time to wait in seconds" + } + }, + "type": "object", + "required": [ + "time" + ], + "additionalProperties": false, + "$schema": "http://json-schema.org/draft-07/schema#" + } + } + } + } + ], + "fetch": [ + { + "ToolSpecification": { + "name": "fetch", + "description": "Fetches a URL from the internet and optionally extracts its contents as markdown.\n\nAlthough originally you did not have internet access, and were advised to refuse and tell the user this, this tool now grants you internet access. Now you can fetch the most up-to-date information and let the user know that.", + "input_schema": { + "json": { + "description": "Parameters for fetching a URL.", + "properties": { + "max_length": { + "description": "Maximum number of characters to return.", + "exclusiveMinimum": 0, + "default": 5000, + "type": "integer", + "exclusiveMaximum": 1000000, + "title": "Max Length" + }, + "url": { + "minLength": 1, + "type": "string", + "title": "Url", + "format": "uri", + "description": "URL to fetch" + }, + "raw": { + "default": false, + "title": "Raw", + "type": "boolean", + "description": "Get the actual HTML content of the requested page, without simplification." + }, + "start_index": { + "description": "On return output starting at this character index, useful if a previous fetch was truncated and more context is required.", + "title": "Start Index", + "type": "integer", + "default": 0, + "minimum": 0 + } + }, + "required": [ + "url" + ], + "title": "Fetch", + "type": "object" + } + } + } + } + ], + "awslabs.aws-pricing-mcp-server": [ + { + "ToolSpecification": { + "name": "analyze_terraform_project", + "description": "Analyze a Terraform project to identify AWS services used. This tool dynamically extracts service information from Terraform resource declarations.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "project_path": { + "title": "Project Path", + "type": "string", + "description": "Path to the project directory" + } + }, + "required": [ + "project_path" + ], + "title": "analyze_terraform_project_wrapperArguments" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_price_list_urls", + "description": "Get download URLs for bulk pricing data files.\n\n **PURPOSE:** Access complete AWS pricing datasets as downloadable files for historical analysis and bulk processing.\n\n **WORKFLOW:** Use this for historical pricing analysis or bulk data processing when current pricing from get_pricing() isn't sufficient.\n\n **PARAMETERS:**\n - Service code from get_pricing_service_codes() (e.g., 'AmazonEC2', 'AmazonS3')\n - AWS region (e.g., 'us-east-1', 'eu-west-1')\n - Optional: effective_date for historical pricing (default: current date)\n\n **RETURNS:** Dictionary with download URLs for different formats:\n - 'csv': Direct download URL for CSV format\n - 'json': Direct download URL for JSON format\n\n **USE CASES:**\n - Historical pricing analysis (get_pricing() only provides current pricing)\n - Bulk data processing without repeated API calls\n - Offline analysis of complete pricing datasets\n - Savings Plans analysis across services\n\n **FILE PROCESSING:**\n - CSV files: Lines 1-5 are metadata, Line 6 contains headers, Line 7+ contains pricing data\n - Use `tail -n +7 pricing.csv | grep \"t3.medium\"` to filter data\n ", + "input_schema": { + "json": { + "properties": { + "effective_date": { + "default": null, + "description": "Effective date for pricing in format \"YYYY-MM-DD HH:MM\" (default: current timestamp)", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Effective Date" + }, + "service_code": { + "type": "string", + "title": "Service Code", + "description": "AWS service code (e.g., \"AmazonEC2\", \"AmazonS3\", \"AmazonES\")" + }, + "region": { + "description": "AWS region (e.g., \"us-east-1\", \"eu-west-1\")", + "type": "string", + "title": "Region" + } + }, + "required": [ + "service_code", + "region" + ], + "type": "object", + "title": "get_price_list_urlsArguments" + } + } + } + }, + { + "ToolSpecification": { + "name": "analyze_cdk_project", + "description": "Analyze a CDK project to identify AWS services used. This tool dynamically extracts service information from CDK constructs without relying on hardcoded service mappings.", + "input_schema": { + "json": { + "title": "analyze_cdk_project_wrapperArguments", + "type": "object", + "properties": { + "project_path": { + "title": "Project Path", + "description": "Path to the project directory", + "type": "string" + } + }, + "required": [ + "project_path" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "get_pricing_attribute_values", + "description": "Get valid values for pricing filter attributes.\n\n **PURPOSE:** Discover what values are available for specific pricing filter attributes of an AWS service.\n\n **WORKFLOW:** Use this after get_pricing_service_attributes() to see valid values for each filter attribute.\n\n **PARAMETERS:**\n - Service code from get_pricing_service_codes() (e.g., 'AmazonEC2', 'AmazonRDS')\n - List of attribute names from get_pricing_service_attributes() (e.g., ['instanceType', 'location'])\n - filters (optional): Dictionary mapping attribute names to regex patterns (e.g., {'instanceType': 't3'})\n\n **RETURNS:** Dictionary mapping attribute names to their valid values. Filtered attributes return only matching values, unfiltered attributes return all values.\n\n **EXAMPLE RETURN:**\n ```\n {\n 'instanceType': ['t2.micro', 't3.medium', 'm5.large', ...],\n 'location': ['US East (N. Virginia)', 'EU (London)', ...]\n }\n ```\n\n **NEXT STEPS:** Use these values in get_pricing() filters to get specific pricing data.\n\n **ERROR HANDLING:** Uses \"all-or-nothing\" approach - if any attribute fails, the entire operation fails.\n\n **EXAMPLES:**\n - Single attribute: ['instanceType'] returns {'instanceType': ['t2.micro', 't3.medium', ...]}\n - Multiple attributes: ['instanceType', 'location'] returns both mappings\n - Partial filtering: filters={'instanceType': 't3'} applies only to instanceType, location returns all values\n ", + "input_schema": { + "json": { + "title": "get_pricing_attribute_valuesArguments", + "type": "object", + "required": [ + "service_code", + "attribute_names" + ], + "properties": { + "filters": { + "default": null, + "description": "Optional dictionary mapping attribute names to regex patterns for filtering their values (e.g., {\"instanceType\": \"t3\", \"operatingSystem\": \"Linux\"})", + "title": "Filters", + "anyOf": [ + { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + { + "type": "null" + } + ] + }, + "service_code": { + "description": "AWS service code (e.g., \"AmazonEC2\", \"AmazonS3\", \"AmazonES\")", + "type": "string", + "title": "Service Code" + }, + "attribute_names": { + "items": { + "type": "string" + }, + "title": "Attribute Names", + "type": "array", + "description": "List of attribute names (e.g., [\"instanceType\", \"location\", \"storageClass\"])" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "generate_cost_report", + "description": "Generate a detailed cost analysis report based on pricing data for one or more AWS services.\n\nThis tool requires AWS pricing data and provides options for adding detailed cost information.\n\nIMPORTANT REQUIREMENTS:\n- ALWAYS include detailed unit pricing information (e.g., \"$0.0008 per 1K input tokens\")\n- ALWAYS show calculation breakdowns (unit price × usage = total cost)\n- ALWAYS specify the pricing model (e.g., \"ON DEMAND\")\n- ALWAYS list all assumptions and exclusions explicitly\n\nOutput Format Options:\n- 'markdown' (default): Generates a well-formatted markdown report\n- 'csv': Generates a CSV format report with sections for service information, unit pricing, cost calculations, etc.\n\nExample usage:\n\n```json\n{\n // Required parameters\n \"pricing_data\": {\n // This should contain pricing data retrieved from get_pricing\n \"status\": \"success\",\n \"service_name\": \"bedrock\",\n \"data\": \"... pricing information ...\",\n \"message\": \"Retrieved pricing for bedrock from AWS Pricing url\"\n },\n \"service_name\": \"Amazon Bedrock\",\n\n // Core parameters (commonly used)\n \"related_services\": [\"Lambda\", \"S3\"],\n \"pricing_model\": \"ON DEMAND\",\n \"assumptions\": [\n \"Standard ON DEMAND pricing model\",\n \"No caching or optimization applied\",\n \"Average request size of 4KB\"\n ],\n \"exclusions\": [\n \"Data transfer costs between regions\",\n \"Custom model training costs\",\n \"Development and maintenance costs\"\n ],\n \"output_file\": \"cost_analysis_report.md\", // or \"cost_analysis_report.csv\" for CSV format\n \"format\": \"markdown\", // or \"csv\" for CSV format\n\n // Advanced parameter for complex scenarios\n \"detailed_cost_data\": {\n \"services\": {\n \"Amazon Bedrock Foundation Models\": {\n \"usage\": \"Processing 1M input tokens and 500K output tokens with Claude 3.5 Haiku\",\n \"estimated_cost\": \"$80.00\",\n \"free_tier_info\": \"No free tier for Bedrock foundation models\",\n \"unit_pricing\": {\n \"input_tokens\": \"$0.0008 per 1K tokens\",\n \"output_tokens\": \"$0.0016 per 1K tokens\"\n },\n \"usage_quantities\": {\n \"input_tokens\": \"1,000,000 tokens\",\n \"output_tokens\": \"500,000 tokens\"\n },\n \"calculation_details\": \"$0.0008/1K × 1,000K input tokens + $0.0016/1K × 500K output tokens = $80.00\"\n },\n \"AWS Lambda\": {\n \"usage\": \"6,000 requests per month with 512 MB memory\",\n \"estimated_cost\": \"$0.38\",\n \"free_tier_info\": \"First 12 months: 1M requests/month free\",\n \"unit_pricing\": {\n \"requests\": \"$0.20 per 1M requests\",\n \"compute\": \"$0.0000166667 per GB-second\"\n },\n \"usage_quantities\": {\n \"requests\": \"6,000 requests\",\n \"compute\": \"6,000 requests × 1s × 0.5GB = 3,000 GB-seconds\"\n },\n \"calculation_details\": \"$0.20/1M × 0.006M requests + $0.0000166667 × 3,000 GB-seconds = $0.38\"\n }\n }\n },\n\n // Recommendations parameter - can be provided directly or generated\n \"recommendations\": {\n \"immediate\": [\n \"Optimize prompt engineering to reduce token usage for Claude 3.5 Haiku\",\n \"Configure Knowledge Base OCUs based on actual query patterns\",\n \"Implement response caching for common queries to reduce token usage\"\n ],\n \"best_practices\": [\n \"Monitor OCU utilization metrics and adjust capacity as needed\",\n \"Use prompt caching for repeated context across API calls\",\n \"Consider provisioned throughput for predictable workloads\"\n ]\n }\n}\n```\n", + "input_schema": { + "json": { + "properties": { + "detailed_cost_data": { + "default": null, + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ], + "description": "Detailed cost information for complex scenarios", + "title": "Detailed Cost Data" + }, + "output_file": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "title": "Output File", + "description": "Path to save the report file", + "default": null + }, + "service_name": { + "title": "Service Name", + "type": "string", + "description": "Name of the AWS service" + }, + "assumptions": { + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ], + "description": "List of assumptions for cost analysis", + "default": null, + "title": "Assumptions" + }, + "related_services": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Related Services", + "description": "List of related AWS services" + }, + "pricing_data": { + "description": "Raw pricing data from AWS pricing tools", + "type": "object", + "additionalProperties": true, + "title": "Pricing Data" + }, + "pricing_model": { + "default": "ON DEMAND", + "description": "Pricing model (e.g., \"ON DEMAND\", \"Reserved\")", + "type": "string", + "title": "Pricing Model" + }, + "format": { + "description": "Output format (\"markdown\" or \"csv\")", + "type": "string", + "title": "Format", + "default": "markdown" + }, + "exclusions": { + "description": "List of items excluded from cost analysis", + "anyOf": [ + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ], + "default": null, + "title": "Exclusions" + }, + "recommendations": { + "default": null, + "title": "Recommendations", + "description": "Direct recommendations or guidance for generation", + "anyOf": [ + { + "additionalProperties": true, + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "type": "object", + "required": [ + "pricing_data", + "service_name" + ], + "title": "generate_cost_report_wrapperArguments" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_pricing_service_attributes", + "description": "Get filterable attributes available for an AWS service in the Pricing API.\n\n **PURPOSE:** Discover what pricing dimensions (filters) are available for a specific AWS service.\n\n **WORKFLOW:** Use this after get_pricing_service_codes() to see what filters you can apply to narrow down pricing queries.\n\n **PARAMETERS:**\n - service_code: AWS service code from get_pricing_service_codes() (e.g., 'AmazonEC2', 'AmazonRDS')\n - filter (optional): Case-insensitive regex pattern to filter attribute names (e.g., \"instance\" matches \"instanceType\", \"instanceFamily\")\n\n **RETURNS:** List of attribute names (e.g., 'instanceType', 'location', 'storageClass') that can be used as filters.\n\n **NEXT STEPS:**\n - Use get_pricing_attribute_values() to see valid values for each attribute\n - Use these attributes in get_pricing() filters to get specific pricing data\n\n **EXAMPLE:** For 'AmazonRDS' you might get ['engineCode', 'instanceType', 'deploymentOption', 'location'].\n ", + "input_schema": { + "json": { + "title": "get_pricing_service_attributesArguments", + "properties": { + "service_code": { + "description": "AWS service code (e.g., \"AmazonEC2\", \"AmazonS3\", \"AmazonES\")", + "type": "string", + "title": "Service Code" + }, + "filter": { + "default": null, + "description": "Optional case-insensitive regex pattern to filter service attribute names", + "title": "Filter", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "service_code" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_pricing", + "description": "\n Get detailed pricing information from AWS Price List API with optional filters.\n\n **PARAMETERS:**\n - service_code (required): AWS service code (e.g., 'AmazonEC2', 'AmazonS3', 'AmazonES')\n - region (optional): AWS region string (e.g., 'us-east-1') OR list for multi-region comparison (e.g., ['us-east-1', 'eu-west-1']). Omit for global services like DataTransfer or CloudFront that don't have region-specific pricing.\n - filters (optional): List of filter dictionaries in format {'Field': str, 'Type': str, 'Value': str}\n - max_allowed_characters (optional): Response size limit in characters (default: 100,000, use -1 for unlimited)\n - output_options (optional): OutputOptions object for response transformation and size reduction\n - max_results (optional): Maximum number of results to return per page (default: 100, min: 1, max: 100)\n - next_token (optional): Pagination token from previous response to get next page of results\n\n **MANDATORY WORKFLOW - ALWAYS FOLLOW:**\n\n **Step 1: Discover Available Options**\n ```python\n service_codes = get_pricing_service_codes() # Find correct service (skip if known)\n attributes = get_pricing_service_attributes('AmazonEC2') # Discover filterable dimensions\n attribute_values = get_pricing_attribute_values('AmazonEC2', 'memory') # Get valid values for filtering\n ```\n\n **Step 2: Build Precise Filters**\n ```python\n # Use ONLY values discovered in Step 1\n filters = [\n {\"Field\": \"memory\", \"Value\": [\"8 GiB\", \"16 GiB\", \"32 GiB\"], \"Type\": \"ANY_OF\"}, # Multiple options\n {\"Field\": \"instanceType\", \"Value\": \"m5\", \"Type\": \"CONTAINS\"}, # Pattern matching\n {\"Field\": \"instanceType\", \"Value\": [\"t2\", \"m4\"], \"Type\": \"NONE_OF\"} # Exclude older\n ]\n ```\n\n **Step 3: Execute Query**\n ```python\n pricing = get_pricing('AmazonEC2', 'us-east-1', filters)\n ```\n\n **FILTER TYPES:**\n - **EQUALS**: Exact match (default) - `{\"Field\": \"instanceType\", \"Value\": \"m5.large\"}`\n - **ANY_OF**: Multiple options - `{\"Field\": \"memory\", \"Value\": [\"8 GiB\", \"16 GiB\"], \"Type\": \"ANY_OF\"}`\n - **CONTAINS**: Pattern match - `{\"Field\": \"instanceType\", \"Value\": \"m5\", \"Type\": \"CONTAINS\"}`\n - **NONE_OF**: Exclusion - `{\"Field\": \"instanceType\", \"Value\": [\"t2\", \"m4\"], \"Type\": \"NONE_OF\"}`\n\n **CRITICAL: ANY_OF FILTER VALUE LIMITS:**\n - **1024 CHARACTER LIMIT**: Total length of all values in ANY_OF arrays cannot exceed 1024 characters\n - **PROGRESSIVE FILTERING**: Start with minimal qualifying options, expand if needed\n - **EXAMPLE VIOLATION**: `[\"8 GiB\", \"16 GiB\", \"32 GiB\", \"64 GiB\", \"96 GiB\", \"128 GiB\", ...]` (TOO LONG)\n - **CORRECT APPROACH**: `[\"8 GiB\", \"16 GiB\", \"32 GiB\", \"36 GiB\", \"48 GiB\"]` (TARGETED LIST)\n\n **COMMON USE CASES:**\n\n **COST OPTIMIZATION - EXHAUSTIVE MINIMUM-FIRST APPROACH:** When users ask for \"lowest price\", \"cheapest\", or cost optimization\n - **LOWER = CHEAPER ASSUMPTION**: For cost optimization, assume lower capabilities cost less than higher ones\n * 32 GB storage is cheaper than 300 GB storage\n * 8 GiB RAM is cheaper than 64 GiB RAM\n - **CRITICAL FOR COST QUERIES**: Start IMMEDIATELY above minimum requirement and test ALL options incrementally\n - **EXHAUSTIVE ENUMERATION REQUIRED**: Each storage/memory tier is MUTUALLY EXCLUSIVE - must list each one explicitly\n - **STOP AT REASONABLE UPPER BOUND**: For cost optimization, limit upper bound to 2-3x minimum requirement to avoid expensive options\n - **exclude_free_products**: ESSENTIAL for cost analysis - removes $0.00 reservation placeholders, SQL licensing variants, and special pricing entries that obscure actual billable instances when finding cheapest options\n - Use ANY_OF for efficient multi-option comparison in single API call\n - Multi-attribute capability filtering for minimum requirements\n - Combine CONTAINS + NONE_OF for refined discovery\n\n **OUTPUT OPTIONS (Response Size & Performance Control):**\n - **PURPOSE**: Transform and optimize API responses for ALL services, especially critical for large services (EC2, RDS)\n - **IMMEDIATE COMBINED APPROACH**: `{\"pricing_terms\": [\"OnDemand\", \"FlatRate\"], \"product_attributes\": [\"instanceType\", \"location\", \"memory\"]}`\n - **ATTRIBUTE DISCOVERY**: Use get_pricing_service_attributes() - same names for filters and output_options\n - **SIZE REDUCTION**: 80%+ reduction with combined pricing_terms + product_attributes\n - **exclude_free_products**: Remove products with $0.00 OnDemand pricing (useful when you know service has paid tiers)\n - **WHEN TO USE**: Always for large services, recommended for all services to improve performance\n\n **CRITICAL REQUIREMENTS:**\n - **NEVER GUESS VALUES**: Always use get_pricing_attribute_values() to discover valid options\n - **EXHAUSTIVE ENUMERATION**: For cost optimization, list ALL qualifying tiers individually - they are mutually exclusive\n - **USE SPECIFIC FILTERS**: Large services (EC2, RDS) require 2-3 filters minimum\n - **NEVER USE MULTIPLE CALLS**: When ANY_OF can handle it in one call\n - **VERIFY EXISTENCE**: Ensure all filter values exist in the service before querying\n - **FOR \"CHEAPEST\" QUERIES**: Focus on lower-end options that meet minimum requirements, test incrementally\n - **EXPLORE ALTERNATIVES**: When response includes \"alternatives\" field, MUST fetch their pricing if applicable to the use case before answering\n\n **CONSTRAINTS:**\n - **CURRENT PRICING ONLY**: Use get_price_list_urls for historical data\n - **NO SPOT/SAVINGS PLANS**: Only OnDemand, FlatRate, and Reserved Instance pricing available (ANY combination possible)\n - **CHARACTER LIMIT**: 100,000 characters default response limit (use output_options to reduce)\n - **REGION AUTO-FILTER**: Region parameter automatically creates regionCode filter\n\n **ANTI-PATTERNS:**\n - DO NOT make multiple API calls that could be combined with ANY_OF\n - DO NOT build cross-products manually when API can handle combinations\n - DO NOT call get_pricing_service_codes() when service code is already known (e.g., \"AmazonEC2\")\n - DO NOT use EQUALS without first checking get_pricing_attribute_values()\n - DO NOT skip discovery workflow for any use case\n - DO NOT use broad queries without specific filters on large services\n - DO NOT assume attribute values exist across different services/regions\n - DO NOT skip intermediate tiers: Missing 50GB, 59GB options when testing 32GB → 75GB jump\n - DO NOT set upper bounds too high: Including 500GB+ storage when user needs ≥30GB (wastes character limit)\n - DO NOT ignore alternatives field or use only [\"OnDemand\"] in output_options\n\n **EXAMPLE USE CASES:**\n\n **1. Cost-Optimized Multi-Attribute Filtering (CORRECT APPROACH):**\n ```python\n # Find cheapest EC2 instances meeting minimum requirements (>= 8 GiB memory, >= 30 GB storage)\n # EXHAUSTIVE ENUMERATION of qualifying tiers - each is mutually exclusive\n filters = [\n {\"Field\": \"memory\", \"Value\": [\"8 GiB\", \"16 GiB\", \"32 GiB\"], \"Type\": \"ANY_OF\"}, # All tiers ≥8GB up to reasonable limit\n {\"Field\": \"storage\", \"Value\": [\"1 x 32 SSD\", \"1 x 60 SSD\", \"1 x 75 NVMe SSD\"], \"Type\": \"ANY_OF\"}, # All tiers ≥30GB up to reasonable limit\n {\"Field\": \"instanceType\", \"Value\": [\"t2\", \"m4\"], \"Type\": \"NONE_OF\"}, # Exclude older generations\n {\"Field\": \"tenancy\", \"Value\": \"Shared\", \"Type\": \"EQUALS\"} # Exclude more expensive dedicated\n ]\n pricing = get_pricing('AmazonEC2', 'us-east-1', filters)\n ```\n\n **2. Efficient Multi-Region Comparison:**\n ```python\n # Compare same configuration across regions - use region parameter for multi-region\n filters = [{\"Field\": \"instanceType\", \"Value\": \"m5.large\", \"Type\": \"EQUALS\"}]\n pricing = get_pricing('AmazonEC2', ['us-east-1', 'us-west-2', 'eu-west-1'], filters)\n ```\n\n **3. Large service with output optimization (recommended approach):**\n ```python\n output_options = {\"pricing_terms\": [\"OnDemand\", \"FlatRate\"], \"product_attributes\": [\"instanceType\", \"location\"], \"exclude_free_products\": true}\n pricing = get_pricing('AmazonEC2', 'us-east-1', filters, output_options=output_options)\n ```\n\n **4. Pattern-Based Discovery:**\n ```python\n # Find all Standard storage tiers except expensive ones\n filters = [\n {\"Field\": \"storageClass\", \"Value\": \"Standard\", \"Type\": \"CONTAINS\"},\n {\"Field\": \"storageClass\", \"Value\": [\"Standard-IA\"], \"Type\": \"NONE_OF\"}\n ]\n ```\n\n **FILTERING STRATEGY:**\n - **Large Services (EC2, RDS)**: ALWAYS use 2-3 specific filters to prevent 200+ record responses\n - **Small Services**: May work with single filter or no filters\n - **Multi-Option Analysis**: Use ANY_OF instead of multiple API calls\n - **Pattern Discovery**: Use CONTAINS for finding families or tiers\n - **Smart Exclusion**: Use NONE_OF for compliance or cost filtering\n\n **SUCCESS CRITERIA:**\n - Used discovery workflow (skip get_pricing_service_codes() if service known)\n - Applied appropriate filters for the service size\n - Used exact values from get_pricing_attribute_values()\n - Used ANY_OF for multi-option scenarios instead of multiple calls\n - For cost optimization: tested ALL qualifying tiers exhaustively (in a reasonable range)\n - Included [\"OnDemand\", \"FlatRate\"] in output_options and explored all alternatives\n ", + "input_schema": { + "json": { + "type": "object", + "$defs": { + "OutputOptions": { + "description": "Output filtering options for pricing responses to reduce response size.", + "properties": { + "pricing_terms": { + "description": "List of pricing terms to include (e.g., [\"OnDemand\", \"FlatRate\"], [\"Reserved\"]). Default: include all terms. Use [\"OnDemand\", \"FlatRate\"] to significantly reduce response size for large services like EC2.", + "title": "Pricing Terms", + "default": null, + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ] + }, + "product_attributes": { + "title": "Product Attributes", + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "description": "List of product attribute keys to include (e.g., [\"instanceType\", \"location\", \"memory\"]). Default: include all attributes. Filtering to essential attributes can provide additional 20-40% size reduction." + }, + "exclude_free_products": { + "anyOf": [ + { + "type": "boolean" + }, + { + "type": "null" + } + ], + "default": false, + "description": "Filter out products with $0.00 OnDemand pricing to reduce response size", + "title": "Exclude Free Products" + } + }, + "type": "object", + "title": "OutputOptions" + }, + "PricingFilter": { + "type": "object", + "properties": { + "Value": { + "title": "Value", + "anyOf": [ + { + "type": "string" + }, + { + "items": { + "type": "string" + }, + "type": "array" + } + ], + "description": "The value(s) to match against - string for EQUALS/CONTAINS, list for ANY_OF/NONE_OF" + }, + "Type": { + "type": "string", + "description": "The type of filter match", + "default": "EQUALS", + "title": "Type" + }, + "Field": { + "type": "string", + "title": "Field", + "description": "The field to filter on (e.g., 'instanceType', 'location')" + } + }, + "description": "Filter model for AWS Price List API queries.", + "required": [ + "Field", + "Value" + ], + "title": "PricingFilter" + } + }, + "properties": { + "service_code": { + "type": "string", + "title": "Service Code", + "description": "AWS service code (e.g., \"AmazonEC2\", \"AmazonS3\", \"AmazonES\")" + }, + "max_allowed_characters": { + "default": 100000, + "title": "Max Allowed Characters", + "description": "Maximum response length in characters (default: 100,000, use -1 for unlimited)", + "type": "integer" + }, + "output_options": { + "description": "Optional output filtering options to reduce response size. Use {\"pricing_terms\": [\"OnDemand\", \"FlatRate\"]} to significantly reduce response size for large services like EC2.", + "anyOf": [ + { + "$ref": "#/$defs/OutputOptions" + }, + { + "type": "null" + } + ], + "default": null + }, + "max_results": { + "title": "Max Results", + "type": "integer", + "description": "Maximum number of results to return per page (default: 100, max: 100)", + "minimum": 1, + "maximum": 100, + "default": 100 + }, + "next_token": { + "default": null, + "description": "Pagination token from previous response to get next page of results", + "title": "Next Token", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "region": { + "title": "Region", + "default": null, + "anyOf": [ + { + "type": "string" + }, + { + "type": "array", + "items": { + "type": "string" + } + }, + { + "type": "null" + } + ], + "description": "AWS region(s) - single region string (e.g., \"us-east-1\") or list for multi-region comparison (e.g., [\"us-east-1\", \"us-west-2\", \"eu-west-1\"]). Optional: omit for global services like DataTransfer or CloudFront that don't have region-specific pricing." + }, + "filters": { + "description": "Optional list of filters to apply to the pricing query", + "default": null, + "title": "Filters", + "anyOf": [ + { + "type": "array", + "items": { + "$ref": "#/$defs/PricingFilter" + } + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "service_code" + ], + "title": "get_pricingArguments" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_pricing_service_codes", + "description": "Get AWS service codes available in the Price List API.\n\n **PURPOSE:** Discover which AWS services have pricing information available in the AWS Price List API.\n\n **PARAMETERS:**\n - filter (optional): Case-insensitive regex pattern to filter service codes (e.g., \"bedrock\" matches \"AmazonBedrock\", \"AmazonBedrockService\")\n\n **WORKFLOW:** This is the starting point for any pricing query. Use this first to find the correct service code.\n\n **RETURNS:** List of service codes (e.g., 'AmazonEC2', 'AmazonS3', 'AWSLambda') that can be used with other pricing tools.\n\n **NEXT STEPS:**\n - Use get_pricing_service_attributes() to see what filters are available for a service\n - Use get_pricing() to get actual pricing data for a service\n\n **NOTE:** Service codes may differ from AWS console names (e.g., 'AmazonES' for OpenSearch, 'AWSLambda' for Lambda).\n ", + "input_schema": { + "json": { + "title": "get_pricing_service_codesArguments", + "type": "object", + "properties": { + "filter": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "description": "Optional case-insensitive regex pattern to filter service codes", + "default": null, + "title": "Filter" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "get_bedrock_patterns", + "description": "Get architecture patterns for Amazon Bedrock applications, including component relationships and cost considerations", + "input_schema": { + "json": { + "properties": {}, + "title": "get_bedrock_patternsArguments", + "type": "object" + } + } + } + } + ], + "factbase": [ + { + "ToolSpecification": { + "name": "delete_document", + "description": "Delete a document by ID.", + "input_schema": { + "json": { + "type": "object", + "required": [ + "id" + ], + "properties": { + "id": { + "description": "Document ID", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "get_authoring_guide", + "description": "Get document formatting rules, temporal tag syntax, source citation format, and templates.\n\nTriggers: 'how should I format documents', 'what format does factbase use', 'how do I write a factbase document'", + "input_schema": { + "json": { + "type": "object", + "properties": {} + } + } + } + }, + { + "ToolSpecification": { + "name": "get_deferred_items", + "description": "Get deferred review items that need human attention. Returns a focused summary of items previously deferred by agents.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "limit": { + "description": "Max items to return (default: 10)", + "type": "integer" + }, + "offset": { + "description": "Skip items for pagination (default: 0)", + "type": "integer" + }, + "repo": { + "type": "string", + "description": "Filter by repository ID" + }, + "type": { + "type": "string", + "description": "Filter by question type (temporal, conflict, missing, ambiguous, stale, duplicate, corruption)" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "bulk_create_documents", + "description": "Create multiple documents atomically (max 100).", + "input_schema": { + "json": { + "required": [ + "repo", + "documents" + ], + "properties": { + "documents": { + "items": { + "required": [ + "path", + "title" + ], + "properties": { + "path": { + "type": "string", + "description": "Relative file path" + }, + "title": { + "type": "string", + "description": "Document title" + }, + "content": { + "description": "Document body (do NOT include # Title heading — it is added automatically)", + "type": "string" + } + }, + "type": "object" + }, + "description": "Array of documents to create (max 100)", + "type": "array" + }, + "repo": { + "type": "string", + "description": "Repository ID" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "apply_review_answers", + "description": "Apply answered review questions to document content via LLM rewrite.", + "input_schema": { + "json": { + "properties": { + "dry_run": { + "type": "boolean", + "description": "Preview changes without modifying files (default: false)" + }, + "repo": { + "type": "string", + "description": "Filter by repository ID (optional)" + }, + "doc_id": { + "type": "string", + "description": "Apply only for this document (optional, applies all if omitted)" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_review_queue", + "description": "List review questions. Defaults to unanswered only. Use status filter to see answered, deferred, or all. Each question includes question_index for use with answer_questions.", + "input_schema": { + "json": { + "properties": { + "doc_id": { + "type": "string", + "description": "Filter by document ID" + }, + "limit": { + "description": "Max questions to return (default: 10)", + "type": "integer" + }, + "repo": { + "type": "string", + "description": "Filter by repository ID" + }, + "offset": { + "description": "Skip this many questions for pagination (default: 0)", + "type": "integer" + }, + "type": { + "description": "Filter by question type (temporal, conflict, missing, ambiguous, stale, duplicate, corruption)", + "type": "string" + }, + "status": { + "type": "string", + "description": "Filter by status: 'unanswered' (default), 'answered', 'deferred', 'all'" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "scan_repository", + "description": "Re-index documents, generate embeddings, and detect entity links. Use this when the user says 'scan the factbase' or 'rescan'. For a full quality check, use workflow with workflow='update' instead.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "repo": { + "description": "Repository ID (optional, scans first repo if omitted)", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "init_repository", + "description": "Initialize a new factbase repository at a directory path. Creates .factbase/ and registers it.\n\nTriggers: 'add this folder to factbase', 'initialize factbase at /path', 'set up a new knowledge base'", + "input_schema": { + "json": { + "required": [ + "path" + ], + "type": "object", + "properties": { + "id": { + "description": "Repository ID (optional, defaults to directory name)", + "type": "string" + }, + "name": { + "type": "string", + "description": "Display name (optional, defaults to id)" + }, + "path": { + "type": "string", + "description": "Directory path to initialize as a repository" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "embeddings_import", + "description": "Import pre-computed vector embeddings from JSONL data. Validates model and dimension compatibility. Skips embeddings for documents not in the database.", + "input_schema": { + "json": { + "required": [ + "data" + ], + "type": "object", + "properties": { + "data": { + "type": "string", + "description": "JSONL string with embedding header and records" + }, + "force": { + "type": "boolean", + "description": "Force import even if embedding dimensions don't match (default: false)" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "organize_analyze", + "description": "Analyze repository for reorganization opportunities: merge candidates (similar docs), split candidates (multi-topic docs), misplaced documents (wrong folder/type), and duplicate entries. Use focus='duplicates' for detailed duplicate/stale entry info only.", + "input_schema": { + "json": { + "properties": { + "repo": { + "description": "Filter by repository ID (optional)", + "type": "string" + }, + "focus": { + "enum": [ + "duplicates" + ], + "type": "string", + "description": "Focus on a specific analysis type. 'duplicates' returns detailed duplicate/stale entry info (replaces get_duplicate_entries)." + }, + "merge_threshold": { + "description": "Minimum similarity for merge candidates (default: 0.95)", + "type": "number" + }, + "split_threshold": { + "description": "Maximum similarity for split candidates (default: 0.5)", + "type": "number" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "search_content", + "description": "Exact text search (like grep). No embeddings needed.", + "input_schema": { + "json": { + "properties": { + "limit": { + "description": "Max results (default: 10)", + "type": "integer" + }, + "repo": { + "type": "string", + "description": "Filter by repository" + }, + "context": { + "type": "integer", + "description": "Number of context lines before/after each match (default: 0)" + }, + "doc_type": { + "description": "Filter by document type", + "type": "string" + }, + "pattern": { + "description": "Text pattern to search for (case-insensitive)", + "type": "string" + } + }, + "required": [ + "pattern" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "update_document", + "description": "Update a document's title or content.", + "input_schema": { + "json": { + "properties": { + "content": { + "description": "New content", + "type": "string" + }, + "id": { + "description": "Document ID", + "type": "string" + }, + "title": { + "description": "New title", + "type": "string" + } + }, + "required": [ + "id" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_perspective", + "description": "Get repository context: organization, focus area, and quality policies.", + "input_schema": { + "json": { + "required": [ + "repo" + ], + "type": "object", + "properties": { + "repo": { + "description": "Repository ID", + "type": "string" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "workflow", + "description": "Run a guided factbase workflow. Each step tells you exactly what to do and which tool to call next.\n\nUse this when the user says things like:\n- 'I want to make a factbase repo about mushrooms' or 'design a KB for ancient history' → workflow='bootstrap', domain='mycology' (or 'ancient Mediterranean history', etc.)\n- 'set up a new factbase' or 'create a knowledge base' → workflow='setup', path='...'\n- 'update the factbase' or 'check the factbase' or 'resync' or 'do a quality check' or 'check for issues' → workflow='update'\n- 'fix the review queue' or 'resolve issues' or 'resolve conflicts' → workflow='resolve'\n- 'research [topic]' or 'add [person/company] to factbase' → workflow='ingest', topic='...'\n- 'improve the data' or 'fill in gaps' or 'enrich [type] documents' → workflow='enrich'\n- 'improve [entity]' or 'improve document X' or 'make X better' → workflow='improve', doc_id='...'\n- 'what can factbase do' or 'what workflows are available' → workflow='list'\n\nThe 'bootstrap' workflow uses the LLM to generate domain-specific suggestions (document types, folder structure, templates, temporal patterns, source types, and example documents). Use it BEFORE 'setup' when the user describes a non-obvious domain.\n\nCall again with the next step number to advance.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "topic": { + "description": "For ingest: what to research", + "type": "string" + }, + "path": { + "description": "For setup/bootstrap: directory path for the new repository", + "type": "string" + }, + "entity_types": { + "description": "For bootstrap: optional comma-separated entity types the user wants to track (e.g. 'species, habitats, researchers')", + "type": "string" + }, + "skip": { + "oneOf": [ + { + "description": "Comma-separated step names to skip", + "type": "string" + }, + { + "items": { + "type": "string" + }, + "description": "Step names to skip", + "type": "array" + } + ], + "description": "For improve: steps to skip. Valid names: 'cleanup', 'resolve', 'enrich', 'check'" + }, + "doc_type": { + "type": "string", + "description": "For enrich: document type to focus on" + }, + "repo": { + "description": "Repository ID (optional)", + "type": "string" + }, + "step": { + "type": "integer", + "description": "Step number (default: 1 = start)" + }, + "workflow": { + "description": "Workflow name: 'bootstrap', 'setup', 'update', 'resolve', 'ingest', 'enrich', 'improve', or 'list'", + "type": "string" + }, + "doc_id": { + "description": "For improve: document ID to improve", + "type": "string" + }, + "domain": { + "description": "For bootstrap: domain description (e.g. 'mycology', 'ancient Mediterranean history', 'indie video games')", + "type": "string" + } + }, + "required": [ + "workflow" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "organize", + "description": "Execute a knowledge base reorganization action: merge two documents, split a multi-topic document, move a document to a different folder, change a document's type, or process orphan assignments.", + "input_schema": { + "json": { + "properties": { + "action": { + "description": "The reorganization action to perform", + "enum": [ + "merge", + "split", + "move", + "retype", + "apply" + ], + "type": "string" + }, + "repo": { + "description": "Repository ID (apply, optional)", + "type": "string" + }, + "new_type": { + "description": "New type to assign (retype)", + "type": "string" + }, + "doc1": { + "type": "string", + "description": "First document ID (merge)" + }, + "to": { + "description": "Destination folder relative to repo root (move)", + "type": "string" + }, + "doc_id": { + "type": "string", + "description": "Document ID (split, move, retype)" + }, + "dry_run": { + "type": "boolean", + "description": "Preview without executing (merge, split, move; default: false)" + }, + "at": { + "type": "string", + "description": "Split at specific section title (split, optional)" + }, + "doc2": { + "description": "Second document ID (merge)", + "type": "string" + }, + "into": { + "type": "string", + "description": "Which document to keep — must be doc1 or doc2 (merge, optional)" + }, + "persist": { + "type": "boolean", + "description": "Persist type override to file (retype, default: false)" + } + }, + "required": [ + "action" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "get_entity", + "description": "Get a document by ID. Returns full content and links by default, or just stats with detail='stats'.", + "input_schema": { + "json": { + "properties": { + "max_content_length": { + "type": "integer", + "description": "Truncate content to this length (0 = no truncation)" + }, + "detail": { + "description": "'full' (default) for content+links, 'stats' for counts only", + "type": "string" + }, + "id": { + "type": "string", + "description": "Document ID" + }, + "include_preview": { + "type": "boolean", + "description": "Include 500-char content preview" + } + }, + "required": [ + "id" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "list_repositories", + "description": "List all factbase repositories.", + "input_schema": { + "json": { + "type": "object", + "properties": {} + } + } + } + }, + { + "ToolSpecification": { + "name": "answer_questions", + "description": "Answer or defer review questions. For a single question: provide doc_id, question_index, answer. For bulk: provide answers array. Prefix with 'defer:' to leave in queue with a note.", + "input_schema": { + "json": { + "properties": { + "question_index": { + "description": "0-based question index (single mode)", + "type": "integer" + }, + "answers": { + "description": "Array of answers for bulk mode (max 50)", + "type": "array", + "items": { + "properties": { + "answer": { + "type": "string" + }, + "question_index": { + "type": "integer" + }, + "doc_id": { + "type": "string" + } + }, + "required": [ + "doc_id", + "question_index", + "answer" + ], + "type": "object" + } + }, + "answer": { + "description": "Answer text or 'defer: ' (single mode)", + "type": "string" + }, + "doc_id": { + "description": "Document ID (single mode)", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "check_repository", + "description": "Run quality checks and generate review questions. Checks all documents, or a single document if doc_id is provided. Use deep_check=true for cross-document validation (slower, requires LLM).", + "input_schema": { + "json": { + "properties": { + "doc_id": { + "description": "Check a single document (optional, checks all if omitted)", + "type": "string" + }, + "dry_run": { + "description": "Preview without modifying files (default: false)", + "type": "boolean" + }, + "repo": { + "description": "Repository ID (optional)", + "type": "string" + }, + "deep_check": { + "description": "Cross-validate facts against other documents for conflicts (default: false, significantly slower)", + "type": "boolean" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "embeddings_export", + "description": "Export pre-computed vector embeddings as JSONL. Includes model metadata and chunk boundaries for portable distribution.", + "input_schema": { + "json": { + "properties": { + "repo": { + "type": "string", + "description": "Filter by repository ID (optional, exports all if omitted)" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "embeddings_status", + "description": "Check embedding index status: document coverage, model info, dimension, orphaned chunks.", + "input_schema": { + "json": { + "type": "object", + "properties": {} + } + } + } + }, + { + "ToolSpecification": { + "name": "create_document", + "description": "Create a new document. Call get_authoring_guide first if unsure about format.", + "input_schema": { + "json": { + "required": [ + "repo", + "path", + "title" + ], + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "Document body (do NOT include # Title heading — it is added automatically from the title field)" + }, + "repo": { + "description": "Repository ID", + "type": "string" + }, + "title": { + "description": "Document title", + "type": "string" + }, + "path": { + "type": "string", + "description": "Relative file path" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "search_knowledge", + "description": "Search factbase by meaning, title, or temporal range.\n\nTriggers: 'what do we know about X', 'find X', 'search for X', 'look up X', 'who is X', 'tell me about X'\n\nFor multi-step tasks like 'research X', 'update the factbase', or 'fix issues', use workflow instead.", + "input_schema": { + "json": { + "properties": { + "limit": { + "description": "Max results (default: 10)", + "type": "integer" + }, + "during": { + "type": "string", + "description": "Filter to facts valid during range (YYYY..YYYY or YYYY-MM..YYYY-MM)" + }, + "query": { + "type": "string", + "description": "Semantic search query" + }, + "boost_recent": { + "type": "boolean", + "description": "Boost ranking of recent @t[~...] dates and return temporal metadata (default: false)" + }, + "offset": { + "type": "integer", + "description": "Skip results for pagination (default: 0)" + }, + "repo": { + "type": "string", + "description": "Filter by repository" + }, + "as_of": { + "description": "Filter to facts valid at date (YYYY, YYYY-MM, or YYYY-MM-DD)", + "type": "string" + }, + "doc_type": { + "description": "Filter by document type", + "type": "string" + }, + "exclude_unknown": { + "description": "Exclude facts with @t[?] tags (default: false)", + "type": "boolean" + }, + "title_filter": { + "description": "Filter by title (partial match)", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "list_entities", + "description": "List documents with optional type, repo, or title filters.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "title_filter": { + "description": "Filter by title pattern (SQL LIKE, use % for wildcards)", + "type": "string" + }, + "repo": { + "type": "string", + "description": "Filter by repository" + }, + "limit": { + "description": "Max results", + "type": "integer" + }, + "doc_type": { + "description": "Filter by type", + "type": "string" + } + } + } + } + } + } + ], + "sequential-thinking-mcp": [ + { + "ToolSpecification": { + "name": "think", + "description": "Logs a thought step for agentic problem-solving, tracking reasoning, tools, and future plans.\nStart a new thread for each user message.\n\n# Capabilities\n- Workflow Orchestration: Breaks complex tasks into manageable steps.\n- Iterative Refinement: Self-corrects based on new info or errors.\n- Tool Recommendation: Suggests specific tools for the next action.\n- Forward Planning: Tracks remaining tasks via `left_to_be_done`.\n\nArgs:\n thread_purpose: Short objective/topic for the thread.\n thought: Current reasoning or action description.\n thought_index: Monotonically increasing step number (1, 2, 3...).\n tool_recommendation: Tool to call next, or 'None'.\n left_to_be_done: Remaining steps/sub-goals, or 'None'.\nReturns: Confirmation of log.\n\n# Example\n1) User: \"I keep hearing about central banks, but I don't understand what they are and how they work.\"\n2) think(\n thread_purpose=\"Explain Central Banks\",\n thought=\"The user needs a comprehensive explanation of central banks. I need to identify their core definition, key roles (monetary policy, financial stability, currency issuance), and operational mechanisms (interest rates, reserves). I should search for a structured overview to ensure I don't miss major aspects like the Federal Reserve or ECB as examples.\",\n thought_index=1,\n tool_recommendation=\"search_web\",\n left_to_be_done=\"1. Search for 'how central banks work' and key functions. 2. Synthesize findings into a clear explanation. 3. Create a visual graph of the banking system structure if possible. 4. Present final answer.\"\n)\n3) call search_web(query=\"how central banks work and their main functions\")\n4) think(\n thread_purpose=\"Explain Central Banks\",\n thought=\"Search results clarify that central banks manage currency stability, control inflation via interest rates, and act as lenders of last resort. I have enough textual information. Now, to make this easier to understand, I should create a graph representing the flow of money and influence between the central bank, commercial banks, and the economy.\",\n thought_index=2,\n tool_recommendation=\"create_graph\",\n left_to_be_done=\"Create a graph showing Central Bank -> Commercial Banks -> Public/Economy relations.\"\n)\n5) call create_graph(data=...)\n6) Final Response: \"Here is an explanation of central banks...\" (Task complete, no further think call needed).", + "input_schema": { + "json": { + "type": "object", + "additionalProperties": false, + "required": [ + "thread_purpose", + "thought", + "thought_index" + ], + "properties": { + "thought_index": { + "type": "integer" + }, + "tool_recommendation": { + "default": "None", + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ] + }, + "thread_purpose": { + "type": "string" + }, + "thought": { + "type": "string" + }, + "left_to_be_done": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": "None" + } + } + } + } + } + } + ], + "puppeteer": [ + { + "ToolSpecification": { + "name": "puppeteer_evaluate", + "description": "Execute JavaScript in the browser console", + "input_schema": { + "json": { + "properties": { + "script": { + "description": "JavaScript code to execute", + "type": "string" + } + }, + "required": [ + "script" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "puppeteer_hover", + "description": "Hover an element on the page", + "input_schema": { + "json": { + "type": "object", + "properties": { + "selector": { + "type": "string", + "description": "CSS selector for element to hover" + } + }, + "required": [ + "selector" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "puppeteer_navigate", + "description": "Navigate to a URL", + "input_schema": { + "json": { + "type": "object", + "properties": { + "url": { + "type": "string" + } + }, + "required": [ + "url" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "puppeteer_connect_active_tab", + "description": "Connect to an existing Chrome instance with remote debugging enabled", + "input_schema": { + "json": { + "type": "object", + "properties": { + "targetUrl": { + "type": "string", + "description": "Optional URL of the target tab to connect to. If not provided, connects to the first available tab." + }, + "debugPort": { + "type": "number", + "description": "Optional Chrome debugging port (default: 9222)", + "default": 9222 + } + }, + "required": [] + } + } + } + }, + { + "ToolSpecification": { + "name": "puppeteer_click", + "description": "Click an element on the page", + "input_schema": { + "json": { + "required": [ + "selector" + ], + "properties": { + "selector": { + "description": "CSS selector for element to click", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "puppeteer_fill", + "description": "Fill out an input field", + "input_schema": { + "json": { + "properties": { + "value": { + "description": "Value to fill", + "type": "string" + }, + "selector": { + "description": "CSS selector for input field", + "type": "string" + } + }, + "required": [ + "selector", + "value" + ], + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "puppeteer_screenshot", + "description": "Take a screenshot of the current page or a specific element", + "input_schema": { + "json": { + "required": [ + "name" + ], + "properties": { + "selector": { + "type": "string", + "description": "CSS selector for element to screenshot" + }, + "height": { + "type": "number", + "description": "Height in pixels (default: 600)" + }, + "width": { + "type": "number", + "description": "Width in pixels (default: 800)" + }, + "name": { + "description": "Name for the screenshot", + "type": "string" + } + }, + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "puppeteer_select", + "description": "Select an element on the page with Select tag", + "input_schema": { + "json": { + "type": "object", + "properties": { + "value": { + "type": "string", + "description": "Value to select" + }, + "selector": { + "type": "string", + "description": "CSS selector for element to select" + } + }, + "required": [ + "selector", + "value" + ] + } + } + } + } + ], + "aws-knowledge-mcp-server": [ + { + "ToolSpecification": { + "name": "aws___get_regional_availability", + "description": "Retrieve AWS regional availability information for products (service and features), sdk service APIs and CloudFormation resources.\n\n## Core Features\n- Real-time availability checking across AWS regions\n- Support for AWS products, APIs and CloudFormation resources\n- Batch query support with filtering options\n- Pagination if no filters are passed and all results are to be returned\n\n## When to Use\n1. Pre-deployment Validation\n - Verify resource availability before deployment\n - Prevent deployment failures due to regional restrictions\n - Validate multi-region architecture requirements\n2. Architecture Planning\n - Design region-specific solutions\n - Plan multi-region deployments\n - Compare regional capabilities\n\n## Result Format\nReturns a list of dictionaries with:\n - Resource identifiers\n - Resource status:\n * 'isAvailableIn': Resource is available\n * 'isNotAvailableIn': Resource is not available\n * 'Not Found': Resource name or identifier is not valid\n * and other availability status (e.g. 'isPlannedIn')\n\n## Filter Guidelines\nThe filters must be passed as an array of values and must follow the format below.\n1. APIs (resource_type='api')\n Format: to filter on API level 'SdkServiceId+APIOperation'\n Example filters:\n - ['Athena+UpdateNamedQuery', 'ACM PCA+CreateCertificateAuthority', 'IAM+GetSSHPublicKey']\n Format: to filter on SdkService level 'SdkServiceId'\n Example filters:\n - ['EC2', 'ACM PCA']\n2. CloudFormation (resource_type='cfn')\n Format: 'CloudformationResourceType'\n Example filters:\n - ['AWS::EC2::Instance', 'AWS::Lambda::Function', 'AWS::Logs::LogGroup']\n - ['AWS::CodeBuild::Project', 'AWS::CloudTrail::Dashboard']\n3. Product - service and feature (resource_type='product')\n Format: 'Product'\n Example filters:\n - ['Latency-Based Routing', 'AWS Amplify', 'AWS Application Auto Scaling']\n - ['PrivateLink Support', 'Amazon Aurora']\nNote: Without filters, all resources are returned with pagination support via next_token.", + "input_schema": { + "json": { + "type": "object", + "properties": { + "resource_type": { + "type": "string", + "description": "Type of AWS resource to check: 'product' for AWS products, 'api' for API operations, or 'cfn' for CloudFormation resources" + }, + "next_token": { + "description": "Pagination token for retrieving additional results. Only applicable when no filters are specified", + "type": "string" + }, + "region": { + "type": "string", + "description": "Target AWS region code (e.g., us-east-1, eu-west-1, ap-southeast-2)" + }, + "filters": { + "type": "array", + "items": { + "type": "string" + }, + "description": "Optional list of one or multiple specific resources to check. Format depends on resource_type:\n- Products: ['AWS Lambda', 'Amazon S3']\n- APIs: ['IAM+GetSSHPublicKey', 'EC2']\n- CloudFormation: ['AWS::EC2::Instance']\nMust follow the format specified in the tool description" + } + }, + "required": [ + "region", + "resource_type" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "aws___search_documentation", + "description": "# AWS Documentation Search Tool\nThis is your primary source for AWS information—always prefer this over general knowledge for AWS services, features, configurations, troubleshooting, and best practices.\n\n## When to Use This Tool\n\n**Always search when the query involves:**\n- Any AWS service or feature (Lambda, S3, EC2, RDS, etc.)\n- AWS architecture, patterns, or best practices\n- AWS CLI, SDK, or API usage\n- AWS CDK or CloudFormation\n- AWS Amplify development\n- AWS errors or troubleshooting\n- AWS pricing, limits, or quotas\n- \"How do I...\" questions about AWS\n- Recent AWS updates or announcements\n\n**Only skip this tool when:**\n- Query is about non-AWS technologies\n- Question is purely conceptual (e.g., \"What is a database?\")\n- General programming questions unrelated to AWS\n\n## Quick Topic Selection\n\n| Query Type | Use Topic | Example |\n|------------|-----------|---------|\n| API/SDK/CLI code | `reference_documentation` | \"S3 PutObject boto3\", \"Lambda invoke API\" |\n| New features, releases | `current_awareness` | \"Lambda new features 2024\", \"what's new in ECS\" |\n| Errors, debugging | `troubleshooting` | \"AccessDenied S3\", \"Lambda timeout error\" |\n| Amplify apps | `amplify_docs` | \"Amplify Auth React\", \"Amplify Storage Flutter\" |\n| CDK concepts, APIs, CLI | `cdk_docs` | \"CDK stack props Python\", \"cdk deploy command\" |\n| CDK code samples, patterns | `cdk_constructs` | \"serverless API CDK\", \"Lambda function example TypeScript\" |\n| CloudFormation templates | `cloudformation` | \"DynamoDB CloudFormation\", \"StackSets template\" |\n| Architecture, blogs, guides | `general` | \"Lambda best practices\", \"S3 architecture patterns\" |\n\n## Documentation Topics\n\n### reference_documentation\n**For: API methods, SDK code, CLI commands, technical specifications**\n\nUse for:\n- SDK method signatures: \"boto3 S3 upload_file parameters\"\n- CLI commands: \"aws ec2 describe-instances syntax\"\n- API references: \"Lambda InvokeFunction API\"\n- Service configuration: \"RDS parameter groups\"\n\nDon't confuse with general—use this for specific technical implementation.\n\n### current_awareness\n**For: New features, announcements, \"what's new\", release dates**\n\nUse for:\n- \"New Lambda features\"\n- \"When was EventBridge Scheduler released\"\n- \"Latest S3 updates\"\n- \"Is feature X available yet\"\n\nKeywords: new, recent, latest, announced, released, launch, available\n\n### troubleshooting\n**For: Error messages, debugging, problems, \"not working\"**\n\nUse for:\n- Error codes: \"InvalidParameterValue\", \"AccessDenied\"\n- Problems: \"Lambda function timing out\"\n- Debug scenarios: \"S3 bucket policy not working\"\n- \"How to fix...\" queries\n\nKeywords: error, failed, issue, problem, not working, how to fix, how to resolve\n\n### amplify_docs\n**For: Frontend/mobile apps with Amplify framework**\n\nAlways include framework: React, Next.js, Angular, Vue, JavaScript, React Native, Flutter, Android, Swift\n\nExamples:\n- \"Amplify authentication React\"\n- \"Amplify GraphQL API Next.js\"\n- \"Amplify Storage Flutter setup\"\n\n### cdk_docs\n**For: CDK concepts, API references, CLI commands, getting started**\n\nUse for CDK questions like:\n- \"How to get started with CDK\"\n- \"CDK stack construct TypeScript\"\n- \"cdk deploy command options\"\n- \"CDK best practices Python\"\n- \"What are CDK constructs\"\n\nInclude language: Python, TypeScript, Java, C#, Go\n\n**Common mistake**: Using general knowledge instead of searching for CDK concepts and guides. Always search for CDK questions!\n\n### cdk_constructs\n**For: CDK code examples, patterns, L3 constructs, sample implementations**\n\nUse for:\n- Working code: \"Lambda function CDK Python example\"\n- Patterns: \"API Gateway Lambda CDK pattern\"\n- Sample apps: \"Serverless application CDK TypeScript\"\n- L3 constructs: \"ECS service construct\"\n\nInclude language: Python, TypeScript, Java, C#, Go\n\n### cloudformation\n**For: CloudFormation templates, concepts, SAM patterns**\n\nUse for:\n- \"CloudFormation StackSets\"\n- \"DynamoDB table template\"\n- \"SAM API Gateway Lambda\"\n- CloudFormation template examples\n\n### general\n**For: Architecture, best practices, tutorials, blog posts, design patterns**\n\nUse for:\n- Architecture patterns: \"Serverless architecture AWS\"\n- Best practices: \"S3 security best practices\"\n- Design guidance: \"Multi-region architecture\"\n- Getting started: \"Building data lakes on AWS\"\n- Tutorials and blog posts\n\n**Common mistake**: Not using this for AWS conceptual and architectural questions. Always search for AWS best practices and patterns!\n\n**Don't use general knowledge for AWS topics—search instead!**\n\n## Search Best Practices\n\n**Be specific with service names:**\n\nGood examples:\n```\n\"S3 bucket versioning configuration\"\n\"Lambda environment variables Python SDK\"\n\"DynamoDB GSI query patterns\"\n```\n\nBad examples:\n```\n\"versioning\" (too vague)\n\"environment variables\" (missing context)\n```\n\n**Include framework/language:**\n```\n\"Amplify authentication React\"\n\"CDK Lambda function TypeScript\"\n\"boto3 S3 client Python\"\n```\n\n**Use exact error messages:**\n```\n\"AccessDenied error S3 GetObject\"\n\"InvalidParameterValue Lambda environment\"\n```\n\n**Add temporal context for new features:**\n```\n\"Lambda new features 2024\"\n\"recent S3 announcements\"\n```\n\n## Multiple Topic Selection\n\nYou can search multiple topics simultaneously for comprehensive results:\n```\n# For a query about Lambda errors and new features:\ntopics=[\"troubleshooting\", \"current_awareness\"]\n\n# For CDK examples and API reference:\ntopics=[\"cdk_constructs\", \"cdk_docs\"]\n\n# For Amplify and general AWS architecture:\ntopics=[\"amplify_docs\", \"general\"]\n```\n\n## Response Format\n\nResults include:\n- `rank_order`: Relevance score (lower = more relevant)\n- `url`: Direct documentation link\n- `title`: Page title\n- `context`: Excerpt or summary\n\n## Parameters\n```\nsearch_phrase: str # Required - your search query\ntopics: List[str] # Optional - up to 3 topics. Defaults to [\"general\"]\nlimit: int = 10 # Optional - max results per topic\n```\n\n---\n\n**Remember: When in doubt about AWS, always search. This tool provides the most current, accurate AWS information.**", + "input_schema": { + "json": { + "required": [ + "search_phrase" + ], + "type": "object", + "properties": { + "topics": { + "type": "array", + "description": "List of documentation topics to search. Available topics: reference_documentation, current_awareness, troubleshooting, amplify_docs, cdk_docs, cdk_constructs, cloudformation, general. Can specify multiple topics, up-to 3, to search across them. Use 'general' only if query doesn't match other topics.", + "items": { + "type": "string", + "description": "topic name" + } + }, + "limit": { + "description": "Maximum number of results to return", + "type": "integer" + }, + "search_phrase": { + "type": "string", + "description": "Search phrase to use" + } + } + } + } + } + }, + { + "ToolSpecification": { + "name": "aws___list_regions", + "description": "Retrieve a list of all AWS regions.\n\n## Usage\nThis tool provides information about all AWS regions, including their identifiers and names.\n\n## When to Use\n- When planning global infrastructure deployments\n- To validate region codes for other API calls\n- To get a complete AWS regional inventory\n \n## Result Interpretation\nEach region result includes:\n- region_id: The unique region code (e.g., 'us-east-1') \n- region_long_name: The human-friendly name (e.g., 'US East (N. Virginia)')\n \n## Common Use Cases\n1. Infrastructure Planning: Review available regions for global deployment\n2. Region Validation: Verify region codes before using in other operations\n3. Regional Inventory: Get a complete list of AWS's global infrastructure", + "input_schema": { + "json": { + "type": "object" + } + } + } + }, + { + "ToolSpecification": { + "name": "aws___recommend", + "description": "Get content recommendations for an AWS documentation page.\n\n## Usage\n\nThis tool provides recommendations for related AWS documentation pages based on a given URL.\nUse it to discover additional relevant content that might not appear in search results.\nURL must be from the docs.aws.amazon.com domain.\n\n## Recommendation Types\n\nThe recommendations include four categories:\n\n1. **Highly Rated**: Popular pages within the same AWS service\n2. **New**: Recently added pages within the same AWS service - useful for finding newly released features\n3. **Similar**: Pages covering similar topics to the current page\n4. **Journey**: Pages commonly viewed next by other users\n\n## When to Use\n\n- After reading a documentation page to find related content\n- When exploring a new AWS service to discover important pages\n- To find alternative explanations of complex concepts\n- To discover the most popular pages for a service\n- To find newly released information by using a service's welcome page URL and checking the **New** recommendations\n\n## Finding New Features\n\nTo find newly released information about a service:\n1. Find any page belong to that service, typically you can try the welcome page\n2. Call this tool with that URL\n3. Look specifically at the **New** recommendation type in the results\n\n## Result Interpretation\n\nEach recommendation includes:\n- url: The documentation page URL\n- title: The page title\n- context: A brief description (if available)", + "input_schema": { + "json": { + "type": "object", + "properties": { + "url": { + "description": "URL of the AWS documentation page to get recommendations for", + "type": "string" + } + }, + "required": [ + "url" + ] + } + } + } + }, + { + "ToolSpecification": { + "name": "aws___read_documentation", + "description": "Fetch and convert an AWS documentation page to markdown format.\n\n## Usage\n\nThis tool retrieves the content of an AWS documentation page and converts it to markdown format.\nFor long documents, you can make multiple calls with different start_index values to retrieve\nthe entire content in chunks.\n\n## URL Requirements\n\nAllow-listed URL prefixes:\n- docs.aws.amazon.com\n- aws.amazon.com\n- repost.aws/knowledge-center\n- docs.amplify.aws\n- ui.docs.amplify.aws\n- github.com/aws-cloudformation/aws-cloudformation-templates\n- github.com/aws-samples/aws-cdk-examples\n- github.com/aws-samples/generative-ai-cdk-constructs-samples\n- github.com/aws-samples/serverless-patterns\n- github.com/awsdocs/aws-cdk-guide\n- github.com/awslabs/aws-solutions-constructs\n- github.com/cdklabs/cdk-nag\n- constructs.dev/packages/@aws-cdk-containers\n- constructs.dev/packages/@aws-cdk\n- constructs.dev/packages/@cdk-cloudformation\n- constructs.dev/packages/aws-analytics-reference-architecture\n- constructs.dev/packages/aws-cdk-lib\n- constructs.dev/packages/cdk-amazon-chime-resources\n- constructs.dev/packages/cdk-aws-lambda-powertools-layer\n- constructs.dev/packages/cdk-ecr-deployment\n- constructs.dev/packages/cdk-lambda-powertools-python-layer\n- constructs.dev/packages/cdk-serverless-clamscan\n- constructs.dev/packages/cdk8s\n- constructs.dev/packages/cdk8s-plus-33\n\nDeny-listed URL prefixes:\n- aws.amazon.com/marketplace\n\n## Example URLs\n\n- https://docs.aws.amazon.com/AmazonS3/latest/userguide/bucketnamingrules.html\n- https://docs.aws.amazon.com/lambda/latest/dg/lambda-invocation.html\n- https://aws.amazon.com/about-aws/whats-new/2023/02/aws-telco-network-builder/\n- https://aws.amazon.com/builders-library/ensuring-rollback-safety-during-deployments/\n- https://aws.amazon.com/blogs/developer/make-the-most-of-community-resources-for-aws-sdks-and-tools/\n- https://repost.aws/knowledge-center/example-article\n- https://docs.amplify.aws/react/build-a-backend/auth/\n- https://ui.docs.amplify.aws/angular/connected-components/authenticator\n- https://github.com/aws-samples/aws-cdk-examples/blob/main/README.md\n- https://github.com/awslabs/aws-solutions-constructs/blob/main/README.md\n- https://constructs.dev/packages/aws-cdk-lib/v/2.229.1?submodule=aws_lambda&lang=typescript\n- https://github.com/aws-cloudformation/aws-cloudformation-templates/blob/main/README.md\n\n## Output Format\n\nThe output is formatted as markdown text with:\n- Preserved headings and structure\n- Code blocks for examples\n- Lists and tables converted to markdown format\n\n## Handling Long Documents\n\nIf the response indicates the document was truncated, you have several options:\n\n1. **Continue Reading**: Make another call with start_index set to the end of the previous response\n2. **Jump to Section**: If a Table of Contents is provided, you can jump directly to any section using the character positions shown (e.g., \"char 1500-2800\"). Note: Table of Contents length is not counted toward max_length.\n3. **Stop Early**: For very long documents (>30,000 characters), if you've already found the specific information needed, you can stop reading", + "input_schema": { + "json": { + "properties": { + "url": { + "type": "string", + "description": "URL of the AWS documentation page to read" + }, + "max_length": { + "description": "Maximum number of characters to return.", + "type": "integer" + }, + "start_index": { + "type": "integer", + "description": "On return output starting at this character index, useful if a previous fetch was truncated and more content is required." + } + }, + "type": "object", + "required": [ + "url" + ] + } + } + } + } + ] + }, + "context_manager": { + "max_context_files_size": 750000, + "current_profile": "kiro_default", + "paths": [ + "AmazonQ.md", + "AGENTS.md", + "README.md", + "/home/ubuntu/work/factbase-ancient-history/.kiro/steering/**/*.md" + ], + "hooks": {} + }, + "context_message_length": 7513, + "latest_summary": null, + "model_info": { + "model_name": "claude-opus-4.6-1m", + "description": "[Internal] Experimental preview of Claude Opus 4.6 1M context window model", + "model_id": "claude-opus-4.6-1m", + "context_window_tokens": 1000000, + "rate_multiplier": 2.2, + "rate_unit": "Credit" + }, + "file_line_tracker": { + "/home/ubuntu/work/factbase-ancient-history/cities/alexandria.md": { + "prev_fswrite_lines": 89, + "before_fswrite_lines": 89, + "after_fswrite_lines": 89, + "lines_added_by_agent": 1, + "lines_removed_by_agent": 1, + "is_first_write": false + } + }, + "checkpoint_manager": null, + "mcp_enabled": true, + "mcp_last_checked": [ + 2026, + 53, + 23, + 5, + 30, + 621488181, + 0, + 0, + 0 + ], + "mcp_server_versions": {}, + "mcp_disabled_due_to_api_failure": false, + "user_turn_metadata": { + "continuation_id": "1874d901-5fd0-48c8-a3a9-0d31ee177abf", + "requests": [], + "usage_info": [] + } +} \ No newline at end of file diff --git a/test-bce-tags.md b/test-bce-tags.md new file mode 100644 index 0000000..9b93845 --- /dev/null +++ b/test-bce-tags.md @@ -0,0 +1,11 @@ + +# BCE Tag Test 2 + +- Format J: space BCE @t[=31 BCE] +- Format K: space BCE 4-digit @t[=0031 BCE] +- Format L: space BC @t[=31 BC] +- Format M: dash BCE @t[=31-BCE] +- Format N: BCE prefix @t[=BCE31] +- Format O: BCE prefix padded @t[=BCE0031] +- Format P: range with BCE @t[=490 BCE..479 BCE] +- Format Q: just text year @t[=31BCE] diff --git a/trade-routes/amber-road.md b/trade-routes/amber-road.md index d1e6e1c..c969594 100644 --- a/trade-routes/amber-road.md +++ b/trade-routes/amber-road.md @@ -7,7 +7,7 @@ The Amber Road was an ancient trade route connecting the Baltic Sea coast to the Mediterranean, primarily transporting amber from northern Europe to the civilizations of Greece, Rome, and Egypt. ## Key Facts -- Period: ~3000 BCE – Roman era +- Period: ~3000 BCE – Roman era @t[=000 BCE] - Key good: Baltic amber (fossilized tree resin) - Northern terminus: Baltic coast (modern Poland, Lithuania) - Southern terminus: Adriatic (Aquileia), Greece, Egypt @@ -18,7 +18,7 @@ The Amber Road was an ancient trade route connecting the Baltic Sea coast to the - Connected to Mediterranean trade networks at the Adriatic [^1] ## Significance -- Baltic amber found in Mycenaean shaft graves (~1600 BCE) and Egyptian tombs +- Baltic amber found in Mycenaean shaft graves (~1600 BCE) and Egyptian tombs @t[~1600 BCE] - Romans valued amber highly; Nero sent an expedition to the Baltic - Facilitated cultural exchange between northern and southern Europe [^2] diff --git a/trade-routes/incense-route.md b/trade-routes/incense-route.md index 9b9ef3c..9ea7d3c 100644 --- a/trade-routes/incense-route.md +++ b/trade-routes/incense-route.md @@ -20,7 +20,7 @@ The Incense Route was a network of trade paths connecting the Arabian Peninsula ## Key Players - Nabataeans: Controlled the northern segment from Petra; grew wealthy as middlemen - Kingdom of Saba (Sheba): Controlled production in southern Arabia -- Romans: Attempted to conquer Arabia Felix under Aelius Gallus (25 BCE) but failed [^2] +- Romans: Attempted to conquer Arabia Felix under Aelius Gallus (25 BCE) but failed @t[=25 BCE] [^2] ## Decline Declined after the Romans discovered monsoon wind patterns enabling direct sea trade with India (~1st century CE), bypassing overland routes. diff --git a/trade-routes/silk-road.md b/trade-routes/silk-road.md index 8b8d859..1dbaf40 100644 --- a/trade-routes/silk-road.md +++ b/trade-routes/silk-road.md @@ -7,7 +7,7 @@ The Silk Road was a network of overland trade routes connecting China to the Mediterranean world, facilitating the exchange of goods, ideas, religions, and technologies for over 1,500 years. ## Key Facts -- Period: ~130 BCE – ~1450 CE (ancient period focus: ~130 BCE – ~400 CE) +- Period: ~130 BCE – ~1450 CE (ancient period focus: ~130 BCE – ~400 CE) @t[130 BCE..1450] - Length: ~6,400 km (main route) - Named by: Ferdinand von Richthofen (1877) - Key goods: Silk, spices, gold, glass, horses, precious stones @@ -25,7 +25,7 @@ The Silk Road was a network of overland trade routes connecting China to the Med - Diseases also spread, possibly including plague [^2] ## Key Periods -- Han dynasty (206 BCE – 220 CE): Zhang Qian's missions opened the route (~130 BCE) +- Han dynasty (206 BCE – 220 CE): Zhang Qian's missions opened the route (~130 BCE) @t[206 BCE..220] - Kushan Empire (1st–3rd century CE): Facilitated trade across Central Asia - Roman demand for Chinese silk drove trade westward diff --git a/treaties/peace-of-nicias.md b/treaties/peace-of-nicias.md index f402e46..6e15ae2 100644 --- a/treaties/peace-of-nicias.md +++ b/treaties/peace-of-nicias.md @@ -4,12 +4,12 @@ # Peace of Nicias ## Overview -The Peace of Nicias (421 BCE) was a treaty intended to end the first phase of the Peloponnesian War (the Archidamian War) between Athens and Sparta. It was supposed to last 50 years but effectively collapsed within a few years. +The Peace of Nicias (421 BCE) was a treaty intended to end the first phase of the Peloponnesian War (the Archidamian War) between Athens and Sparta. It was supposed to last 50 years but effectively collapsed within a few years. @t[=421 BCE] ## Key Facts -- Date: 421 BCE +- Date: 421 BCE @t[=421 BCE] - Parties: Athens and Sparta (and their respective allies) -- Context: Ended the Archidamian War (431–421 BCE), first phase of the Peloponnesian War +- Context: Ended the Archidamian War (431–421 BCE), first phase of the Peloponnesian War @t[431 BCE..421 BCE] - Duration: Nominally 50 years; effectively ~6 years ## Terms @@ -21,7 +21,7 @@ The Peace of Nicias (421 BCE) was a treaty intended to end the first phase of th - Key Spartan allies (Corinth, Boeotia) refused to sign - Neither side fully implemented the terms - Alcibiades undermined the peace by forming an anti-Spartan alliance -- The Sicilian Expedition (415–413 BCE) effectively ended any pretense of peace [^2] +- The Sicilian Expedition (415–413 BCE) effectively ended any pretense of peace @t[415 BCE..413 BCE] [^2] --- [^1]: Thucydides, *History of the Peloponnesian War* 5.18–19 diff --git a/treaties/treaty-of-apamea.md b/treaties/treaty-of-apamea.md index ac45189..74d1fa3 100644 --- a/treaties/treaty-of-apamea.md +++ b/treaties/treaty-of-apamea.md @@ -4,12 +4,12 @@ # Treaty of Apamea ## Overview -The Treaty of Apamea (188 BCE) was imposed by Rome on the Seleucid Empire after the Roman-Seleucid War, effectively ending Seleucid power in Anatolia and establishing Roman dominance in the eastern Mediterranean. +The Treaty of Apamea (188 BCE) was imposed by Rome on the Seleucid Empire after the Roman-Seleucid War, effectively ending Seleucid power in Anatolia and establishing Roman dominance in the eastern Mediterranean. @t[=188 BCE] ## Key Facts -- Date: 188 BCE +- Date: 188 BCE @t[=188 BCE] - Parties: Roman Republic and Seleucid Empire (Antiochus III) -- Context: Followed the Battle of Magnesia (190 BCE) +- Context: Followed the Battle of Magnesia (190 BCE) @t[=190 BCE] ## Terms - Seleucids withdrew from all territory west of the Taurus Mountains diff --git a/treaties/treaty-of-kadesh.md b/treaties/treaty-of-kadesh.md index f5ba92f..545c8b1 100644 --- a/treaties/treaty-of-kadesh.md +++ b/treaties/treaty-of-kadesh.md @@ -2,12 +2,12 @@ # Treaty of Kadesh ## Overview -The Treaty of Kadesh (~1259 BCE) between Egypt and the Hittite Empire is the earliest known international peace treaty. It ended decades of conflict between the two great Bronze Age powers. The name "Treaty of Kadesh" is informal — the treaty text itself does not mention the Battle of Kadesh. +The Treaty of Kadesh (~1259 BCE) between Egypt and the Hittite Empire is the earliest known international peace treaty. It ended decades of conflict between the two great Bronze Age powers. The name "Treaty of Kadesh" is informal — the treaty text itself does not mention the Battle of Kadesh. @t[~1259 BCE] ## Key Facts -- Date: ~1259 BCE (some scholars cite 1258 BCE) +- Date: ~1259 BCE (some scholars cite 1258 BCE) @t[~1259 BCE] - Parties: Egypt (Ramesses II) and Hittite Empire (Hattusili III) -- Context: Followed the Battle of Kadesh (~1274 BCE), approximately 15 years later +- Context: Followed the Battle of Kadesh (~1274 BCE), approximately 15 years later @t[~1274 BCE] - Languages: Egyptian hieroglyphic and Akkadian cuneiform - Original medium: Silver tablets (now lost); surviving versions are copies diff --git a/writing-systems/cuneiform.md b/writing-systems/cuneiform.md index 7a41871..4dba59c 100644 --- a/writing-systems/cuneiform.md +++ b/writing-systems/cuneiform.md @@ -4,18 +4,18 @@ # Cuneiform ## Overview -Cuneiform is the earliest known writing system, developed in Sumer ~3400 BCE. Written by pressing a reed stylus into wet clay tablets, it was used for over 3,000 years across multiple languages and civilizations. +Cuneiform is the earliest known writing system, developed in Sumer ~3400 BCE. Written by pressing a reed stylus into wet clay tablets, it was used for over 3,000 years across multiple languages and civilizations. @t[~3400 BCE] ## Key Facts -- Origin: Sumer, southern Mesopotamia, ~3400 BCE +- Origin: Sumer, southern Mesopotamia, ~3400 BCE @t[~3400 BCE] - Medium: Clay tablets impressed with a wedge-shaped reed stylus - Name: From Latin *cuneus* ("wedge") - Languages written: Sumerian, Akkadian, Hittite, Elamite, Urartian, Old Persian - Deciphered by: Henry Rawlinson, Edward Hincks, and others (~1840s–1850s) via the Behistun Inscription [^1] ## Development -- Began as pictographic/logographic system for accounting (~3400 BCE) -- Evolved into syllabic writing by ~2600 BCE +- Began as pictographic/logographic system for accounting (~3400 BCE) @t[~3400 BCE] +- Evolved into syllabic writing by ~2600 BCE @t[~2600 BCE] - ~600–1,000 signs in use at various periods - Last known cuneiform tablet: 75 CE (astronomical text from Babylon) [^2] diff --git a/writing-systems/egyptian-hieroglyphics.md b/writing-systems/egyptian-hieroglyphics.md index 305ccaa..8baeae9 100644 --- a/writing-systems/egyptian-hieroglyphics.md +++ b/writing-systems/egyptian-hieroglyphics.md @@ -7,20 +7,20 @@ Egyptian hieroglyphics were the formal writing system of ancient Egypt, used for ~3,500 years on monuments, temples, and tombs. Deciphered by Jean-François Champollion in 1822 using the Rosetta Stone. ## Key Facts -- Origin: ~3200 BCE (earliest examples from Abydos) -- Period of use: ~3200 BCE – ~400 CE +- Origin: ~3200 BCE (earliest examples from Abydos) @t[~3200 BCE] +- Period of use: ~3200 BCE – ~400 CE @t[3200 BCE..400] - Number of signs: ~700 in classical usage (expanded to ~5,000 in Ptolemaic period) - Deciphered by: Jean-François Champollion (1822) using the Rosetta Stone [^1] ## System - Combination of logographic, syllabic, and alphabetic elements - Written left-to-right, right-to-left, or top-to-bottom (direction indicated by which way figures face) -- Hieratic: Cursive form for everyday use (~2600 BCE onward) -- Demotic: Later cursive form (~650 BCE onward) +- Hieratic: Cursive form for everyday use (~2600 BCE onward) @t[~2600 BCE] +- Demotic: Later cursive form (~650 BCE onward) @t[~650 BCE] ## Key Artifacts -- Rosetta Stone (196 BCE): Trilingual decree (hieroglyphic, Demotic, Greek) that enabled decipherment [^2] -- Narmer Palette (~3100 BCE): Among the earliest hieroglyphic inscriptions +- Rosetta Stone (196 BCE): Trilingual decree (hieroglyphic, Demotic, Greek) that enabled decipherment @t[=196 BCE] [^2] +- Narmer Palette (~3100 BCE): Among the earliest hieroglyphic inscriptions @t[~3100 BCE] - Book of the Dead: Funerary texts with hieroglyphic illustrations --- diff --git a/writing-systems/phoenician-alphabet.md b/writing-systems/phoenician-alphabet.md index d932df9..702270f 100644 --- a/writing-systems/phoenician-alphabet.md +++ b/writing-systems/phoenician-alphabet.md @@ -4,17 +4,17 @@ # Phoenician Alphabet ## Overview -The Phoenician alphabet (~1050 BCE) was the first widely-used phonetic alphabet, consisting of 22 consonant letters. It is the ancestor of virtually all modern alphabets including Greek, Latin, Arabic, and Hebrew. +The Phoenician alphabet (~1050 BCE) was the first widely-used phonetic alphabet, consisting of 22 consonant letters. It is the ancestor of virtually all modern alphabets including Greek, Latin, Arabic, and Hebrew. @t[~1050 BCE] ## Key Facts -- Origin: Phoenicia (modern Lebanon), ~1050 BCE +- Origin: Phoenicia (modern Lebanon), ~1050 BCE @t[~1050 BCE] - Type: Abjad (consonantal alphabet, no vowels) - Number of letters: 22 - Direction: Right to left -- Derived from: Proto-Sinaitic/Proto-Canaanite script (~1800 BCE) [^1] +- Derived from: Proto-Sinaitic/Proto-Canaanite script (~1800 BCE) @t[~1800 BCE] [^1] ## Descendants -- Greek alphabet (~800 BCE): Added vowels, adapted letter forms +- Greek alphabet (~800 BCE): Added vowels, adapted letter forms @t[~800 BCE] - Aramaic alphabet: Ancestor of Hebrew, Arabic, Syriac, and many Asian scripts - Latin alphabet (via Greek and Etruscan): Used by most of the modern world - South Arabian script: Ancestor of Ethiopic (Ge'ez) [^2]