|
3 | 3 | "spdx": "PMPL-1.0-or-later", |
4 | 4 | "copyright": "Copyright (c) 2026 Jonathan D.A. Jewell (hyperpolymath) <j.d.a.jewell@open.ac.uk>", |
5 | 5 | "name": "echidna-llm-mcp", |
6 | | - "version": "0.1.0", |
7 | | - "description": "ECHIDNA LLM proof-tactic neurosymbolic interface", |
| 6 | + "version": "0.2.0", |
| 7 | + "description": "ECHIDNA 105-prover invocation surface — discovery, proof, verification, and LLM advisory", |
8 | 8 | "domain": "ai", |
9 | 9 | "tier": "Ayo", |
10 | 10 | "protocols": [ |
|
20 | 20 | "base_url": "local://echidna-llm-mcp", |
21 | 21 | "content_type": "application/json" |
22 | 22 | }, |
| 23 | + "backends": { |
| 24 | + "rest": { |
| 25 | + "env_var": "ECHIDNA_REST_URL", |
| 26 | + "default": "http://127.0.0.1:8000", |
| 27 | + "description": "ECHIDNA REST API — full 105-prover portfolio" |
| 28 | + }, |
| 29 | + "llm": { |
| 30 | + "env_var": "ECHIDNA_LLM_URL", |
| 31 | + "default": "http://127.0.0.1:7721", |
| 32 | + "description": "ECHIDNA LLM advisory layer — tactic suggestions, prover ranking" |
| 33 | + } |
| 34 | + }, |
| 35 | + "provers": "105 backends: Agda, Coq, Lean, Isabelle, Z3, CVC5, Metamath, HOLLight, Mizar, PVS, ACL2, HOL4, Idris2, Lean3, Vampire, EProver, SPASS, AltErgo, FStar, Dafny, Why3, TLAPS, Twelf, Nuprl, Minlog, Imandra, GLPK, SCIP, MiniZinc, Chuffed, ORTools, TypedWasm, SPIN, CBMC, SeaHorn, CaDiCaL, Kissat, MiniSat, NuSMV, TLC, Alloy, Prism, UPPAAL, FramaC, Viper, Tamarin, ProVerif, KeY, DReal, ABC, TypeLL, KatagoriaVerifier, TropicalTypeChecker, ChoreographicTypeChecker, EpistemicTypeChecker, EchoTypeChecker, SessionTypeChecker, ModalTypeChecker, QTTTypeChecker, EffectRowTypeChecker, DependentTypeChecker, RefinementTypeChecker, OrdinaryTypeChecker, PhantomTypeChecker, PolymorphicTypeChecker, ExistentialTypeChecker, HigherKindedTypeChecker, RowTypeChecker, SubtypingTypeChecker, IntersectionTypeChecker, UnionTypeChecker, GradualTypeChecker, HoareTypeChecker, IndexedTypeChecker, LinearTypeChecker, AffineTypeChecker, RelevantTypeChecker, OrderedTypeChecker, UniquenessTypeChecker, ImmutableTypeChecker, CapabilityTypeChecker, BunchedTypeChecker, TemporalTypeChecker, ProvabilityTypeChecker, ImpureTypeChecker, CoeffectTypeChecker, ProbabilisticTypeChecker, DyadicTypeChecker, HomotopyTypeChecker, CubicalTypeChecker, NominalTypeChecker, Abella, Dedukti, Cameleer, ACL2s, IsabelleZF, Boogie, Naproche, Matita, Arend, Athena, LambdaProlog, Mercury, Nitpick, Nunchaku", |
23 | 36 | "tools": [ |
| 37 | + { |
| 38 | + "name": "echidna_list_provers", |
| 39 | + "description": "Tool-discovery endpoint. Returns all 105 prover backends with name, tier, category, and complexity metadata. Call this first to know which prover ID to pass to other tools.", |
| 40 | + "inputSchema": { |
| 41 | + "type": "object", |
| 42 | + "properties": {} |
| 43 | + } |
| 44 | + }, |
| 45 | + { |
| 46 | + "name": "echidna_prove", |
| 47 | + "description": "Invoke a prover backend on a file path. Returns {verified, message, prover, raw_output, stderr}. Auto-detects prover from file extension when prover is omitted.", |
| 48 | + "inputSchema": { |
| 49 | + "type": "object", |
| 50 | + "properties": { |
| 51 | + "file": { |
| 52 | + "type": "string", |
| 53 | + "description": "Absolute path to the proof file. Extension determines default prover: .lean → Lean, .v → Coq, .agda → Agda, .smt2 → Z3, .thy → Isabelle, .miz → Mizar, .fst → FStar, etc." |
| 54 | + }, |
| 55 | + "prover": { |
| 56 | + "type": "string", |
| 57 | + "description": "Prover backend ID (case-sensitive). One of 105 values — call echidna_list_provers for the full list. Common: Agda, Coq, Lean, Isabelle, Z3, CVC5, Idris2, FStar, Dafny, Why3, Metamath, Vampire, SPASS, EProver." |
| 58 | + }, |
| 59 | + "timeout_secs": { |
| 60 | + "type": "integer", |
| 61 | + "description": "Timeout in seconds. Default 300." |
| 62 | + } |
| 63 | + }, |
| 64 | + "required": ["file"] |
| 65 | + } |
| 66 | + }, |
| 67 | + { |
| 68 | + "name": "echidna_verify", |
| 69 | + "description": "Verify proof content from an inline string rather than a file. Requires prover ID — content is passed directly to the prover binary with no extension-based auto-detection.", |
| 70 | + "inputSchema": { |
| 71 | + "type": "object", |
| 72 | + "properties": { |
| 73 | + "content": { |
| 74 | + "type": "string", |
| 75 | + "description": "Proof content to verify (raw prover syntax)" |
| 76 | + }, |
| 77 | + "prover": { |
| 78 | + "type": "string", |
| 79 | + "description": "Prover backend ID. One of 105 values — call echidna_list_provers for the full list." |
| 80 | + }, |
| 81 | + "timeout_secs": { |
| 82 | + "type": "integer", |
| 83 | + "description": "Timeout in seconds. Default 300." |
| 84 | + } |
| 85 | + }, |
| 86 | + "required": ["content", "prover"] |
| 87 | + } |
| 88 | + }, |
| 89 | + { |
| 90 | + "name": "echidna_search", |
| 91 | + "description": "Keyword search over the ECHIDNA proof corpus (66,674 proofs across 16 prover systems). Returns matching proof examples useful for tactic inspiration.", |
| 92 | + "inputSchema": { |
| 93 | + "type": "object", |
| 94 | + "properties": { |
| 95 | + "query": { |
| 96 | + "type": "string", |
| 97 | + "description": "Search query (keywords, tactic names, theorem types)" |
| 98 | + } |
| 99 | + }, |
| 100 | + "required": ["query"] |
| 101 | + } |
| 102 | + }, |
24 | 103 | { |
25 | 104 | "name": "echidna_init", |
26 | | - "description": "Initialise ECHIDNA LLM endpoint", |
| 105 | + "description": "Initialise ECHIDNA LLM advisory endpoint", |
27 | 106 | "inputSchema": { |
28 | 107 | "type": "object", |
29 | 108 | "properties": { |
30 | 109 | "endpoint": { |
31 | 110 | "type": "string", |
32 | | - "description": "ECHIDNA backend endpoint URL" |
| 111 | + "description": "ECHIDNA LLM backend endpoint URL" |
33 | 112 | } |
34 | 113 | } |
35 | 114 | } |
36 | 115 | }, |
37 | 116 | { |
38 | 117 | "name": "echidna_authenticate", |
39 | | - "description": "Authenticate with ECHIDNA token", |
| 118 | + "description": "Authenticate with ECHIDNA LLM advisory token", |
40 | 119 | "inputSchema": { |
41 | 120 | "type": "object", |
42 | 121 | "properties": { |
|
49 | 128 | "description": "Max calls per session" |
50 | 129 | } |
51 | 130 | }, |
52 | | - "required": [ |
53 | | - "token" |
54 | | - ] |
| 131 | + "required": ["token"] |
55 | 132 | } |
56 | 133 | }, |
57 | 134 | { |
58 | 135 | "name": "echidna_suggest_tactics", |
59 | | - "description": "Get proof tactic suggestions for a goal", |
| 136 | + "description": "LLM-advisory: get proof tactic suggestions for a goal. Advisory only — suggestions are hints, not verified results. Does not affect ECHIDNA trust levels.", |
60 | 137 | "inputSchema": { |
61 | 138 | "type": "object", |
62 | 139 | "properties": { |
63 | 140 | "goal": { |
64 | 141 | "type": "string", |
65 | | - "description": "Proof goal (Lean/Idris2/Coq syntax)" |
| 142 | + "description": "Proof goal (in target prover's syntax)" |
| 143 | + }, |
| 144 | + "hypotheses": { |
| 145 | + "type": "array", |
| 146 | + "items": { "type": "string" }, |
| 147 | + "description": "Available hypotheses in the proof context" |
66 | 148 | }, |
67 | 149 | "prover": { |
68 | 150 | "type": "string", |
69 | | - "description": "Target prover: lean4|idris2|coq" |
| 151 | + "description": "Target prover ID. One of 105 values — call echidna_list_provers for the full list. Common: Agda, Coq, Lean, Idris2, Isabelle, FStar, Dafny, Z3, CVC5, Why3, Vampire." |
| 152 | + }, |
| 153 | + "top_k": { |
| 154 | + "type": "integer", |
| 155 | + "description": "Number of tactic suggestions to return (1-50, default 5)" |
70 | 156 | } |
71 | 157 | }, |
72 | | - "required": [ |
73 | | - "goal" |
74 | | - ] |
| 158 | + "required": ["goal"] |
75 | 159 | } |
76 | 160 | }, |
77 | 161 | { |
78 | 162 | "name": "echidna_rank_provers", |
79 | | - "description": "Rank proof strategies by expected success", |
| 163 | + "description": "LLM-advisory: rank all applicable prover backends by expected success probability for a given theorem. Returns ranked list with confidence scores. Advisory only.", |
80 | 164 | "inputSchema": { |
81 | 165 | "type": "object", |
82 | 166 | "properties": { |
83 | 167 | "theorem": { |
84 | 168 | "type": "string", |
85 | | - "description": "Theorem statement" |
| 169 | + "description": "Theorem statement to rank provers for" |
86 | 170 | }, |
87 | 171 | "context": { |
88 | 172 | "type": "string", |
89 | | - "description": "Proof context" |
| 173 | + "description": "Proof context (available lemmas, type environment)" |
| 174 | + }, |
| 175 | + "domain": { |
| 176 | + "type": "string", |
| 177 | + "description": "Proof domain hint: arithmetic, logic, type-theory, program-verification, security-protocol, constraint-solving, model-checking" |
90 | 178 | } |
91 | 179 | }, |
92 | | - "required": [ |
93 | | - "theorem" |
94 | | - ] |
| 180 | + "required": ["theorem"] |
95 | 181 | } |
96 | 182 | } |
97 | 183 | ] |
|
0 commit comments