Skip to Content
Pangur docs

MCP tools

This page lists every tool that Pangur's MCP server offers a connected assistant, with what each one does, whether it reads or adds, and its main parameters.

Pangur's MCP server offers a connected assistant 132 tools. You do not normally call them yourself. The assistant chooses which tools to call from their names and descriptions, and this page is for seeing what it can do in your library and for looking up a tool it has used. For how an assistant connects, and the rules it works under, see Assistants and Pangur.

Reading the tables

Each table lists one group of tools. The Kind column says what a tool may do:

  • Reads tools only read. Your MCP client sees them marked read-only.
  • Writes tools add something to your library, such as a reference, a note, a document version or a mark. None of them deletes or overwrites an item, note, file, document or transcription. When a tool revises one of these, the earlier state is kept. A few of them record a choice in Pangur's own structures, such as a value on an arrangement node, a node's position or which copy is the reading copy. Viewers in an organisation project cannot use these tools.
  • Writes, viewers too tools add something of your own, such as a document, and remain open to viewers in an organisation project, as the same actions are in the web app.

In the Main parameters column, an asterisk marks a required parameter. Optional paging parameters such as limit, offset and start are listed where a tool has them.

No tool runs Pangur's own language or vision model. Wherever the web app would use a model, the tool instead returns the material and instructions, and the assistant's own model does the work. Text that a tool returns from your library is data for the assistant to quote and cite, not instructions for it to follow.

The project argument

Every tool works in your default project, the one you opened last, unless its optional project argument names another project by the id or address that list_projects returns. Every tool takes project except list_projects and reference_template. The project argument is left out of the tables below.

If the project is scoped to one collection, every tool works inside that collection: reads outside it are refused and new items are filed into it.

Finding and reading sources

search and fetch are the two tools ChatGPT's deep research expects, under those exact names. The other tools read items, attachments and their text in more detail.

ToolKindWhat it doesMain parameters
searchReadsSearches the library's titles, creators and years and returns ids to pass to fetch. Every word must match.query*
fetchReadsReturns a search result's bibliographic details and text: the first window of its main file's text, or its abstract. For a long document it says how to read the rest with get_attachment_text.id*
search_itemsReadsSearches or browses top-level items, filtered by item type or tag and sorted by title, creator, type, date or when they were added or changed. Each result says which attachments it has.query, item_type, tag, collection_key, sort, direction, limit, start
get_itemReadsReturns one item's full details, optionally with its formatted citation or bibliography entry.item_key*, include
get_item_childrenReadsLists an item's notes and attachments, and says which text the item is read from (a TEI edition, a transcription or a file's text) and whether it has page images to transcribe.item_key*
get_item_attachmentsReadsLists an item's attachments and says which can be downloaded or read as text.item_key*
get_attachment_textReadsReturns a window of an attachment's readable text. A long document is read by calling again from the next offset until nothing is left.attachment_key*, offset, max_chars
download_attachmentReadsReturns an attachment as text, or as the whole file encoded in base64. Suited to small files.attachment_key*, as_
get_transcriptReadsReturns a recording's transcript as timed segments with speakers where they were identified. It never starts a transcription; a recording has one only after someone asked for it in the reader.attachment_key*, start_seconds, end_seconds
query_datasetReadsDescribes a dataset attachment (CSV, spreadsheet, Parquet, JSON or JSON Lines) that Pangur has read, or runs one SQL SELECT against one of its sheets. Nothing can be written.attachment_key*, sql, sheet, max_rows
list_projectsReadsLists your projects with their ids, addresses and your role in each, and says which one the tools are working in.—
list_collectionsReadsLists the library's collections, or the sub-collections of the collection the project is scoped to.—
list_collection_itemsReadsLists the items in one collection.collection_key*, limit, start
list_collection_sourcesReadsLists every top-level item in a collection with its details and whether its full text is available, for working through a whole collection.collection_key
list_tagsReadsLists the tags on the library's items, optionally only those containing a word. These are item tags, not research tags.query, limit, start

Citations and references

ToolKindWhat it doesMain parameters
get_bibliographyReadsFormats citations and bibliography entries for items in any CSL style, such as apa, chicago-author-date, mla, vancouver or ieee.item_keys*, style, locale
get_csl_jsonReadsReturns items as CSL-JSON.item_keys*
export_referencesReadsReturns references as the text of a BibTeX, BibLaTeX, RIS or CSL-JSON file: a selection, one collection, or the whole library.format, item_keys, collection_key
get_referencesReadsLists the works a stored PDF cites, combining OpenAlex's citation data with the printed bibliography or footnotes. Each work is marked as in the library, importable, a primary source (an archival manuscript) or unresolved.attachment_key, item_key, refresh
scan_referencesReadsLists the works any other document cites: pasted text, a reference file's text, or a public web page or PDF, with the same statuses as get_references. Nothing is added.text or url, refresh

