{"name":"AllegatAI","description":"Evidence layer for legal work: a hypergraph of sources and propositions where reliance is decided by a guard, not by the model. External agents read briefings, verify drafted answers claim by claim, and propose candidate propositions that a human accepts.","version":"0.2.0","provider":{"organization":"Algodyne Corporation","url":"https://allegatai.com"},"supportedInterfaces":[{"url":"https://allegatai.com/mcp","protocolBinding":"MCP-STREAMABLE-HTTP","protocolVersion":"1.0"}],"capabilities":{"streaming":false,"pushNotifications":false},"securitySchemes":{"apiToken":{"httpAuthSecurityScheme":{"scheme":"Bearer","description":"Personal API token (alg_…) created under Admin → API tokens. It acts as its creating user."}}},"securityRequirements":[{"schemes":{"apiToken":{"list":[]}}}],"defaultInputModes":["application/json"],"defaultOutputModes":["application/json","text/plain"],"skills":[{"id":"list_matters","name":"list matters","description":"List all matters with id, name, jurisdiction, and transition revision.","tags":["evidence","mcp","read"],"examples":[]},{"id":"get_matter_overview","name":"get matter overview","description":"Matter cockpit: counts, relied/candidate propositions, positions with computed strength, open proof gaps, recent transitions.","tags":["evidence","mcp","read"],"examples":[]},{"id":"get_briefing","name":"get briefing","description":"Start here. A briefing compiled from the matter as it stands now for one question: matching propositions labelled CURRENT (relied and support still stands), INVALID (relied but support no longer stands) or NOT PROOF, with their contradictors, sources (quarantined/superseded), basis and proof-gap neighbours, positions, supersessions, and whether it was truncated. `text` is a compact rendering for direct reading.","tags":["evidence","mcp","read"],"examples":[]},{"id":"search_propositions","name":"search propositions","description":"Keyword-search propositions in a matter. Returns text, epistemic class, reliance, current support status (current/invalid/not_relied), and independent support count. Only `current` propositions are established; candidates are NOT facts.","tags":["evidence","mcp","read"],"examples":[]},{"id":"get_proposition","name":"get proposition","description":"Full detail for one proposition: support sources with provenance roots, basis propositions, contradictors, work products citing it, and legal elements requiring it.","tags":["evidence","mcp","read"],"examples":[]},{"id":"verify_answer","name":"verify answer","description":"Check an answer you wrote about this matter against it, claim by claim. Every sentence must cite proposition ids ([p-id]); a cited id must exist, a claim stated as fact must rest on a CURRENT proposition, and the cited text must carry what the claim says (its terms, numbers and dates). Returns the answer with failing claims removed, plus per-claim status: grounded, non_claim, uncited (kept, flagged), unknown_citation, not_proof, unsupported, misattributed (stripped), cross_language (kept, flagged: the cited propositions are written in a different script from the claim, so its terms could not be checked; its numbers and dates were). For a question that asks for judgement over the record (rank, compare, advise), pass analysis: true and state each proposition's support status beside its id (\"[p-id] [CURRENT]\"): the sentence then stands when every id it names exists and carries the status stated, and is marked analysis, not record restatement. Answers are verified up to 32,000 characters; the result reports answerChars and answerTruncated, so when answerTruncated is true, verify the remainder in a follow-up call rather than assuming it was checked.","tags":["evidence","mcp","read"],"examples":[]},{"id":"traverse_hypergraph","name":"traverse hypergraph","description":"Traverse the evidence hypergraph from any node id (source, proposition, actor, position, gap, work product) up to maxDepth hops, both directions. Returns the neighborhood subgraph with typed edges (supports, stated_by, derived_from, contradicts, requires, has_element, closed_by, cites, cites_authority, supersedes).","tags":["evidence","mcp","read"],"examples":[]},{"id":"get_graph_slice","name":"get graph slice","description":"Pull structure on demand: the bounded evidence subgraph around proposition ids and/or one legal element. Seeds (at most 8) are expanded both directions up to depth hops (at most 3); the result holds at most maxNodes nodes (at most 60), seeds first, with typed edges, and says when it was truncated. Use it after the briefing to see what supports, contradicts or requires a proposition.","tags":["evidence","mcp","read"],"examples":[]},{"id":"list_sources","name":"list sources","description":"List evidence sources in a matter with provenance state (usable/quarantined/withdrawn), hashes, and derivative lineage. `sha256` is the hash of bytes this system holds. An external (vault-held) source carries its custodian's declared hash and locator under `external`; its `integrity` is declared_only until bytes are attached and match, so a declared hash is never verified bytes.","tags":["evidence","mcp","read"],"examples":[]},{"id":"get_source_text","name":"get source text","description":"Get extracted text of one source, in windows of 8,000 characters. Pass offset to page through a long source; the result reports offset, totalChars and truncated, so you always know whether more remains and nothing is silently cut. Empty when extraction has not produced text (e.g. needs OCR). Photos carry origin \"ai_vision\" and aiDerived: a model read the image; treat it as a lead, never evidence.","tags":["evidence","mcp","read"],"examples":[]},{"id":"get_position","name":"get position","description":"One legal position with computed strength and per-element support status.","tags":["evidence","mcp","read"],"examples":[]},{"id":"list_proof_gaps","name":"list proof gaps","description":"Material proof gaps with closure conditions and state (open/satisfied/abandoned).","tags":["evidence","mcp","read"],"examples":[]},{"id":"get_next_proof_actions","name":"get next proof actions","description":"Value-of-information ranking: which proof to buy next, scored by weak legal elements unblocked, with inspectable rationale.","tags":["evidence","mcp","read"],"examples":[]},{"id":"get_transition_log","name":"get transition log","description":"The append-only transition log (audit trail) for a matter, most recent last.","tags":["evidence","mcp","read"],"examples":[]},{"id":"propose_proposition","name":"propose proposition","description":"Propose a candidate proposition linked to one source. Lands as CANDIDATE only: a human owner/counsel must accept it through the guard before anything may rely on it. For a statement, supply statedById with a matter actor id and knowledgeBasis so attribution survives to acceptance. An anchor’s excerpt is verified against the source’s held text: a span that misses its quote is corrected to the quote (the reply then also carries anchorCorrected:true), and a quote the text does not contain is refused. Returns {accepted:true, propositionId, reliance} or, when the guard refuses it, {accepted:false, reasons:[{code, propositionId?, field?, hint}]}: repair what each hint says and call again.","tags":["evidence","mcp","write"],"examples":[]},{"id":"register_external_source","name":"register external source","description":"Register a source held in an external vault by its locator and, when the custodian recorded one, its declared SHA-256, without uploading bytes. It is recorded as declared (or locator_only when no hash exists), never as verified bytes; a human can attach the file later and, if a hash was declared, it must match. A locator-only source stays ingesting until its text or bytes are attached. Returns {accepted:true, sourceId, integrity} or {accepted:false, reasons:[{code, field?, hint}]}: repair what each hint says and call again.","tags":["evidence","mcp","write"],"examples":[]},{"id":"attach_external_text","name":"attach external text","description":"Attach text extracted outside this system to an external (vault-held) source so it can be searched, asked about and proposed from. The text's own SHA-256 is recorded; the original's bytes stay with the custodian and the source's integrity does not change (declared_only / locator_only stays so). Refused for uploaded sources and for sources whose bytes are held. A locator-only source still ingesting becomes usable. Text over the index limit is refused, never truncated.","tags":["evidence","mcp","write"],"examples":[]},{"id":"propose_identity_link","name":"propose identity link","description":"Propose that two records of the same type (two people, two organizations, two places…) may be one entity. Lands UNRESOLVED only: it is a candidate to look at, never a decision, and it grants nothing: no access, no reliance, no merge of the two records. A name appearing in many sources is not corroboration; give exact passages quoted word for word from the source text (or a finding) where each record appears, and a basis that says what beyond the name points to one entity. A person (owner or counsel) decides it as the same, distinct or still unresolved; you cannot resolve a link. Returns {accepted:true, linkId, state:\"unresolved\"} or {accepted:false, reasons:[{code, field?, hint}]}: repair what each hint says and call again.","tags":["evidence","mcp","write"],"examples":[]}]}