ressource.socialbetadocumentation
MCP server

Tools

The twelve tools the ressource.social MCP server exposes, what each one does and the inputs it takes.

Every tool works on the signed-in user's own Library. Your credential decides which tools the server lists in tools/list. A tool you may not run is left out of the list, and calling it by name fails.

ToolWhat it doesAccessOAuth
search_sourcesSearch your sources by wordsreadyes
list_sourcesList your sources, one page at a timereadyes
get_sourceRead one source in full, comments includedreadyes
list_foldersList every folder as a treereadyes
suggest_tagsFind existing tags to reusereadyes
save_sourceSave one web pagewriteyes
save_sourcesSave up to 10 web pageswriteyes
update_sourceChange a source's title, description, tags, folder or visibilitywrite, overwritesyes
create_folderCreate a folderwriteyes
update_folderRename, describe or move a folder, or change its privacywrite, overwritesyes
move_sourcesMove up to 500 sources into a folder, or unfile themwrite, overwritesyes
delete_folderDelete a folder and its subfolderswrite, irreversibleno
  • read tools are listed for a read token. write tools need a write token or an OAuth connection.
  • Overwrites means the tool replaces something that already exists. These tools carry the MCP destructiveHint annotation, so clients ask you before running them. Their descriptions also tell the assistant to confirm with you first.
  • Irreversible means the result can't be put back from ressource.social. An app connected with OAuth never gets an irreversible tool. Only a personal access token with the write scope can call delete_folder.

No tool deletes a source

On purpose. Deleting a source also removes its comments, reactions, archive and community shares, and nothing restores them. You delete sources in ressource.social.

Content is data

Results carry text that ressource.social didn't write: page titles and descriptions, tag names, folder names, comments, people's names. Each result names those fields under untrusted_content, and the server strips invisible characters from every string.

The tool descriptions tell the assistant that this text is content, not instructions. Results also include a link to each source, so the assistant can cite it.

Read tools

search_sources

Searches your own sources by words in the title, description, tags, folder name or domain. Matching is typo-tolerant and the best matches come first.

InputTypeNotes
querystring, 2–200 charactersWhat to look for. Required.
limitinteger, 1–25Default 10.

Each item has its id and short id, title, URL, description, folder, the tags that matched, and a link. Descriptions longer than 1,000 characters are cut short and flagged description_truncated.

list_sources

Lists your sources one page at a time, newest first by default.

InputTypeNotes
folder_iduuidOnly sources in this folder (ids come from list_folders).
include_subfoldersbooleanDefault false.
tag_idsuuid[], up to 20Only sources with these tags.
in_librarybooleanDefault true. With false you get the sources you shared to a community without keeping them in your Library.
sortcreated_at · name · view_countDefault created_at.
directionasc · descDefault desc.
limitinteger, 1–50Default 20.
cursorstringThe nextCursor from the previous page.

The result holds items, nextCursor and hasMore. Long descriptions are cut short, as in search_sources.

get_source

Reads one source: its title, URL, full description, tags, folder, the communities it is shared with and the comments you can see.

InputTypeNotes
idstringThe source's id, or the short id from a ressource.social source link. Required.

list_folders

Lists every folder in your Library as a tree, parents before children. Each folder carries:

  • its full path, for example Research / AI
  • its privacy
  • how many sources sit directly in it
  • how many subfolders it has

It takes no input.

suggest_tags

Finds tags to reuse, best first:

  1. Your own tags, with scope: "mine". The count is how many of your sources carry the tag.
  2. Tag names that at least two people on ressource.social use, with scope: "platform". The count is how many people use it.
  3. Near-misses of what was typed, flagged is_fuzzy.
InputTypeNotes
querystring, up to 50 charactersOptional.
limitinteger, 1–50Default 20.

Write tools

save_source

Saves a web page to your Library. ressource.social fetches the page's title, description and preview itself.

InputTypeNotes
urlstringA public http or https URL. Required.
titlestringA fallback, used only if the page has no title of its own.
folder_iduuidFile the new source in this folder. A wrong id fails the save before anything is written.
tagsstring[], up to 50Tag names. Reuse existing ones from suggest_tags where they fit.
descriptionstring, up to 5,000 charactersWhy it was saved. It replaces the page's own description.
visibilitypublic · privateDefault public. A public source shows on your profile.
  • Already saved: saving a URL that is already in your Library returns the existing source with isExisting: true and changes nothing, not even its folder, tags or visibility. Use update_source or move_sources for those.
  • Partly saved: if the source is saved but its folder, tags or description can't be set, the save still stands. The result carries not_applied with the reason, and update_source can finish the job.

save_sources

Saves up to 10 web pages in one call, for importing a list of links. items is an array of save_source inputs. Each URL succeeds or fails on its own.

The result has one entry per URL, in the order given:

  • ok, and then either source and isExisting, or error.
  • Totals for saved, existing, failed and duplicates.
  • A URL repeated in the batch is saved once. Its later entries repeat the first result and add duplicate_of, the index of the first entry.
  • Once your save limit is reached, the remaining URLs are not tried and come back with a rate_limited error.

To import more than 10 links, call it again with the next batch.

update_source

Changes one of your own sources. Only the fields you give change, and the previous values are not kept.

InputTypeNotes
idstringId or short id. Required.
titlestring
descriptionstring or null
tagsstring[], up to 50Replaces the current tags.
folder_iduuid or nullnull takes the source out of every folder.
visibilitypublic · privateMaking a source public publishes it on your profile.

create_folder

Creates a folder at the top level, or inside another folder.

InputTypeNotes
namestring, 1–255 charactersMust be unique among its sibling folders. Required.
parent_folder_iduuid or nullLeave it out for the top level.
descriptionstring or null
colorhex colour or null
is_privatebooleanA private folder never appears on your public profile.

Folders nest at most ten levels deep. A folder created inside a private folder is always private. The result includes the new folder's id.

update_folder

Renames a folder, changes its description, colour or privacy, or moves it with everything inside it. It takes the same fields as create_folder, all optional, plus the folder's id.

  • Moving: parent_folder_id: null moves the folder to the top level. A folder can't move into one of its own subfolders.
  • Privacy: is_private: true also makes every subfolder private. Setting it back to false leaves the subfolders private.

move_sources

Files your sources into one folder, or takes them out of every folder.

InputTypeNotes
source_idsuuid[], 1–500Ids from list_sources, search_sources or save_source. Required.
folder_iduuid or nullThe destination folder, or null to unfile. Required.

All or nothing: if any id is not one of your sources, nothing moves and the error lists the unknown ids. The result counts the sources moved and unchanged. ressource.social doesn't keep where each source was filed before, so a move can only be undone by hand. Bulk moves have their own hourly and daily limits.

delete_folder

Deletes a folder and all its subfolders. No source is deleted: the sources inside stay in your Library, unfiled. The result counts the deleted folders and the unfiled sources.

InputTypeNotes
iduuidRequired.

The folders can't be restored, so OAuth connections don't get this tool. It needs a personal access token with the write scope.

A typical session

To sort a Library or import a list of links into a folder tree, an assistant usually:

  1. Calls list_folders to see what exists, so it doesn't create duplicates.
  2. Calls create_folder for each missing folder, nesting them with the parent_folder_id that create_folder returned.
  3. Collects ids with list_sources or search_sources, then makes one move_sources call per destination folder.
  4. For imports, calls suggest_tags to reuse your tags, then save_sources in batches of 10 with a folder_id and tags on each item. Items that come back with isExisting: true stayed where they were. They can be moved with move_sources.

On this page