@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.
206 lines (205 loc) • 5.56 kB
TypeScript
export declare const MATCHING_ALGORITHM_OPTIONS: {
readonly 0: "None";
readonly 1: "Any word";
readonly 2: "All words";
readonly 3: "Exact match";
readonly 4: "Regular expression";
readonly 5: "Fuzzy word";
readonly 6: "Automatic";
};
export type MatchingAlgorithm = keyof typeof MATCHING_ALGORITHM_OPTIONS;
export declare const MATCHING_ALGORITHM_DESCRIPTION: string;
export interface Tag {
id: number;
slug: string;
name: string;
color: string;
text_color: string;
match: string;
matching_algorithm: MatchingAlgorithm;
is_insensitive: boolean;
is_inbox_tag: boolean;
document_count: number;
owner: number | null;
user_can_change: boolean;
}
export interface CustomField {
id: number;
name: string;
data_type: string;
extra_data?: Record<string, unknown> | null;
document_count: number;
}
export type CustomFieldValue = string | number | boolean | number[] | null;
export interface CustomFieldInstance {
field: number;
value: CustomFieldValue;
}
export interface CustomFieldInstanceRequest {
field: number;
value: CustomFieldValue;
}
export interface PaginationResponse<T> {
count: number;
next: string | null;
previous: string | null;
all: number[];
results: T[];
}
export interface GetTagsResponse extends PaginationResponse<Tag> {
}
export interface GetCustomFieldsResponse extends PaginationResponse<CustomField> {
}
export interface BasicUser {
id: number;
username: string;
first_name?: string;
last_name?: string;
}
export interface Note {
id: number;
note: string;
created: string;
user: BasicUser;
}
export interface DocumentsResponse extends PaginationResponse<Document> {
}
export interface Document {
id: number;
correspondent: number | null;
document_type: number | null;
storage_path: string | null;
title: string;
content: string | null;
tags: number[];
created: string;
created_date: string;
modified: string;
added: string;
deleted_at: string | null;
archive_serial_number: string | null;
original_file_name: string;
archived_file_name: string;
owner: number | null;
user_can_change: boolean;
is_shared_by_requester: boolean;
notes: Note[];
custom_fields: CustomFieldInstance[];
page_count: number;
mime_type: string;
__search_hit__?: SearchHit;
}
export interface SearchHit {
score: number;
highlights: string;
note_highlights: string;
rank: number;
}
export interface Correspondent {
id: number;
slug: string;
name: string;
match: string;
matching_algorithm: MatchingAlgorithm;
is_insensitive: boolean;
document_count: number;
last_correspondence: string;
owner: number | null;
permissions: Record<string, unknown>;
user_can_change: boolean;
}
export interface GetCorrespondentsResponse extends PaginationResponse<Correspondent> {
}
export interface DocumentType {
id: number;
slug: string;
name: string;
match: string;
matching_algorithm: MatchingAlgorithm;
is_insensitive: boolean;
document_count: number;
last_correspondence: string;
owner: number | null;
permissions: Record<string, unknown>;
user_can_change: boolean;
}
export interface GetDocumentTypesResponse extends PaginationResponse<DocumentType> {
}
export interface MailAccount {
id: number;
name: string;
imap_server: string;
imap_port: number | null;
imap_security: number;
username: string;
password?: string;
character_set: string;
is_token: boolean;
owner: number | null;
user_can_change: boolean;
account_type: number;
expiration: string | null;
}
export interface GetMailAccountsResponse extends PaginationResponse<MailAccount> {
}
export interface MailRule {
id: number;
name: string;
account: number;
enabled: boolean;
folder: string;
filter_from: string | null;
filter_to: string | null;
filter_subject: string | null;
filter_body: string | null;
filter_attachment_filename_include: string | null;
filter_attachment_filename_exclude: string | null;
maximum_age: number;
action: number;
action_parameter: string | null;
assign_title_from: number;
assign_tags: Array<number | null>;
assign_correspondent_from: number;
assign_correspondent: number | null;
assign_document_type: number | null;
assign_owner_from_rule: boolean;
order: number;
attachment_type: number;
consumption_scope: number;
pdf_layout: number;
owner: number | null;
user_can_change: boolean;
}
export interface GetMailRulesResponse extends PaginationResponse<MailRule> {
}
export interface BulkEditDocumentsResult {
result: string;
}
export interface BulkEditParameters {
add_custom_fields?: Record<string, CustomFieldInstanceRequest["value"]>;
remove_custom_fields?: number[];
add_tags?: number[];
remove_tags?: number[];
degrees?: number;
pages?: string;
metadata_document_id?: number;
delete_originals?: boolean;
correspondent?: number;
document_type?: number;
storage_path?: number;
tag?: number;
permissions?: {
owner?: number | null;
set_permissions?: {
view: {
users: number[];
groups: number[];
};
change: {
users: number[];
groups: number[];
};
};
merge?: boolean;
};
}