Tools

Whitepapper exposes 25 MCP tools: 15 read-only and 10 write.


Read Tools (15)

get_workspace_overview

Paginated project and standalone-paper summaries for your entire workspace.

  • Inputs: projectLimit, projectCursor, standalonePaperLimit, standalonePaperCursor, projectFields, projectExcludeFields, paperFields, paperExcludeFields
  • Returns: { projects, projectsNextCursor, standalonePapers, standalonePapersNextCursor }

list_projects

Compact paginated list of owned projects.

  • Inputs: limit, cursor, fields, excludeFields
  • Returns: { items: Project[], nextCursor }

list_collections

Paginated collection summaries for a project.

  • Inputs: projectId, limit, cursor, fields, excludeFields
  • Returns: { items: Collection[], nextCursor }

list_papers

Paginated paper list scoped by project, collection, or status.

  • Inputs: projectId, collectionId, standalone, status, limit, cursor, includeBody, includeMetadata, fields, excludeFields
  • Returns: { items: Paper[], nextCursor }

get_project_by_id

Fetch a single project by ID with collections and standalone papers.

  • Inputs: projectId, includeStandalonePapers, includeCollections, field selectors
  • Returns: Full project document with children

get_project_by_slug

Fetch a project by slug (same shape as get_project_by_id).

  • Inputs: slug, same optional include flags
  • Returns: Full project document

get_collection_by_id

Fetch a collection by ID with paginated paper list.

  • Inputs: collectionId, includePapers, paperLimit, paperCursor, includeBody, includeMetadata, field selectors
  • Returns: Full collection document with papers

get_collection_by_slug

Fetch a collection by slug. Pass projectId for disambiguation.

  • Inputs: slug, projectId, same optional include flags
  • Returns: Full collection document

get_paper_by_id

Fetch a single paper by ID.

  • Inputs: paperId, includeBody, includeMetadata, fields, excludeFields
  • Returns: Full paper document

get_paper_by_slug

Fetch a paper by slug.

  • Inputs: slug, projectId, includeBody, includeMetadata, fields, excludeFields
  • Returns: Full paper document

get_papers_by_ids

Batch-read multiple papers by their IDs.

  • Inputs: paperIds: string[], includeBody, includeMetadata, field selectors
  • Returns: Papers array

get_collections_by_ids

Batch-read multiple collections by their IDs.

  • Inputs: collectionIds: string[], field selectors
  • Returns: Collections array

get_project_content_tree

Structured project tree with collections, standalone papers, and optionally papers per collection.

  • Inputs: projectId, includeCollectionPapers, pagination params
  • Returns: Structured tree

search_papers

Full-text search across titles, slugs, bodies, and metadata.

  • Inputs: query, projectId, collectionId, status, limit, includeBody, includeMetadata
  • Returns: Ranked compact paper results

resolve_slug_to_id

Convert slugs into exact IDs before follow-up calls.

  • Inputs: projectSlug, collectionSlug, paperSlug, projectId
  • Returns: { project, collection, paper } with compact summaries

Write Tools (10)

create_project

Create a new project.

  • Inputs: name, slug, description, contentGuidelines, logoUrl, isPublic
  • Returns: Full project document

update_project

Update an existing project's fields.

  • Inputs: projectId, name, slug, description, contentGuidelines, logoUrl, isPublic
  • Returns: Full project document

delete_project

Permanently delete a project and all its content.

  • Inputs: projectId
  • Returns: { ok: true }

create_collection

Create a collection inside a project.

  • Inputs: projectId, name, description, slug, isPublic
  • Returns: Full collection document

update_collection

Update an existing collection.

  • Inputs: collectionId, name, slug, description, isPublic
  • Returns: Full collection document

delete_collection

Permanently delete a collection and all its papers.

  • Inputs: collectionId
  • Returns: { ok: true }

create_paper

Create a new paper. Pass collectionId or projectId to place it.

  • Inputs: title, slug, body, projectId, collectionId, thumbnailUrl, status, metadata
  • Returns: Full paper document

update_paper

Update an existing paper. Also used to publish (set status: "published") or move between projects (set projectId/collectionId).

  • Inputs: paperId, title, slug, body, projectId, collectionId, thumbnailUrl, status, metadata
  • Returns: Full paper document

delete_paper

Permanently delete a paper.

  • Inputs: paperId
  • Returns: { ok: true }

upsert_paper_by_slug

Create or update a paper keyed by slug. If the slug exists the paper is updated, otherwise a new paper is created.

  • Inputs: slug, title, body, projectId, collectionId, thumbnailUrl, status, metadata
  • Returns: Full paper document

Tool Count Summary

CategoryCount
Read15
Write10
Total25

Compare with the previous version (27 tools): publish_paper and move_paper were removed because update_paper already covers both use cases. Delete tools no longer require a confirm flag — they execute immediately, consistent with the main app API.


Related

Whitepapper logo

Whitepapper

Whitepapper is a API first content platform for developers who want to publish once, distribute everywhere, and manage website content.