Two kinds of collection
MCP creates DOI-list collections.
add_dois_to_collection and remove_dois_from_collection work on both kinds; create_collection and update_collection handle DOI-list collections only.
For a saved-search collection, adding a DOI force-includes it so it appears even when the query wouldn’t return it, and removing a DOI excludes it so it doesn’t appear even when the query would.
A collection is a set of papers. A dashboard is a report on a collection. They aren’t the same thing — see the glossary.
Access levels
Every collection tool checks the caller’s access level.
The creator becomes ADMIN. You reach VIEWER by owning the collection, being shared on it, being in an organization it’s shared with, or — if
is_public is set — holding the slug.
The slug
Every tool exceptcreate_collection and search_collections identifies a collection by its slug. You get one from create_collection or search_collections; there’s no way to look one up by name directly.
Create
create_collection takes a name (required), and optionally a description, a dois list to seed it, and is_public.
unmatchedDoiCount, so check it rather than assuming every DOI landed. An empty dois list creates an empty collection.
is_public defaults to false. When true, anyone holding the slug can view the collection.
The response carries id, slug, name, description, isPublic, doiQueryType, accessType, and DOI counts.
Read
get_collection takes a slug and returns the collection’s identity, sharing, access level, and DOI counts. Requires VIEWER.
search_collections lists the collections you can access, with an optional q to filter by a case-insensitive substring of the name. It returns {collections: [...], total: N}.
Update
update_collection takes a slug plus any of name, description, dois, and is_public. Requires EDITOR or ADMIN.
It’s a partial update, but the dois field behaves differently from the rest:
- Omit
doisand the DOI list is left alone. - Supply
doisand it replaces the entire list.
Change membership
add_dois_to_collection and remove_dois_from_collection both take a slug and a non-empty dois array. Both require EDITOR or ADMIN, and both are idempotent — adding a DOI already present is ignored, as is removing one that isn’t there.
Delete
delete_collection takes a slug and requires ADMIN. It returns {deleted: true, slug: "..."}.
Searching within a collection
Once a collection exists,search_literature can search inside it. Pass the slug as collection_slug and combine it with term and any other filter.
Related
- Collections guide: the same operations over HTTP
- Literature tools:
search_literatureand itscollection_slugfilter - Glossary: collection, dashboard, and access terminology
