@baruchiro/paperless-mcp
Version:
Model Context Protocol (MCP) server for interacting with Paperless-NGX document management system. Enables AI assistants to manage documents, tags, correspondents, and document types through the Paperless-NGX API.
64 lines (63 loc) • 3.74 kB
TypeScript
import { AxiosResponse } from "axios";
import { BulkEditDocumentsResult, BulkEditParameters, Correspondent, CustomField, Document, DocumentsResponse, DocumentType, GetCorrespondentsResponse, GetCustomFieldsResponse, GetDocumentTypesResponse, GetMailAccountsResponse, GetMailRulesResponse, MailAccount, MailRule, GetTagsResponse, Note, Tag } from "./types";
export declare class PaperlessAPI {
private readonly baseUrl;
private readonly token;
private readonly apiVersion;
constructor(baseUrl: string, token: string);
request<T = any>(path: string, options?: RequestInit): Promise<T>;
bulkEditDocuments(documents: number[], method: string, parameters?: BulkEditParameters): Promise<BulkEditDocumentsResult>;
postDocument(document: Buffer, filename: string, metadata?: Record<string, string | string[] | number | number[]>): Promise<string>;
getDocuments(query?: string): Promise<DocumentsResponse>;
getDocument(id: number): Promise<Document>;
updateDocument(id: number, data: Partial<Document>): Promise<Document>;
downloadDocument(id: number, asOriginal?: boolean): Promise<AxiosResponse<ArrayBuffer>>;
getThumbnail(id: number): Promise<AxiosResponse<ArrayBuffer>>;
/**
* Retrieve all notes attached to a document.
* @param documentId - The document ID.
* @returns The document's notes.
*/
getDocumentNotes(documentId: number): Promise<Note[]>;
/**
* Create a note on a document.
* @param documentId - The document ID.
* @param note - The note text to add.
* @returns The document's full notes list after creation.
*/
createDocumentNote(documentId: number, note: string): Promise<Note[]>;
/**
* Delete a note from a document by its note ID.
* @param documentId - The document ID.
* @param noteId - The ID of the note to delete.
* @returns The document's remaining notes after deletion.
*/
deleteDocumentNote(documentId: number, noteId: number): Promise<Note[]>;
getTags(): Promise<GetTagsResponse>;
createTag(data: Partial<Tag>): Promise<Tag>;
updateTag(id: number, data: Partial<Tag>): Promise<Tag>;
deleteTag(id: number): Promise<void>;
getCorrespondents(queryString?: string): Promise<GetCorrespondentsResponse>;
getCorrespondent(id: number): Promise<Correspondent>;
createCorrespondent(data: Partial<Correspondent>): Promise<Correspondent>;
updateCorrespondent(id: number, data: Partial<Correspondent>): Promise<Correspondent>;
deleteCorrespondent(id: number): Promise<void>;
getDocumentTypes(): Promise<GetDocumentTypesResponse>;
createDocumentType(data: Partial<DocumentType>): Promise<DocumentType>;
updateDocumentType(id: number, data: Partial<DocumentType>): Promise<DocumentType>;
deleteDocumentType(id: number): Promise<void>;
getMailAccounts(queryString?: string): Promise<GetMailAccountsResponse>;
getMailAccount(id: number): Promise<MailAccount>;
processMailAccount(id: number): Promise<void>;
getMailRules(queryString?: string): Promise<GetMailRulesResponse>;
getMailRule(id: number): Promise<MailRule>;
createMailRule(data: Partial<MailRule>): Promise<MailRule>;
updateMailRule(id: number, data: Partial<MailRule>): Promise<MailRule>;
deleteMailRule(id: number): Promise<void>;
getCustomFields(): Promise<GetCustomFieldsResponse>;
getCustomField(id: number): Promise<CustomField>;
createCustomField(data: Partial<CustomField>): Promise<CustomField>;
updateCustomField(id: number, data: Partial<CustomField>): Promise<CustomField>;
deleteCustomField(id: number): Promise<void>;
bulkEditObjects(objects: any, objectType: any, operation: any, parameters?: {}): Promise<any>;
}