Adding references, notes and collections

ToolKindWhat it doesMain parameters
reference_templateReadsReturns the fields and creator types an item type accepts, as a blank to fill in before create_reference.item_type*
create_referenceWritesCreates a reference from the fields given.item_type*, fields, creators, tags, collection_keys
upload_attachmentWritesStores a small file, sent in base64, as an attachment, under an item or on its own. For larger files use request_upload_url.filename, content_base64, parent_item_key, title, content_type
attach_linkWritesAttaches a web link to an item, or adds it on its own.url*, title, parent_item_key
create_noteWritesCreates a note, under an item or on its own. A repeated call with the same key returns the note already made.html*, parent_item_key, tags, key
create_collectionWritesCreates a collection, at the top level or under another.name*, parent_collection_key
add_to_collectionWritesAdds items to a collection. They stay in their other collections.item_keys, collection_key
find_book_chaptersReadsLooks up a book's chapters in OpenAlex, with a page map when the book has a PDF. Creates nothing.book_key*
split_book_into_sectionsWritesCreates a book section for each confirmed chapter and, if asked, attaches the matching pages of the book's PDF to each.book_key, sections, attachment_key, slice_pdf
create_book_from_sectionWritesCreates a book item from a book section's book title, editors, publisher and related fields. The section is unchanged.section_key*

Importing works and files

These tools bring new works into the library from outside catalogues and from files you hold. After a save, Pangur looks for a PDF, trying open-access copies first and then your institutional access (the order and the outcomes are in Where PDFs come from).

ToolKindWhat it doesMain parameters
import_searchReadsSearches OpenAlex and the book catalogues (Open Library, the Library of Congress and K10plus) for works to add. provider="estc" searches the English Short Title Catalogue for books printed before 1801.query*, limit, provider
import_lookupReadsResolves a DOI, ISBN, PMID, arXiv id or ESTC number to a catalogue record ready to save.identifier*
import_grabReadsWorks out which work a web page describes and whether it offers a PDF, and says if the library already has it.url*
import_saveWritesSaves a work found by search or lookup, or given by DOI or ISBN, and by default looks for its PDF. If the work is already in the library, nothing is created unless a duplicate is asked for.candidate_token or identifier, collection_key, resolve_pdf, allow_duplicate
import_statusReadsShows recent saves, or one, with whether a PDF was attached and where it came from.job_id, item_key, limit
import_referencesWritesImports many references as one background batch, for example the importable works get_references found.refs*, source, collection_key, fetch_pdfs
import_batch_statusReadsShows the progress of bulk imports, or one batch with the outcome of each entry.batch_id, limit
find_import_pdfsWritesLooks for open-access PDFs for the references a finished bulk import saved without looking.batch_id*
request_ingest_urlsWritesStarts bringing in your own files, up to 50 at a time. Returns an upload address for each file, valid for an hour; Pangur then identifies each uploaded file and creates or matches its reference.files*, collection_key
ingest_statusReadsShows what happened to ingested files, including what Pangur could see of a file it could not identify.group_id, ingest_id, limit
ingest_resolveWritesGives an unidentified file its reference, or files it under an item already in the library.ingest_id*, candidate_token, identifier, item_key, reference, allow_duplicate
request_upload_urlWritesReturns an address, valid for 15 minutes, where you can upload a file to attach to an existing item, such as a PDF downloaded through your library. Large files go up in parts.item_key, filename, content_type, shrink
request_upload_urlsWritesDoes the same for up to 50 files at once.files*

Background work

ToolKindWhat it doesMain parameters
list_tasksReadsLists background work in the project, such as PDF searches, imports, exports, summaries, analyses and transcriptions, with each task's state and a link to its result.active_only, limit
get_taskReadsReturns one task's progress, or its summary and link once it has finished.task_id*

Ask, the library map and summaries

ToolKindWhat it doesMain parameters
ask_libraryReadsReturns ranked passages that bear on a question, with the library map, for the assistant to write the answer from. With thread_id, it also returns the conversation's recent turns.question*, thread_id
library_mapReadsReturns the library map: one line per work saying what it covers, or the full entries for the works named.item_keys
summarise_itemWrites, viewers tooReturns instructions for the assistant to read a work and write its summary itself. The long summary with checked quotations is made in Pangur, where it counts against your plan.item_key*, depth, attachment_key
list_ask_threadsReadsLists your Ask conversations, newest first.limit
get_ask_threadReadsReturns one conversation's questions and answers, the sources each answer cited, and the passages assistants marked in it.thread_id*
record_ask_turnWritesAdds the assistant's answer to an Ask conversation, or starts a new one. The answer appears in Ask labelled as the assistant's and does not count against your plan.question, answer_markdown, sources, thread_id, tags

