exegete 0.14.1a0.dev1__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,515 @@
1
+ Metadata-Version: 2.4
2
+ Name: exegete
3
+ Version: 0.14.1a0.dev1
4
+ Summary: Exegete: a qualitative analysis application you use in conversation with an AI assistant, compatible with QualCoder. An MCP server, formerly qualcoder-mcp.
5
+ Author-email: Niccolò Tempini <n.tempini@exeter.ac.uk>
6
+ License-Expression: LGPL-3.0-or-later
7
+ Project-URL: Homepage, https://github.com/nicotem/exegete
8
+ Project-URL: Repository, https://github.com/nicotem/exegete
9
+ Project-URL: Issues, https://github.com/nicotem/exegete/issues
10
+ Project-URL: Changelog, https://github.com/nicotem/exegete/blob/main/CHANGELOG.md
11
+ Project-URL: Privacy, https://github.com/nicotem/exegete/blob/main/PRIVACY.md
12
+ Keywords: qualitative research,qualcoder,mcp,model-context-protocol,claude,qda,caqdas
13
+ Classifier: Development Status :: 3 - Alpha
14
+ Classifier: Intended Audience :: Science/Research
15
+ Classifier: Programming Language :: Python :: 3
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Operating System :: OS Independent
21
+ Classifier: Topic :: Scientific/Engineering
22
+ Requires-Python: >=3.10
23
+ Description-Content-Type: text/markdown
24
+ License-File: COPYING.LESSER
25
+ License-File: legal/GPL-3.0.txt
26
+ License-File: NOTICE
27
+ Requires-Dist: mcp<2,>=1.17.0
28
+ Provides-Extra: dev
29
+ Requires-Dist: pytest>=7.0.0; extra == "dev"
30
+ Requires-Dist: pytest-asyncio>=0.21.0; extra == "dev"
31
+ Requires-Dist: xmlschema>=3.0.0; extra == "dev"
32
+ Requires-Dist: hypothesis>=6.100; extra == "dev"
33
+ Requires-Dist: build>=1.2; extra == "dev"
34
+ Requires-Dist: twine>=6.1; extra == "dev"
35
+ Dynamic: license-file
36
+
37
+ <p align="center"><img src="https://raw.githubusercontent.com/nicotem/exegete/main/docs/brand/exegete-lockup.png" alt="The Exegete mark, a braided ring, beside the name Exegete" width="324"></p>
38
+
39
+ # Exegete
40
+
41
+ **A qualitative analysis application you use in conversation with an
42
+ AI assistant, compatible with QualCoder.**
43
+
44
+ Exegete (formerly qualcoder-mcp) is an application for qualitative
45
+ data analysis in its own right. You use it by talking with an AI
46
+ assistant, such as Claude Desktop, and it creates and works on projects
47
+ in the format of [QualCoder](https://github.com/ccbogel/QualCoder) (a
48
+ free program for qualitative data analysis). It stays compatible with
49
+ QualCoder, so you can open the same project there whenever you like,
50
+ one program at a time. It is not an add-on to QualCoder, and you do not
51
+ need QualCoder to start. It has no window of its own: your assistant
52
+ starts it, and its work appears in the conversation.
53
+
54
+ You ask in your own words, and the assistant uses Exegete's tools to do
55
+ it: start a project, bring in transcripts, suggest codings for the
56
+ files you choose, compare two coders, replace participants' names and
57
+ export reports. The assistant suggests; whether a code fits the words,
58
+ and what a coding means, stays your judgement.
59
+
60
+ - **What it covers today:** creating a project (Experimental); cases
61
+ and their attributes; bringing in text through the conversation;
62
+ coding, with each suggested coding waiting for your decision; the
63
+ codebook (making, renaming, moving, merging and deleting codes and
64
+ categories); memos, annotations and a journal; searching the texts,
65
+ the codings and the memos; reports and exports; comparing two coders;
66
+ replacing participants' names with pseudonyms; and backups, with a
67
+ way to restore one.
68
+ - **What still needs QualCoder:** bringing in documents other than
69
+ text (Word, PDF, images, audio, video); seeing the coding highlighted
70
+ in the text; coding images, audio and video, or an area of a PDF
71
+ page; and graphs. "What you need, at each stage", below, and the
72
+ table under "Three commitments", which compares the two programs row
73
+ by row, together list the rest.
74
+ - **The aim** is the whole life of a project in Exegete, from its
75
+ creation to the finished analysis, without needing QualCoder for any
76
+ of it, while every project stays one that QualCoder opens.
77
+
78
+ Exegete runs on your computer, reads and writes QualCoder's project
79
+ format, and follows QualCoder's rules wherever the two must agree, so
80
+ your project stays a QualCoder project. Technically, Exegete is an MCP
81
+ server: the Model Context Protocol (MCP) is only the standard way an
82
+ assistant reaches tools on your computer, which is why the same Exegete
83
+ can be used from more than one assistant. Claude Desktop is the easiest
84
+ start; "Start here", below, also covers OpenAI's ChatGPT desktop app and
85
+ Codex.
86
+
87
+ **What it is not.** It is not a remote control for the QualCoder
88
+ application: it does not start or control QualCoder, and QualCoder need
89
+ not be running while you work. It is not QualCoder, and it is not made
90
+ or endorsed by QualCoder's developers (QualCoder is free software by
91
+ Colin Curtain and contributors). It is a separate program that reads
92
+ and writes QualCoder project files; it contains a small number of
93
+ routines and values taken from QualCoder so that its results match
94
+ QualCoder's exactly, and [NOTICE](https://github.com/nicotem/exegete/blob/main/NOTICE)
95
+ lists them, with where each comes from.
96
+
97
+ It is an experimental early version (an alpha), built by one
98
+ researcher. Questions, problems and ideas go to
99
+ [GitHub Issues](https://github.com/nicotem/exegete/issues) (a
100
+ free GitHub account is needed), not email. Never put participant data
101
+ in an issue.
102
+
103
+ ## Where your data goes
104
+
105
+ Exegete runs on your computer, has no online service of its own
106
+ and sends nothing anywhere itself. What the assistant reads through it
107
+ (passages, codes, memos, names) becomes part of the conversation and
108
+ goes to the AI provider behind your assistant: Anthropic for Claude
109
+ Desktop and Claude's other apps, OpenAI for ChatGPT's desktop app and
110
+ Codex, and no outside provider at all with a fully local model, which
111
+ needs another assistant, such as LM Studio, set up by the Terminal
112
+ route (installing by typing commands, as INSTALL.md shows;
113
+ Experimental: no local model has yet been evaluated with Exegete).
114
+ Text you bring in through the conversation (pasted or attached, then
115
+ imported) goes to the provider in full; a file you import in QualCoder
116
+ does not, only what the assistant later reads of it.
117
+
118
+ Codex, OpenAI's route, also reads and changes files by itself, outside
119
+ Exegete, in the folder you give it. OpenAI's page on Codex's sandbox
120
+ says of the mode in which it may edit: "The agent can read files, edit
121
+ within the workspace, and run routine local commands inside that
122
+ boundary." Its page on approvals adds that even in the read-only mode
123
+ "Codex can read files and run commands within the read-only sandbox."
124
+ What Codex reads that way goes to OpenAI too, and Exegete's protections
125
+ (the `#####` mark below, your approval before anything is written, the
126
+ backups) do not apply to it. So give Codex a folder of its own, with no
127
+ study files in it ("ChatGPT's desktop app and Codex", below, says how).
128
+
129
+ Your project, its backups, your exports, the lists of suggestions
130
+ waiting for your review, Claude Desktop's own log of the extension
131
+ (which keeps a copy of every request and answer, names and quoted text
132
+ included; INSTALL.md says where), and, with Codex, its session files in
133
+ `~/.codex`, which keep what Exegete's tools returned (PRIVACY.md says
134
+ more), stay on your computer, unless they are in a folder that iCloud,
135
+ OneDrive or another sync service copies.
136
+ Exegete never passes the part of a memo from a `#####` mark onward
137
+ (QualCoder's mark for a private note) to the assistant, whichever
138
+ QualCoder made the project. The mark works in memos, annotations and
139
+ journal entries, not in the text of a transcript, and exported files
140
+ keep the whole memo, private part included. Replacing names reduces the
141
+ risk; it does not make anyone anonymous.
142
+
143
+ Which provider, and under which terms, is decided by your assistant and
144
+ your account, not by Exegete. On a personal Claude plan (Free,
145
+ Pro or Max), open https://claude.ai/settings/data-privacy-controls and
146
+ check the Model Improvement setting yourself (Anthropic's consumer
147
+ terms allow training on your conversations "unless you opt out of
148
+ training through your account settings"; PRIVACY.md quotes them, with
149
+ the exceptions) before you use participant data. With ChatGPT's desktop
150
+ app or Codex, OpenAI's terms apply. OpenAI's Help Center says: "When
151
+ you use our services for individuals, such as ChatGPT and Codex, we may
152
+ use your content to train our models." It also says: "To opt out, turn
153
+ off Improve the model for everyone under Settings > Data controls in
154
+ ChatGPT, or select Do not train on my content in our Privacy Portal."
155
+ Do one of the two before you use participant data; Codex's "Include
156
+ environments" is a separate setting. (Read from the Internet Archive's
157
+ copy of 28 September 2026: PRIVACY.md gives its address, the terms for
158
+ business plans, and what OpenAI says about that setting.) On an
159
+ account your university or employer provides, ask whoever manages it
160
+ which terms apply.
161
+ [PRIVACY.md](https://github.com/nicotem/exegete/blob/main/PRIVACY.md)
162
+ quotes the terms, and covers consent, institutional accounts and fully
163
+ local models: read it before you use participant data.
164
+
165
+ ## Start here
166
+
167
+ ### What you need, at each stage
168
+
169
+ - **To start:** Claude Desktop on macOS or Windows, and the extension
170
+ (the steps follow), or one of OpenAI's apps (after them). QualCoder is
171
+ not needed to start. Leave the
172
+ extension's "Tool set" setting as it comes (`lifecycle`): with it you
173
+ can create a project, add cases and attributes, bring in text through
174
+ the conversation, make codes and code the text, all from the
175
+ conversation. The other two choices, `full` and `core`, cannot create
176
+ a project; with them the extension works on projects that already
177
+ exist.
178
+ - **QualCoder is recommended from the start, and needed** to bring in
179
+ documents (Word, PDF, images, audio, video) and any text you would
180
+ rather not pass through the conversation (Exegete imports only
181
+ text the assistant hands it); to see the coding highlighted in the
182
+ text; to code images, audio, video or an area of a PDF page; for
183
+ graphs; and for the reports in its Reports menu.
184
+ [Download QualCoder](https://github.com/ccbogel/QualCoder/releases):
185
+ 3.8.2, the release marked "Latest", further down the page, for
186
+ Windows or a Mac with Apple Silicon (M1 or later; QualCoder offers no
187
+ download for older Intel Macs). Its notes on that page say how to
188
+ open it the first time. The "4.0-Beta" at the top also works, but it
189
+ is a test version, and Exegete cannot tell when it has your
190
+ project open (see "One program at a time" below).
191
+ - **The Terminal route**
192
+ ([INSTALL.md](https://github.com/nicotem/exegete/blob/main/INSTALL.md)),
193
+ which OpenAI's apps take too, needs Python 3.10 or newer. Its standard
194
+ tool set, `full`, cannot create a project: use a project made in
195
+ QualCoder, or switch project creation on as INSTALL.md shows (its
196
+ steps for OpenAI's apps do).
197
+ - **Projects** from QualCoder 3.8.2 and the 4.0 beta work (see "Three
198
+ commitments" below). A project from a QualCoder older than 3.8 must
199
+ be opened once in QualCoder 3.8 or newer, which updates it as it
200
+ opens, and closed again before Exegete can change it (the
201
+ oldest formats cannot even be read before that).
202
+
203
+ ### Claude Desktop, with one click
204
+
205
+ 1. **Get Claude Desktop**, the Claude app you install on your computer
206
+ (macOS or Windows), not Claude in a web browser or on a phone:
207
+ https://claude.ai/download. Sign in.
208
+ 2. **Download the extension.** Open the
209
+ [Releases page](https://github.com/nicotem/exegete/releases)
210
+ and take the release at the top (every release of this alpha is
211
+ marked Pre-release). Under its Assets, download the file whose name
212
+ ends in `.mcpb` (for example `exegete-0.14.1-alpha.mcpb`), not
213
+ "Source code".
214
+ 3. **Install it.** Double-click the file (if Claude does not open, drag
215
+ the file onto Claude's window). Claude Desktop shows its usual
216
+ warning to install only extensions whose developer you trust: click
217
+ Install, and Install again when it says it must fetch a few things it
218
+ needs (a minute or two, online). No Terminal, no configuration file.
219
+
220
+ To check: start a new conversation, click "+", then Connectors:
221
+ Exegete is listed. Claude asks before it uses a tool; "Allow
222
+ once" keeps it asking ("What it does", below, says why that matters).
223
+
224
+ The extension is not signed by its developer; a computer or Claude
225
+ account managed by your university or employer may refuse it.
226
+ [INSTALL.md, "Claude Desktop: the one-click extension"](https://github.com/nicotem/exegete/blob/main/INSTALL.md#claude-desktop-the-one-click-extension-recommended)
227
+ says what you will see then, and what the extension's two settings do.
228
+
229
+ ### ChatGPT's desktop app and Codex (OpenAI)
230
+
231
+ By OpenAI's documentation, its apps that run on your computer can
232
+ start Exegete there: the ChatGPT desktop app (macOS, Windows, or Linux
233
+ in preview) and Codex, OpenAI's command line and editor extension. The
234
+ desktop app, the command line and the editor extension read one
235
+ settings file. ChatGPT in a web browser cannot start Exegete: it runs
236
+ on OpenAI's computers and reaches only tools on the internet. (OpenAI
237
+ also offers a tunnel that connects the web to a program on your
238
+ computer; it is made for developers and IT teams, and this project does
239
+ not recommend it for a project with participants' data. Enterprise
240
+ workspaces have one more case, which OpenAI does not document for tools
241
+ like Exegete: INSTALL.md says more.)
242
+
243
+ ChatGPT's phone app cannot start Exegete either, but by OpenAI's
244
+ documentation it can use it through your computer. OpenAI's Remote,
245
+ set up in the ChatGPT desktop app on a Mac or Windows computer, lets
246
+ the phone start and approve work that the computer runs, and "MCP
247
+ servers, skills, browser access, and Computer Use come from that host's
248
+ configuration" (OpenAI,
249
+ <https://learn.chatgpt.com/docs/remote-connections>, read on 30
250
+ September 2026). So a phone paired with that computer can use the
251
+ Exegete set up there, and show participants' words. This project has
252
+ not tried it, and suggests leaving Remote off on a computer where
253
+ Exegete works on participants' data.
254
+
255
+ These apps have no one-click extension. The steps:
256
+
257
+ 1. **Install Exegete** by the Terminal route (a few typed commands).
258
+ 2. **Add Exegete to the settings file**, with the lines that make the
259
+ app ask you before every change Exegete makes. Without them, Codex
260
+ asks only before a tool that changes or deletes something, and runs
261
+ without asking the tools that add to your project (importing a
262
+ text, applying approved codings) and the one that sends the real
263
+ names in your pseudonym list to OpenAI.
264
+ 3. **Give Codex a folder of its own.** Make an empty folder for these
265
+ chats (INSTALL.md suggests `exegete-chats` in your home folder) and
266
+ open it as Codex's place to work; on the command line, start `codex`
267
+ inside it. Never give it your home folder, Documents, your projects
268
+ folder or a folder with transcripts: Codex reads and changes the
269
+ files there by itself, outside Exegete ("Where your data goes",
270
+ above).
271
+ 4. **Restart the app**, select Codex from the ChatGPT dropdown in the
272
+ desktop app (OpenAI documents this kind of tool there), and keep the
273
+ app's permissions on "Ask for approval".
274
+
275
+ [INSTALL.md, "ChatGPT's desktop app and Codex"](https://github.com/nicotem/exegete/blob/main/INSTALL.md#chatgpts-desktop-app-and-codex-experimental)
276
+ has each step, which OpenAI plans include these apps, and what to do if
277
+ Exegete does not start. This route is Experimental: it follows OpenAI's
278
+ documentation, read on 30 September 2026, and has not yet been tried by
279
+ this project. What the assistant reads goes to OpenAI ("Where your data
280
+ goes", above).
281
+
282
+ ### A first session
283
+
284
+ **A first project.** Creating a project is Experimental (new in 0.14,
285
+ and few people have used it yet). With the extension's settings as they
286
+ come, ask the assistant, for example: "Create a new QualCoder project
287
+ called Practice." It is made in QualCoder 4.0's format, in the
288
+ extension's "Folder for projects" (with OpenAI's apps, the folder in
289
+ your settings entry): by default a folder called "QualCoder projects"
290
+ in your home folder (the one named after you), not in Documents, which
291
+ iCloud or OneDrive may sync. QualCoder 3.8.2 opens it too, but shows a
292
+ code made under another code as an ordinary code; before you move such
293
+ a project between 3.8.2 and 4.0, read
294
+ ["Opening it in QualCoder" in TOOLS.md](https://github.com/nicotem/exegete/blob/main/TOOLS.md#starting-a-project-from-the-conversation-experimental).
295
+ The assistant asks for the coder name you use in QualCoder (in QualCoder's
296
+ Project menu, Settings, where it says "Current coder"; on a Mac it may
297
+ be under the QualCoder menu instead), so that what is coded through the
298
+ conversation is kept apart from what you code in QualCoder; if you do
299
+ not use QualCoder yet, say so, and the project is still created.
300
+ [TOOLS.md, "Starting a project from the conversation"](https://github.com/nicotem/exegete/blob/main/TOOLS.md#starting-a-project-from-the-conversation-experimental)
301
+ has the rules.
302
+
303
+ To see it in QualCoder: Project, Open Project, and choose
304
+ `Practice.qda` in that folder (on a Mac, Finder's Go menu, Home, opens
305
+ your home folder). Practise with text that is not from a participant: a
306
+ page you write yourself, or a published text you may use. Anything you
307
+ paste or attach goes to the AI provider in full (to Anthropic with
308
+ Claude, to OpenAI with ChatGPT's desktop app or Codex; "Where your data
309
+ goes", above).
310
+
311
+ **A project you already have.** Try the assistant on a practice
312
+ project first. For a real study, ask the assistant to copy your project
313
+ into its folder for projects and to work on the copy: your original is not
314
+ touched, and QualCoder opens the copy like any other project.
315
+
316
+ **One program at a time.** Before the assistant changes a project, close
317
+ that project in QualCoder. With QualCoder 3.8.2 an open project is
318
+ detected and the change is refused; the 4.0 beta cannot be detected, so
319
+ there only you can make sure. An open 4.0 window shows the assistant's
320
+ changes only once the project is opened again.
321
+
322
+ ### Other assistants, and updates
323
+
324
+ **Other assistants.** Claude Code, LM Studio (fully local) and other
325
+ MCP hosts (assistants that can use MCP tools), and Claude Desktop set
326
+ up by hand, take the Terminal route:
327
+ [INSTALL.md](https://github.com/nicotem/exegete/blob/main/INSTALL.md)
328
+ has each.
329
+
330
+ **Updating.** Updates are manual, and Exegete does not look for
331
+ new versions itself: look at the Releases page now and then (with a
332
+ GitHub account, Watch, then Custom, then Releases, sends you a notice
333
+ of each). Install the newer `.mcpb` the same way; on the Terminal
334
+ route, which OpenAI's apps take too,
335
+ [INSTALL.md, "Updating the MCP Server"](https://github.com/nicotem/exegete/blob/main/INSTALL.md#updating-the-mcp-server)
336
+ has the one command. An update never touches your projects. If you
337
+ used this program as qualcoder-mcp, nothing you set up stops working:
338
+ [INSTALL.md, "Coming from qualcoder-mcp"](https://github.com/nicotem/exegete/blob/main/INSTALL.md#coming-from-qualcoder-mcp)
339
+ says what changed and what you may change.
340
+
341
+ ## What it does that QualCoder does not
342
+
343
+ QualCoder has AI features of its own: in 3.8.2 an AI chat, and an AI
344
+ search that finds passages for you to code; in the 4.0 beta, an
345
+ assistant that changes the project from inside QualCoder's window,
346
+ within the AI permission you set there. In Exegete the work happens in
347
+ the conversation, with QualCoder closed, and QualCoder opens the same
348
+ project whenever you like, one program at a time. Beside the work the
349
+ two programs share (the table under "Three commitments" compares them
350
+ row by row), Exegete adds:
351
+
352
+ - **Suggestions that wait for your decision.** Each suggested coding is
353
+ checked to quote the file's text word for word and recorded with the
354
+ assistant's reading of it (explicit or interpretive); the assistant is
355
+ told to bring it to you with the passage, that reading and its
356
+ reason. Suggested codings, and proposed codes, wait in a review list
357
+ outside the project and are written only once approved in the
358
+ conversation. The assistant passes your decisions on:
359
+ Exegete records the approval the assistant reports and cannot
360
+ tell whether you gave it. So keep your assistant asking before each
361
+ change ("allow once" in Claude, and answering each prompt in Codex,
362
+ for the tools that decide and write:
363
+ `update_suggestion_status`, `update_proposal_status`, `apply_codings`
364
+ and `create_proposed_codes`), and before anything is applied, check
365
+ that the counts it shows (approved, rejected, pending) match what you
366
+ said. If they do not, say so and refuse `apply_codings` until they do:
367
+ no coding is written before it runs.
368
+ - **A preview before the larger changes.** Merging or deleting codes
369
+ and categories, replacing names in stored text, and restoring or
370
+ pruning backups each show first what would change, and go ahead only
371
+ if nothing has changed since the preview. (QualCoder 4.0's assistant
372
+ previews its deletions of codes and categories too.)
373
+ - **Replacing names in text you have already coded.** The names you
374
+ list are replaced in the stored text, every coding moves with the
375
+ words, and a count shows where the names you listed remain; other
376
+ details that identify people are not looked for. (QualCoder applies
377
+ its list of pseudonyms when a file is imported.)
378
+ - **Coder comparison**: per-code agreement between two coders, with
379
+ QualCoder's own coefficient and Cohen's kappa side by side.
380
+ - **Codings made through the conversation under a coder name you
381
+ choose** for each project, kept apart in QualCoder's coder lists from
382
+ the codings you make in QualCoder.
383
+
384
+ ## Three commitments
385
+
386
+ **Compatibility with QualCoder.** Exegete reads and writes
387
+ projects from QualCoder 3.8.2, the current release (project format v14),
388
+ from the QualCoder 4.0 beta (format v17), and in the formats between
389
+ (QualCoder's own format numbers; you need not know them). What a
390
+ project supports is read from the project itself, not from a version
391
+ number, and a project in a newer format is not written to until
392
+ Exegete has been checked against it. Where QualCoder has a rule,
393
+ Exegete follows it, and any departure is named with its reason.
394
+ [TOOLS.md, "Supported QualCoder versions"](https://github.com/nicotem/exegete/blob/main/TOOLS.md#supported-qualcoder-versions)
395
+ has the detail, including what differs with the 4.0 beta.
396
+
397
+ **Symmetry: the same work in either place, as a commitment.** The aim
398
+ is that the analytic work you can do in QualCoder, you can do from the
399
+ conversation. It is not yet a fact: today the two differ in both
400
+ directions, and each release moves rows. Checked on 29 September 2026,
401
+ this program's 0.14.0 (then called qualcoder-mcp) against QualCoder
402
+ 3.8.2 and the 4.0-Beta pre-release:
403
+
404
+ | | In QualCoder | From the conversation, with Exegete |
405
+ |---|---|---|
406
+ | Create a project | Yes | Yes, in the extension's default tool set (Experimental; from 0.14) |
407
+ | Import sources | Text, documents, PDFs, images, audio, video | Text the assistant hands over |
408
+ | Code text, including a PDF's text | Yes | Yes, once approved in the conversation, as the assistant reports it (not a PDF with no text layer) |
409
+ | Code images, audio, video, or an area of a PDF page | Yes | No |
410
+ | Codebook: create, rename, move, merge, delete | Yes | Yes, with a preview before merging or deleting; nesting an existing code under another is done in QualCoder |
411
+ | Cases, attributes, memos, annotations, journal | Yes | Yes, except deleting a case, an attribute or a journal entry, changing a journal entry, and taking a file out of a case |
412
+ | Reports | Many, in its Reports menu | Some: codebook, coding report, frequencies, case-by-code matrix, co-occurrence |
413
+ | REFI-QDA exchange (the file other analysis packages, such as ATLAS.ti, MAXQDA or NVivo, can open) | Import and export | Export only, being withdrawn (removed in 0.15) |
414
+ | Graphs | Yes | No |
415
+ | Comparing two coders | Per code, with a figure QualCoder labels Kappa | The same figure, and Cohen's kappa beside it; set against the AI coder name it is not agreement between independent coders |
416
+ | Pseudonyms | Applied when a file is imported | Also applied to text already coded |
417
+ | AI suggestions for coding | 3.8.2: an AI search finds passages, which you code; 4.0 beta: its assistant codes as it works, within the AI permission you set (read only stops it), with undo | Checked to quote the text word for word, and written only once approved in the conversation, as the assistant reports it |
418
+
419
+ **Interoperability.** Work on a project in QualCoder and from the
420
+ conversation, one at a time: close the project in QualCoder before the
421
+ assistant changes it. Exegete refuses to write while a released
422
+ QualCoder (3.8.2) has the project open; the 4.0 beta leaves no reliable
423
+ sign, so there it can only warn, and an open 4.0 window shows
424
+ Exegete's changes only after the project is opened again.
425
+ QualCoder's own export (Project, Export, REFI-QDA Project export)
426
+ writes the exchange file other analysis packages read. If you edit
427
+ transcripts in QualCoder 3.8.2's coding view, read
428
+ [its edit-mode caution](https://github.com/nicotem/exegete/blob/main/TOOLS.md#qualcoder-382-and-edit-mode-a-caution)
429
+ first: in that version, leaving edit mode after changing a text can
430
+ delete codings near its new end, whether or not Exegete is used.
431
+
432
+ **QualCoder's own MCP server** (checked 29 September 2026). QualCoder
433
+ 4.0's assistant works through an MCP server built into QualCoder. In
434
+ the 4.0-Beta pre-release (3 September 2026), that server serves only
435
+ QualCoder's own window. QualCoder's pull request (a proposed change to
436
+ its code) [#1571](https://github.com/ccbogel/QualCoder/pull/1571),
437
+ merged on 10 September 2026, adds a setting, off by default, that opens
438
+ it to MCP hosts on the same computer while QualCoder runs, for the
439
+ project open in QualCoder. It is on QualCoder's development version and
440
+ in no release yet; its author, kaixxx, proposes that QualCoder release
441
+ an official MCP server with QualCoder 4.0's final release.
442
+ [TOOLS.md, "Supported QualCoder versions"](https://github.com/nicotem/exegete/blob/main/TOOLS.md#supported-qualcoder-versions)
443
+ gives the commits these facts were read at.
444
+
445
+ This project welcomes QualCoder's own server, and is ready to
446
+ cooperate with QualCoder's developers. Exegete has an aim of its own:
447
+ that you can run a whole project, from its creation to the finished
448
+ analysis, from the conversation, with QualCoder as a companion that
449
+ opens the same project at any time. That is a direction, not yet a
450
+ fact: today QualCoder is still needed for several things, among them
451
+ bringing in documents, coding images, audio and video, and graphs
452
+ ("What you need, at each stage", above, lists them). On the way there,
453
+ the commitments above hold: every project stays a QualCoder project,
454
+ in QualCoder's format; Exegete follows QualCoder's rules and
455
+ names any departure with its reason; and you work on a project in one
456
+ program at a time.
457
+
458
+ ## Read next
459
+
460
+ - [INSTALL.md](https://github.com/nicotem/exegete/blob/main/INSTALL.md):
461
+ every way to install and set up, choosing your AI host, updating, and
462
+ what to do when it does not start.
463
+ - [TOOLS.md](https://github.com/nicotem/exegete/blob/main/TOOLS.md):
464
+ every tool, what it reads and writes, how the tools follow QualCoder's
465
+ conventions, and example requests.
466
+ - [AI_CODING_GUIDE.md](https://github.com/nicotem/exegete/blob/main/AI_CODING_GUIDE.md)
467
+ and [AI_CODING_WORKFLOW.md](https://github.com/nicotem/exegete/blob/main/AI_CODING_WORKFLOW.md):
468
+ the coding loop, with example conversations.
469
+ - [PRIVACY.md](https://github.com/nicotem/exegete/blob/main/PRIVACY.md):
470
+ where your data goes, in full.
471
+ - [CHANGELOG.md](https://github.com/nicotem/exegete/blob/main/CHANGELOG.md):
472
+ what changed in each release.
473
+ - [CONTRIBUTING.md](https://github.com/nicotem/exegete/blob/main/CONTRIBUTING.md):
474
+ reporting problems, proposing changes, and how the project is built
475
+ and tested.
476
+ - [SUPPORT.md](https://github.com/nicotem/exegete/blob/main/SUPPORT.md):
477
+ GitHub Issues only.
478
+ - [NOTICE](https://github.com/nicotem/exegete/blob/main/NOTICE):
479
+ every routine, value and fact of the file format taken from QualCoder.
480
+
481
+ ## What comes next
482
+
483
+ - v0.15: undo for what a session did; when names are replaced,
484
+ choosing which places to leave as they are; and the removal of the
485
+ tools and options 0.14 marks as going (TOOLS.md names each, the
486
+ REFI-QDA export among them)
487
+ - v0.16: more of the work from the conversation: codes that occur
488
+ together, the code tree and code counts by attribute, as tables;
489
+ PDF text labelled as QualCoder's extraction; and counts of the places
490
+ replacing names cannot reach
491
+ - v0.17: a Manual, and codings placed by the words quoted rather than
492
+ by position
493
+ - Later: coding images, audio, video and areas of PDF pages; more work
494
+ alongside QualCoder 4.0; and changes testers ask for
495
+ ([file yours](https://github.com/nicotem/exegete/issues))
496
+
497
+ ## Disclaimer
498
+
499
+ This software is provided "as is", without warranty of any kind, express or implied. The authors accept no responsibility or liability for any damage, data loss, or other issues arising from the use of this software. Users are solely responsible for ensuring the integrity and backup of their QualCoder projects. Always work on copies of your data, not originals.
500
+
501
+ ## Licence
502
+
503
+ From v0.13, Exegete is licensed under the GNU Lesser General Public License, version 3 or (at your option) any later version (`LGPL-3.0-or-later`), which is QualCoder's own licence. The licence texts are [COPYING.LESSER](https://github.com/nicotem/exegete/blob/main/COPYING.LESSER) and the GNU General Public License, version 3, which the Lesser licence incorporates: [legal/GPL-3.0.txt](https://github.com/nicotem/exegete/blob/main/legal/GPL-3.0.txt) in this repository, and the same text at [https://www.gnu.org/licenses/gpl-3.0.txt](https://www.gnu.org/licenses/gpl-3.0.txt).
504
+
505
+ Every release up to and including 0.12.1 was published under the MIT License, and this project's own code in those releases remains available under those terms. Those releases also contained some of the QualCoder-derived items NOTICE lists; those items were always under QualCoder's licence, LGPL-3.0-or-later, whatever those releases declared.
506
+
507
+ Exegete is a separate program that reads and writes QualCoder project files. It does not include QualCoder, but it contains code derived from QualCoder: a small number of routines and values taken from QualCoder so that its results match QualCoder's exactly. [NOTICE](https://github.com/nicotem/exegete/blob/main/NOTICE) lists them, with the QualCoder file and lines each comes from.
508
+
509
+ Nothing changes for anyone who installs and runs the server. The licence's conditions apply only to someone who distributes it, and in practice they matter for a modified version: whoever distributes one must make its source available under the same licence.
510
+
511
+ ## Acknowledgements
512
+
513
+ - [QualCoder](https://github.com/ccbogel/QualCoder) by Dr. Colin Curtain and Dr. Kai Dröge ([homepage](https://qualcoder.wordpress.com/))
514
+ - [Model Context Protocol](https://modelcontextprotocol.io/) by Anthropic
515
+ - [Claude Desktop](https://claude.ai/download) by Anthropic
@@ -0,0 +1,24 @@
1
+ exegete/__init__.py,sha256=3t8bYLVRrQsIciwVUHYcR7NdAWA-Oicn5rXx-izCpLE,683
2
+ exegete/coder_comparison.py,sha256=APoezDYildHgVGiGyEZB7T0aDnorSxYAp2RPFjmFm_c,9262
3
+ exegete/cursors.py,sha256=O4sUYpuIkVGBl-oi0N_GB56nwessqldvm8OlcafXVD0,9619
4
+ exegete/database.py,sha256=Vo_Lk8KfFR8SKu1T70hlfZORcYY0TNb5OMCpaQvnhj8,595957
5
+ exegete/env_settings.py,sha256=0T_oqQkWISj-b7LfRwRIVd7LMJTW01wFWi8Ui3b1epg,6279
6
+ exegete/memo_privacy.py,sha256=sVspCAW4S8B_4Bv31VSCsxUaugfECKdJy5GBM6HkXg0,10300
7
+ exegete/names.py,sha256=_kMda__RCTQjl3ZXSHwebKPXPpkAw8S__Ss8Pq6ckXA,3125
8
+ exegete/new_project.py,sha256=fMGLR9Hspb9VoCGPWlpEDrRORRGv-CWbl9Thmki7wXM,45433
9
+ exegete/preview_tokens.py,sha256=X726fJ_LP2GDUKF6vPYPsF7TNsmuxOhm4SbhBlAhLQw,26820
10
+ exegete/project_settings.py,sha256=5JMYiN0cm37PyR96MJmjj1zvQlEn7cb9XNUjEc2ZqPc,46117
11
+ exegete/pseudonymise.py,sha256=17gvfCJhrJWJXQdAL2EAU5VlePLZ6BVkfTLPIv8eiuM,134231
12
+ exegete/refi_export.py,sha256=4RDJyJBA54uQ7CBkn93sW1N1WL4sf92RKwOHjt2uaxk,25740
13
+ exegete/server.py,sha256=G4U6O2R7QsazCKyiwlL2O4dv8eVe8LUMklQRfeJIu9c,908778
14
+ exegete/sessions.py,sha256=9YUwxzNae--O35wBVtKrk1lyCF52-wIyNVVF-9LqleA,49080
15
+ exegete/state_folder.py,sha256=HW8FxgZTMgD2SFrDkDydS3haRj27ywsta8seEx61Oho,15192
16
+ exegete/transition.py,sha256=GlCuhPRaBLSc_U3-jZ1bCZ8s3XVLZswmEi_KAEoaWaI,43286
17
+ exegete-0.14.1a0.dev1.dist-info/licenses/COPYING.LESSER,sha256=46mU2C5kSwOnkqkw9XQAJlhBL2JAf1_uCD8lVcXyMRg,7652
18
+ exegete-0.14.1a0.dev1.dist-info/licenses/NOTICE,sha256=iHvd9I0AbzGWpx2aXBfgMoyVH2KOXqmXp5p40MMQkAU,36498
19
+ exegete-0.14.1a0.dev1.dist-info/licenses/legal/GPL-3.0.txt,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
20
+ exegete-0.14.1a0.dev1.dist-info/METADATA,sha256=FVeXFJlgG5Gu_G5TpIL8jh5Hy3lMxMe5i93CqPNX-tU,31228
21
+ exegete-0.14.1a0.dev1.dist-info/WHEEL,sha256=YVMoNqKzERt-wjUZwJ33xBGAwnFl-4cqbYkTtWa4itE,91
22
+ exegete-0.14.1a0.dev1.dist-info/entry_points.txt,sha256=MAc7XmplQMneMzl0E9c304E-uU2xSkItaH1GnnFHuuM,48
23
+ exegete-0.14.1a0.dev1.dist-info/top_level.txt,sha256=-JQG9D34frc3OtY1IFGuopblrU6WE1n5F-yiQGDUA6Y,8
24
+ exegete-0.14.1a0.dev1.dist-info/RECORD,,
@@ -0,0 +1,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (84.0.0)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ exegete = exegete.server:main