fix: replace dots with underscores in tool names to comply with Anthropic API naming rules

Closes #2

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Barry Walker
2026-04-12 11:55:33 -04:00
parent c427ed258c
commit 561624bf78
7 changed files with 43 additions and 43 deletions
+6 -6
View File
@@ -14,7 +14,7 @@ namespace PaperlessMCP.Tools;
[McpServerToolType] [McpServerToolType]
public static class CorrespondentTools public static class CorrespondentTools
{ {
[McpServerTool(Name = "paperless.correspondents.list")] [McpServerTool(Name = "paperless_correspondents_list")]
[Description("List all correspondents with pagination.")] [Description("List all correspondents with pagination.")]
public static async Task<string> List( public static async Task<string> List(
PaperlessClient client, PaperlessClient client,
@@ -38,7 +38,7 @@ public static class CorrespondentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.correspondents.get")] [McpServerTool(Name = "paperless_correspondents_get")]
[Description("Get a correspondent by its ID.")] [Description("Get a correspondent by its ID.")]
public static async Task<string> Get( public static async Task<string> Get(
PaperlessClient client, PaperlessClient client,
@@ -63,7 +63,7 @@ public static class CorrespondentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.correspondents.create")] [McpServerTool(Name = "paperless_correspondents_create")]
[Description("Create a new correspondent.")] [Description("Create a new correspondent.")]
public static async Task<string> Create( public static async Task<string> Create(
PaperlessClient client, PaperlessClient client,
@@ -97,7 +97,7 @@ public static class CorrespondentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.correspondents.update")] [McpServerTool(Name = "paperless_correspondents_update")]
[Description("Update an existing correspondent.")] [Description("Update an existing correspondent.")]
public static async Task<string> Update( public static async Task<string> Update(
PaperlessClient client, PaperlessClient client,
@@ -132,7 +132,7 @@ public static class CorrespondentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.correspondents.delete")] [McpServerTool(Name = "paperless_correspondents_delete")]
[Description("Delete a correspondent. Requires explicit confirmation.")] [Description("Delete a correspondent. Requires explicit confirmation.")]
public static async Task<string> Delete( public static async Task<string> Delete(
PaperlessClient client, PaperlessClient client,
@@ -181,7 +181,7 @@ public static class CorrespondentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.correspondents.bulk_delete")] [McpServerTool(Name = "paperless_correspondents_bulk_delete")]
[Description("Delete multiple correspondents. Supports dry run mode.")] [Description("Delete multiple correspondents. Supports dry run mode.")]
public static async Task<string> BulkDelete( public static async Task<string> BulkDelete(
PaperlessClient client, PaperlessClient client,
+6 -6
View File
@@ -14,7 +14,7 @@ namespace PaperlessMCP.Tools;
[McpServerToolType] [McpServerToolType]
public static class CustomFieldTools public static class CustomFieldTools
{ {
[McpServerTool(Name = "paperless.custom_fields.list")] [McpServerTool(Name = "paperless_custom_fields_list")]
[Description("List all custom field definitions with pagination.")] [Description("List all custom field definitions with pagination.")]
public static async Task<string> List( public static async Task<string> List(
PaperlessClient client, PaperlessClient client,
@@ -37,7 +37,7 @@ public static class CustomFieldTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.custom_fields.get")] [McpServerTool(Name = "paperless_custom_fields_get")]
[Description("Get a custom field definition by its ID.")] [Description("Get a custom field definition by its ID.")]
public static async Task<string> Get( public static async Task<string> Get(
PaperlessClient client, PaperlessClient client,
@@ -62,7 +62,7 @@ public static class CustomFieldTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.custom_fields.create")] [McpServerTool(Name = "paperless_custom_fields_create")]
[Description("Create a new custom field definition.")] [Description("Create a new custom field definition.")]
public static async Task<string> Create( public static async Task<string> Create(
PaperlessClient client, PaperlessClient client,
@@ -114,7 +114,7 @@ public static class CustomFieldTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.custom_fields.update")] [McpServerTool(Name = "paperless_custom_fields_update")]
[Description("Update an existing custom field definition.")] [Description("Update an existing custom field definition.")]
public static async Task<string> Update( public static async Task<string> Update(
PaperlessClient client, PaperlessClient client,
@@ -165,7 +165,7 @@ public static class CustomFieldTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.custom_fields.delete")] [McpServerTool(Name = "paperless_custom_fields_delete")]
[Description("Delete a custom field definition. Requires explicit confirmation.")] [Description("Delete a custom field definition. Requires explicit confirmation.")]
public static async Task<string> Delete( public static async Task<string> Delete(
PaperlessClient client, PaperlessClient client,
@@ -214,7 +214,7 @@ public static class CustomFieldTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.custom_fields.assign")] [McpServerTool(Name = "paperless_custom_fields_assign")]
[Description("Assign a custom field value to a document.")] [Description("Assign a custom field value to a document.")]
public static async Task<string> Assign( public static async Task<string> Assign(
PaperlessClient client, PaperlessClient client,
+11 -11
View File
@@ -14,7 +14,7 @@ namespace PaperlessMCP.Tools;
[McpServerToolType] [McpServerToolType]
public static class DocumentTools public static class DocumentTools
{ {
[McpServerTool(Name = "paperless.documents.search")] [McpServerTool(Name = "paperless_documents_search")]
[Description("Search for documents with full-text search and filters. Supports pagination.")] [Description("Search for documents with full-text search and filters. Supports pagination.")]
public static async Task<string> Search( public static async Task<string> Search(
PaperlessClient client, PaperlessClient client,
@@ -82,7 +82,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.get")] [McpServerTool(Name = "paperless_documents_get")]
[Description("Get a document by its ID.")] [Description("Get a document by its ID.")]
public static async Task<string> Get( public static async Task<string> Get(
PaperlessClient client, PaperlessClient client,
@@ -107,7 +107,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.download")] [McpServerTool(Name = "paperless_documents_download")]
[Description("Get download URLs for a document's original file, preview, and thumbnail.")] [Description("Get download URLs for a document's original file, preview, and thumbnail.")]
public static async Task<string> Download( public static async Task<string> Download(
PaperlessClient client, PaperlessClient client,
@@ -134,7 +134,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.preview")] [McpServerTool(Name = "paperless_documents_preview")]
[Description("Get the preview URL for a document.")] [Description("Get the preview URL for a document.")]
public static async Task<string> Preview( public static async Task<string> Preview(
PaperlessClient client, PaperlessClient client,
@@ -161,7 +161,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.thumbnail")] [McpServerTool(Name = "paperless_documents_thumbnail")]
[Description("Get the thumbnail URL for a document.")] [Description("Get the thumbnail URL for a document.")]
public static async Task<string> Thumbnail( public static async Task<string> Thumbnail(
PaperlessClient client, PaperlessClient client,
@@ -188,7 +188,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.upload")] [McpServerTool(Name = "paperless_documents_upload")]
[Description("Upload a new document to Paperless-ngx. Provide file content as base64. For large files, use paperless.documents.upload_from_path instead.")] [Description("Upload a new document to Paperless-ngx. Provide file content as base64. For large files, use paperless.documents.upload_from_path instead.")]
public static async Task<string> Upload( public static async Task<string> Upload(
PaperlessClient client, PaperlessClient client,
@@ -247,7 +247,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.upload_from_path")] [McpServerTool(Name = "paperless_documents_upload_from_path")]
[Description("Upload a document from a local file path. More reliable than base64 upload for large files. Includes automatic retries.")] [Description("Upload a document from a local file path. More reliable than base64 upload for large files. Includes automatic retries.")]
public static async Task<string> UploadFromPath( public static async Task<string> UploadFromPath(
PaperlessClient client, PaperlessClient client,
@@ -326,7 +326,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.update")] [McpServerTool(Name = "paperless_documents_update")]
[Description("Update document metadata (title, correspondent, type, tags, etc.).")] [Description("Update document metadata (title, correspondent, type, tags, etc.).")]
public static async Task<string> Update( public static async Task<string> Update(
PaperlessClient client, PaperlessClient client,
@@ -371,7 +371,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.delete")] [McpServerTool(Name = "paperless_documents_delete")]
[Description("Delete a document. Requires explicit confirmation.")] [Description("Delete a document. Requires explicit confirmation.")]
public static async Task<string> Delete( public static async Task<string> Delete(
PaperlessClient client, PaperlessClient client,
@@ -427,7 +427,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.bulk_update")] [McpServerTool(Name = "paperless_documents_bulk_update")]
[Description("Perform bulk operations on multiple documents. Supports dry run mode.")] [Description("Perform bulk operations on multiple documents. Supports dry run mode.")]
public static async Task<string> BulkUpdate( public static async Task<string> BulkUpdate(
PaperlessClient client, PaperlessClient client,
@@ -513,7 +513,7 @@ public static class DocumentTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.documents.reprocess")] [McpServerTool(Name = "paperless_documents_reprocess")]
[Description("Reprocess a document's OCR and content extraction.")] [Description("Reprocess a document's OCR and content extraction.")]
public static async Task<string> Reprocess( public static async Task<string> Reprocess(
PaperlessClient client, PaperlessClient client,
+6 -6
View File
@@ -14,7 +14,7 @@ namespace PaperlessMCP.Tools;
[McpServerToolType] [McpServerToolType]
public static class DocumentTypeTools public static class DocumentTypeTools
{ {
[McpServerTool(Name = "paperless.document_types.list")] [McpServerTool(Name = "paperless_document_types_list")]
[Description("List all document types with pagination.")] [Description("List all document types with pagination.")]
public static async Task<string> List( public static async Task<string> List(
PaperlessClient client, PaperlessClient client,
@@ -38,7 +38,7 @@ public static class DocumentTypeTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.document_types.get")] [McpServerTool(Name = "paperless_document_types_get")]
[Description("Get a document type by its ID.")] [Description("Get a document type by its ID.")]
public static async Task<string> Get( public static async Task<string> Get(
PaperlessClient client, PaperlessClient client,
@@ -63,7 +63,7 @@ public static class DocumentTypeTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.document_types.create")] [McpServerTool(Name = "paperless_document_types_create")]
[Description("Create a new document type.")] [Description("Create a new document type.")]
public static async Task<string> Create( public static async Task<string> Create(
PaperlessClient client, PaperlessClient client,
@@ -97,7 +97,7 @@ public static class DocumentTypeTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.document_types.update")] [McpServerTool(Name = "paperless_document_types_update")]
[Description("Update an existing document type.")] [Description("Update an existing document type.")]
public static async Task<string> Update( public static async Task<string> Update(
PaperlessClient client, PaperlessClient client,
@@ -132,7 +132,7 @@ public static class DocumentTypeTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.document_types.delete")] [McpServerTool(Name = "paperless_document_types_delete")]
[Description("Delete a document type. Requires explicit confirmation.")] [Description("Delete a document type. Requires explicit confirmation.")]
public static async Task<string> Delete( public static async Task<string> Delete(
PaperlessClient client, PaperlessClient client,
@@ -181,7 +181,7 @@ public static class DocumentTypeTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.document_types.bulk_delete")] [McpServerTool(Name = "paperless_document_types_bulk_delete")]
[Description("Delete multiple document types. Supports dry run mode.")] [Description("Delete multiple document types. Supports dry run mode.")]
public static async Task<string> BulkDelete( public static async Task<string> BulkDelete(
PaperlessClient client, PaperlessClient client,
+2 -2
View File
@@ -12,7 +12,7 @@ namespace PaperlessMCP.Tools;
[McpServerToolType] [McpServerToolType]
public static class HealthTools public static class HealthTools
{ {
[McpServerTool(Name = "paperless.ping")] [McpServerTool(Name = "paperless_ping")]
[Description("Verify connectivity and authentication with the Paperless-ngx instance. Returns server version if available.")] [Description("Verify connectivity and authentication with the Paperless-ngx instance. Returns server version if available.")]
public static async Task<string> Ping(PaperlessClient client) public static async Task<string> Ping(PaperlessClient client)
{ {
@@ -35,7 +35,7 @@ public static class HealthTools
return JsonSerializer.Serialize(errorResponse); return JsonSerializer.Serialize(errorResponse);
} }
[McpServerTool(Name = "paperless.capabilities")] [McpServerTool(Name = "paperless_capabilities")]
[Description("Return supported API endpoints and detected Paperless-ngx version information.")] [Description("Return supported API endpoints and detected Paperless-ngx version information.")]
public static async Task<string> GetCapabilities(PaperlessClient client) public static async Task<string> GetCapabilities(PaperlessClient client)
{ {
+6 -6
View File
@@ -14,7 +14,7 @@ namespace PaperlessMCP.Tools;
[McpServerToolType] [McpServerToolType]
public static class StoragePathTools public static class StoragePathTools
{ {
[McpServerTool(Name = "paperless.storage_paths.list")] [McpServerTool(Name = "paperless_storage_paths_list")]
[Description("List all storage paths with pagination.")] [Description("List all storage paths with pagination.")]
public static async Task<string> List( public static async Task<string> List(
PaperlessClient client, PaperlessClient client,
@@ -38,7 +38,7 @@ public static class StoragePathTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.storage_paths.get")] [McpServerTool(Name = "paperless_storage_paths_get")]
[Description("Get a storage path by its ID.")] [Description("Get a storage path by its ID.")]
public static async Task<string> Get( public static async Task<string> Get(
PaperlessClient client, PaperlessClient client,
@@ -63,7 +63,7 @@ public static class StoragePathTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.storage_paths.create")] [McpServerTool(Name = "paperless_storage_paths_create")]
[Description("Create a new storage path.")] [Description("Create a new storage path.")]
public static async Task<string> Create( public static async Task<string> Create(
PaperlessClient client, PaperlessClient client,
@@ -99,7 +99,7 @@ public static class StoragePathTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.storage_paths.update")] [McpServerTool(Name = "paperless_storage_paths_update")]
[Description("Update an existing storage path.")] [Description("Update an existing storage path.")]
public static async Task<string> Update( public static async Task<string> Update(
PaperlessClient client, PaperlessClient client,
@@ -136,7 +136,7 @@ public static class StoragePathTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.storage_paths.delete")] [McpServerTool(Name = "paperless_storage_paths_delete")]
[Description("Delete a storage path. Requires explicit confirmation.")] [Description("Delete a storage path. Requires explicit confirmation.")]
public static async Task<string> Delete( public static async Task<string> Delete(
PaperlessClient client, PaperlessClient client,
@@ -185,7 +185,7 @@ public static class StoragePathTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.storage_paths.bulk_delete")] [McpServerTool(Name = "paperless_storage_paths_bulk_delete")]
[Description("Delete multiple storage paths. Supports dry run mode.")] [Description("Delete multiple storage paths. Supports dry run mode.")]
public static async Task<string> BulkDelete( public static async Task<string> BulkDelete(
PaperlessClient client, PaperlessClient client,
+6 -6
View File
@@ -14,7 +14,7 @@ namespace PaperlessMCP.Tools;
[McpServerToolType] [McpServerToolType]
public static class TagTools public static class TagTools
{ {
[McpServerTool(Name = "paperless.tags.list")] [McpServerTool(Name = "paperless_tags_list")]
[Description("List all tags with pagination.")] [Description("List all tags with pagination.")]
public static async Task<string> List( public static async Task<string> List(
PaperlessClient client, PaperlessClient client,
@@ -38,7 +38,7 @@ public static class TagTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.tags.get")] [McpServerTool(Name = "paperless_tags_get")]
[Description("Get a tag by its ID.")] [Description("Get a tag by its ID.")]
public static async Task<string> Get( public static async Task<string> Get(
PaperlessClient client, PaperlessClient client,
@@ -63,7 +63,7 @@ public static class TagTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.tags.create")] [McpServerTool(Name = "paperless_tags_create")]
[Description("Create a new tag.")] [Description("Create a new tag.")]
public static async Task<string> Create( public static async Task<string> Create(
PaperlessClient client, PaperlessClient client,
@@ -103,7 +103,7 @@ public static class TagTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.tags.update")] [McpServerTool(Name = "paperless_tags_update")]
[Description("Update an existing tag.")] [Description("Update an existing tag.")]
public static async Task<string> Update( public static async Task<string> Update(
PaperlessClient client, PaperlessClient client,
@@ -142,7 +142,7 @@ public static class TagTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.tags.delete")] [McpServerTool(Name = "paperless_tags_delete")]
[Description("Delete a tag. Requires explicit confirmation.")] [Description("Delete a tag. Requires explicit confirmation.")]
public static async Task<string> Delete( public static async Task<string> Delete(
PaperlessClient client, PaperlessClient client,
@@ -191,7 +191,7 @@ public static class TagTools
return JsonSerializer.Serialize(response); return JsonSerializer.Serialize(response);
} }
[McpServerTool(Name = "paperless.tags.bulk_delete")] [McpServerTool(Name = "paperless_tags_bulk_delete")]
[Description("Delete multiple tags. Supports dry run mode.")] [Description("Delete multiple tags. Supports dry run mode.")]
public static async Task<string> BulkDelete( public static async Task<string> BulkDelete(
PaperlessClient client, PaperlessClient client,