Marks and research tags

Research tags say what a highlight, mark, analysis unit or answer is about, as a dimension and a name: person:John Milton, date:January 1649, place:Whitehall. The writing desk uses them to bring material back when you write about the same subject.

ToolKindWhat it doesMain parameters
list_annotationsReadsLists your highlights on a file, with your comments, and the passages assistants have marked on it.attachment_key*, query
mark_passageWritesMarks a passage, found by quoting it exactly, for you to see in the reader. The mark sits beside your highlights, labelled as the assistant's, until you keep or dismiss it.attachment_key, quote, comment, page, thread_id, tags
list_research_tagsReadsLists the project's research tags, most used first.query, dimension, limit
tag_passageWritesAdds research tags to a highlight, an assistant's mark, an analysis unit or an Ask answer. Tags can be added but not removed.target_kind, target_id, tags*

Manuscripts, facsimiles and transcription

These tools find a manuscript's digitised leaves, show them to the assistant, and save transcriptions. The division of labour is that Pangur detects the lines on a leaf and the assistant's own model reads them, which is the same two steps a person takes on the transcription desk.

ToolKindWhat it doesMain parameters
manuscript_facsimileReadsSays whether the library has a facsimile for a manuscript, given an item or a repository and shelfmark as a footnote writes them, and lists its sources: repository IIIF images, your photographs or uploaded files.item_key, repository, shelfmark
manuscript_leavesReadsPages through a facsimile's leaves, optionally finding one by its folio label.item_key, repository, shelfmark, query, source_key, offset, limit
manuscript_leafReadsReturns one leaf, or a region of it, as an image, optionally with the ink enhanced.canvas_index*, item_key, repository, shelfmark, region, enhance, source_key
manuscript_leaf_tilesReadsReturns the regions that divide a leaf into full-resolution tiles in reading order, for reading dense script tile by tile.canvas_index*, item_key, repository, shelfmark, region, tile_px, source_key
link_manuscript_facsimileWritesLinks a digital library's viewer or IIIF manifest to a manuscript's shelfmark, so every citation of that volume can reach it.url*, item_key, repository, shelfmark, create_item
transcribe_manuscript_leafWritesDetects the lines on one leaf and returns each line's region with the reading conventions, for the assistant to read.item_key, canvas_index, source_key
save_manuscript_leaf_readingWritesSaves the assistant's reading onto a leaf's detected lines. Existing text is first saved as a version, lines an editor corrected keep the editor's reading, and the new lines are marked as a model's reading.item_key, canvas_index, reading*, source_key
get_manuscript_transcriptionReadsReturns the saved transcription for one facsimile source, line by line.item_key*, source_key
list_manuscript_transcription_versionsReadsLists the named versions of a transcription.item_key*, source_key
get_manuscript_transcription_versionReadsReturns one named version with its pages and lines.item_key, version_id, source_key
create_manuscript_transcription_versionWritesSaves the current transcription as a new named version that cannot be changed.item_key, label, source_key
export_transcriptionReadsExports a transcription as TEI P5, PAGE XML, ALTO or plain text, without the page images.item_key*, format, reading, source_key, version_id, pages
temporary_page_linkWrites, viewers tooReturns a link to one page image that works for 30 minutes, for correcting a text in ESTC. Pangur checks permission again when the link is used.item_key, source_key, canvas*

ESTC and TEI texts

ToolKindWhat it doesMain parameters
import_estc_collectionWritesImports an ESTC collection, with its TEI texts, into a library collection and an analysis corpus, as a background task.manifest*
import_tei_textWritesImports an ESTC TEI bundle into an item and records which source revision it came from.item_key, bundle
list_tei_textsReadsLists an item's TEI texts with their source revisions and latest revision numbers.item_key*
read_tei_textReadsReturns one TEI revision with its links between pages and images.item_key, text_id, revision
revise_tei_textWritesAdds a corrected revision of a TEI text, keeping the original and every earlier revision.item_key, text_id, expected_revision, tei, page_map
align_tei_pageReadsProposes which TEI words match the lines detected on a page image, and lists the words it could not match. Changes nothing.item_key, text_id, revision, ordinal, source_key, canvas
export_tei_textReadsExports one corrected revision for import into ESTC.item_key, text_id, revision

Reading texts in order

ToolKindWhat it doesMain parameters
reading_sequenceReadsLists what to read and in which order: chosen items, a corpus's sources or records, or an arrangement in its editors' order.item_keys, corpus_id, perspective_id, node_id, grain, view, at, entity_id, role, start, end, order
read_textReadsReturns an item's text as blocks (headings, paragraphs, verse lines) with the page each starts on, from its TEI edition, transcription, record or file.item_key*, unit, style, offset, limit, corpus_id, record_id, reading_id, manifest_id, attestation_id, node_id
find_in_textReadsFinds every occurrence of a word or phrase in an item's text, ignoring case and accents, with the page and the words around it.item_key, query, offset, limit, unit, style, corpus_id, record_id, reading_id, manifest_id, attestation_id, node_id

Analysis and corpora

A corpus is a named set of sources that are analysed together for people, places, dates and events (How analysis works). The assistant can read a corpus's results, or it can analyse a source with its own model and submit what it found, which is described in Source inventories and assistant-submitted analysis.

ToolKindWhat it doesMain parameters
list_corporaReadsLists the project's corpora with how many sources each holds and how many have been analysed.—
corpus_eventsReadsLists the events a corpus's sources describe, in date order, each with its quotation.corpus_id*, start, end, entity_id
item_eventsReadsLists the events one analysed source describes, in the order of its text, including those a reader rejected.item_key*, unit
corpus_recordsReadsQueries a corpus's records (letters, books, sermons, events) by who wrote or spoke and to whom, places, record type and date.corpus_id*, filters, offset, limit
corpus_networkReadsReturns the network of who wrote or spoke to whom, with a link to the graph in Pangur.corpus_id*, filters
corpus_timelineReadsReturns records on a time axis, with their original dates and uncertain intervals.corpus_id*, filters, offset, limit
corpus_geographyReadsReturns the places of a corpus's records and events, filtered by dates, with the evidence for each.corpus_id*, start, end, layer
corpus_seriesReadsCounts records or attestations by person, place, activity or source over days, months or years. The counts are of the corpus, not of a population.corpus_id*, filters, interval, grouping, measure
corpus_conceptsReadsLists what a corpus is about, by where each concept came from, with its evidence and the verdict of any test.corpus_id*
corpus_datingReadsReturns the corpus's dating assertions, their alternatives and the current revision.corpus_id*
get_analysis_evidenceReadsReturns one record in full: all its parts, witnesses and evidence.corpus_id, record_id, reading_id, manifest_id
source_inventoriesReadsReturns a corpus's source inventories and import receipts, for resuming an import or exporting exact source revisions.corpus_id*, import_key, with_payload
update_analysis_contextWritesSets the historical period, regions and other context for a corpus before analysis and place matching.corpus_id, guidance
analysis_materialsReadsReturns the exact units of a source's text for the assistant to analyse with its own model, with the values to pass back to submit_analysis.item_key*, marker, offset, limit, corpus_id, boundaries
plan_analysis_recordsReadsChecks proposed record boundaries against the source's text before analysis. Changes nothing.item_key, source_hash, boundaries*, corpus_id
submit_analysisWritesSaves the assistant's analysis of a source into Pangur Analysis, a few units at a time. Quotations must be exact.analysis*
get_analysis_submissionReadsShows which units of an earlier submission are saved and which are missing, so it can be resumed.item_key, submission_key
resolve_analysis_placesWritesMatches a corpus's place names to places in the light of its context, and maps the ones with a single match. Decisions a person made are kept.corpus_id*, refresh
suggest_conceptWritesSuggests a concept for a corpus. Pangur counts its expressions straight away; the blind test waits until you ask for it in Pangur.corpus_id, label, description*, variants
revise_corpus_datingWritesAdds a dating revision with its assertions and reason.corpus_id, revision
stage_source_inventoryWritesStages a source inventory without changing the live corpus.corpus_id, manifest
activate_source_inventoryWritesMakes a staged inventory live, as a new revision that can be rolled back. Refused if the corpus changed in between.corpus_id, manifest_id, expected_version*
rollback_source_inventoryWritesRestores the previous inventory as a new revision, keeping both.corpus_id, expected_version

Documents

ToolKindWhat it doesMain parameters
list_documentsReadsLists the project's documents, newest first, optionally only those of one kind or drawing on one item.kind, item_key, limit, start
get_documentReadsReturns a document's text, the items it drew on and its version history.document_id*, version
create_documentWrites, viewers tooSaves a piece of writing, such as a summary or literature review, as a document with the sources it drew on, and returns a link to it. A copy is also filed as a note.body_markdown*, title, kind, sources, prompt
append_to_documentWrites, viewers tooSaves a new version of a document with the full new text. The earlier versions stay readable.document_id, body_markdown, title, sources, prompt

Exhibitions

An assistant can build an exhibition draft, but it cannot publish the exhibition, apply a design to it, or place image, gallery, audio or video blocks.

ToolKindWhat it doesMain parameters
list_exhibitionsReadsLists the project's exhibitions with their status: draft, published or unpublished.—
get_exhibitionReadsReturns an exhibition's draft: its sections in order, each with its blocks.exhibition_id*
create_exhibitionWritesStarts an exhibition draft.title*, subtitle, summary_markdown
add_exhibition_sectionWritesAdds a section to a draft.exhibition_id*, title, kicker
add_exhibition_blockWritesAdds a block to a section, such as text, a heading, a quotation, a document, a IIIF leaf, a bibliography, a table or a chart.exhibition_id, section_id, block_type, content, item_key, attachment_key, document_id
compose_exhibitionWritesReturns instructions for the assistant to build a draft from a brief and sources itself. Pangur composes nothing over MCP.exhibition_id, brief, sources, document_ids, answer, deep
get_exhibition_designReadsReports a design composed in Pangur and how far its reading has got.exhibition_id, version

An arrangement is a tree of levels and nodes in which you order sources your own way, alongside the built-in Library and Catalogue views.

ToolKindWhat it doesMain parameters
list_perspectivesReadsLists the library's arrangements: the Library, the Catalogue and every custom arrangement with its levels.—
get_perspectiveReadsReturns one arrangement's levels and fields and its whole tree of nodes, each with the values it inherits.perspective_id*
create_perspectiveWritesCreates an arrangement, optionally with its levels.name*, description, levels, flexible
add_perspective_levelWritesAdds a level below an arrangement's deepest one.perspective_id, name, fields
add_perspective_nodeWritesAdds a node, at the top or under another node. A node can stand for an item, a manuscript, a leaf, a region of a leaf or a span of text, or for nothing but its label.perspective_id*, label, parent_node_id, item_key, manuscript_id, source_key, canvas_index, region, values, char_start, char_end
arrange_textsWritesDivides an item's text into separate texts and places them under a node for the item.perspective_id, item_key, spans, from_analysis, parent_node_id
set_perspective_node_valuesWritesRecords values in a node's fields.node_id, values
move_perspective_nodeWritesMoves a node under another parent at the same level, or to another position among its siblings.node_id*, parent_node_id, sequence_index
create_vocabularyWritesCreates a controlled vocabulary, a named list of terms that arrangement fields can use.name, terms
list_record_link_targetsReadsFinds catalogue and arrangement records that an item could be linked to.query
list_library_record_linksReadsLists the links from an item to records, or from a record to items.item_key, kind, record_id
link_library_recordWritesLinks an item to a catalogue or arrangement record.item_key, kind, record_id*
list_source_groupsReadsLists the project's source groups and their members in order.—
save_source_groupWritesCreates a source group, or adds and reorders its members. Members cannot be removed over MCP.label, client_key, members*, kind, values, group_id, expected_revision

Copies and parts

A copy is a set of files that together show a resource. An afternoon's photographs of a manuscript are a copy, and so is a library's digitisation of a book. The tools call a copy a surrogate set and each file in it a surrogate; the terms are explained in Resources, copies and surrogates.

ToolKindWhat it doesMain parameters
list_surrogate_setsReadsLists everything that shows a resource: its parts, its copies with their method, purpose and relation to earlier copies, their surrogates, and which surrogate is shown for each part.resource*, role, purpose, part_id
create_surrogate_setWritesStarts a copy for a resource. A copy can correct an earlier one (its images replace the earlier copy's for the parts it covers) or supplement it (it adds another view and replaces nothing).resource, title, made_at, made_by, holder, method, purpose, relation, relation_to_id
add_to_surrogate_setWritesFiles photographs or library files of the same resource in a copy. A file already in another copy of that resource moves to this one.set_id*, capture_ids, attachment_keys
describe_surrogateWritesRecords what one surrogate shows: the part, its role (such as verso or watermark), a region, or the surrogate it retakes.surrogate_id*, depicts_part_id, role, region, replaces_id
set_reading_copyWritesMakes a copy the resource's reading copy, the one the Read tab opens first.set_id*
add_resource_partsWritesAdds parts, such as pages, leaves or faces, to a resource that is not a catalogued manuscript.resource, labels, kind

On this page