Padlet provides collaborative digital boards for organizing ideas, resources, and multimedia content. Create and manage boards, publish posts with text, images, links, and files, organize discussions, and retrieve shared content to support classroom activities, brainstorming, and team collaboration.
Try asking
Encrypted at rest, isolated from the model
Resolved from an AES-256-GCM vault at the moment of the call and attached to the request — the model never sees the secrets.
Finds the user's padlets: given words, the padlets that best match them, and given none, the user's most recently updated padlets. - Without query, returns { success: true, padlets: [...] }: padlets the user made, most recently updated first. - With query, returns { success: true, results: [...], count }: padlets the user made or can open, ranked by how well their content matches. - Each padlet has its title, description and url. Pass the url as `wall_url` to get_padlet and to every other tool that takes a padlet. - A search always returns the nearest padlets, even when none is the one asked for. Check a result's title and description before using it. If none clearly matches, say you could not find the padlet, and never write to, share, grade, freeze or delete a padlet whose title does not clearly match. - A padlet made moments ago may not be searchable yet. Reuse its url from earlier in the conversation, or list without query.
Reads a padlet: its title, description, settings, sections, and posts with their comments. Read a padlet before changing it. - Returns { success: true, wall_url, padlet: {...} }. padlet.padlet_content holds the title, sections, posts and comments, padlet.padlet_settings the format, sections, comments, reactions and attribution settings, and padlet.padlet_post_properties the post fields. - Posts come in the order they appear on the padlet. Each post has an `editable` field, and its post_id and section_id are what the post and section tools take. - include adds parts the content leaves out, for the padlet's admins. "access" adds access.access_settings: who can see and write, the password, listing and collaborators. "post_fields" adds post_fields: a copy of the post fields, and library_forbidden_attachment_types, the attachment types the padlet's library does not allow and update_padlet_post_fields cannot turn on. - Content settings (moderation, content protection and whether others may remake the padlet) are not here. search_padlet_actions finds the get_padlet_content_settings action that reads them. - A part the user may not read comes back as { available: false, message }, and the rest still returns. - When the padlet itself cannot be read, only the refusal returns. Its message says why, and reason, when present, is trashed, archived, password or private.
Changes a padlet's title, description and icon. - Give icon or icon_image_url, not both. - Pass only the settings that should change. - Returns { success: true, applied: [part, ...] }. A part listed under not_applied, as { part, code, reason }, did not change: tell the user why, and never say it changed. When no part changed, success is false and the message gives each part's reason.
Changes how a padlet looks: its color scheme, post size, font, wallpaper and, on a map padlet, its map style. - font takes the internal name. By the name the user sees: {"Alps":"alps","Thames":"thames","Niagara":"niagara","Fuji":"fuji"}, or on a sandbox padlet {"Modern":"alps","Classic":"thames","Playful":"shantell","Technical":"courier"}. - Give wallpaper or wallpaper_image_url, not both. A map padlet takes map_style instead. - map_style takes the id of one of these map styles: 100 The Usual (light), 101 Silver (light), 102 Black Metal (dark), 103 Medieval (light), 104 Retro (light), 105 Tron (dark), 106 Night (dark), 107 Amusement Park (light), 108 Video Game (light), 109 Satellite (light), 110 Watercolor (light). - Pass only the settings that should change. - Returns { success: true, applied: [part, ...] }. A part listed under not_applied, as { part, code, reason }, did not change: tell the user why, and never say it changed. When no part changed, success is false and the message gives each part's reason.
Changes how a padlet arranges its posts: its format, whether posts are grouped into sections, and their sort order. - layout takes the internal name. By the name the user sees: {"프리폼":"free","담벼락":"grid","그리드":"matrix","컬럼":"shelf","스트림":"stream","지도":"map","테이블":"table","타임라인":"timeline","행":"timeline_v2"}. A sandbox padlet cannot change format. - Pass only the settings that should change. - Returns { success: true, applied: [part, ...] }. A part listed under not_applied, as { part, code, reason }, did not change: tell the user why, and never say it changed. When no part changed, success is false and the message gives each part's reason.
Changes how people respond on a padlet: comments, reactions and their emoji set, and whether posts and comments show their author and time. - get_padlet's padlet.padlet_settings.reactions_migrated decides the reactions. When true, use "emoji" with an emoji_preset, or "none", and add a vote, rating or score custom field with update_padlet_post_fields to let people vote or rate. When false, every reaction type works. - Pass only the settings that should change. - Returns { success: true, applied: [part, ...] }. A part listed under not_applied, as { part, code, reason }, did not change: tell the user why, and never say it changed. When no part changed, success is false and the message gives each part's reason.
Changes what a post on a padlet asks for: which fields and attachment types are on, their placeholders, which are required, and new custom fields. - A field must be on before it can be required. - photo_album needs one of file, media_library, link, photo_booth, drawing, ai_image_search, image_search, gif_search on, and device_uploads one of file, photo_booth, video_recorder, audio_recorder, drawing, photo_album. Each is switched off when none is. An attachment type the library forbids stays off. - custom_fields adds fields to every post. A name the padlet already has is left as it is. To delete a custom field, use delete_padlet_items. - The answer also gives attachment_settings, the attachment types now on, and created_custom_field_ids, the ids of the new custom fields. - Pass only the settings that should change. - Returns { success: true, applied: [part, ...] }. A part listed under not_applied, as { part, code, reason }, did not change: tell the user why, and never say it changed. When no part changed, success is false and the message gives each part's reason.
Changes who can open a padlet and what they can do: the roles of its library's students and teachers and of visitors, whether visitors must log in, the password, and whether it is listed on the dashboard or published on the user's profile and the web. - The change applies at once, for everyone. A visitor_role above "none" lets anyone with the link open the padlet. - Set student_role and teacher_role together. - require_password: true with no password keeps the padlet's password, or makes one. - Collaborators are catalog actions: invite_email_as_padlet_collaborator and update_delete_padlet_collaborator_user. - Pass only the settings that should change. - Returns { success: true, applied: [part, ...] }. A part listed under not_applied, as { part, code, reason }, did not change: tell the user why, and never say it changed. When no part changed, success is false and the message gives each part's reason.
Adds and edits posts on a padlet. A post_id starting with new_ adds a post, and an existing post's id edits it. This tool cannot delete posts. Delete them with delete_padlet_items. - Returns { success: true }, plus created_post_ids mapping each new_ id to the real post id. - When some posts or fields could not be applied, the result also has `not_applied`, a list of { post_id, reason }. Tell the user which posts or fields did not change and why, using the reason, and never say a listed change was made. - When the result has `awaiting_approval_post_ids`, those posts wait for the padlet's approval or content check, so tell the user others cannot see them yet. - Adding needs write permission on the padlet. You can edit only posts you created, unless you are an admin or moderator of the padlet. get_padlet marks them `editable: true`. - To edit a post, send only the fields to change. To empty a field, name it in `clear`. An empty string leaves it as it is. - section_id takes an existing section's id, so a new section and posts in it take two calls: save_sections, then this tool with the id it returns. - To add an attachment, send attachment_type with attachment_search, or a URL in `attachment`. A poll comes from attachment_props and never shares a post with `attachment` or attachment_search. - Pass a chat-dropped file as `file` to start_attachment_upload. For a local file, use start_attachment_upload plus complete_attachment_upload when the client can issue an HTTP PUT. Pass a public web link directly as `attachment`. - Post colors are red, orange, green, blue, purple, orange for yellow, plus white on a light padlet and black on a dark one.
Creates, renames and reorders the sections of a padlet. A section_id starting with new_ creates a section, and an existing section's id renames it. Requires admin permission on the padlet. This tool cannot delete sections. Delete them with delete_padlet_items. - Returns { success: true }. Creating also returns created_section_ids, mapping each new_ id to the real section id. To add posts to a new section, send that real id as section_id to save_posts in a later call.
Deletes posts, sections, comments and custom fields from a padlet, any mix of them in one call. It is the only tool that deletes them. - Returns { success: true } and the ids it deleted: deleted_post_ids, deleted_section_ids, deleted_comment_ids and deleted_custom_field_ids. `undo` says which of them can be restored. - Deleted posts and sections can be restored for 24 hours: run the restore_posts_and_sections action with run_padlet_write_action, passing deleted_post_ids as its post_ids and deleted_section_ids as its section_ids. Deleted comments and custom fields cannot be restored, so tell the user before deleting them. - A deleted section takes its posts with it, and they are in deleted_post_ids. Its scheduled posts go back to drafts. The last section on a padlet cannot be deleted. - Take the ids from get_padlet: post_id and section_id from the posts, comment_id from the comments, and field_id from padlet_settings.custom_fields. - You can delete only posts and comments you wrote, unless you are a moderator or admin of the padlet. Deleting a section or a custom field needs admin permission. Nothing can be deleted while the padlet is frozen. - When some items could not be deleted, the result also has `not_applied`, a list of { post_id, section_id, comment_id or custom_field_id, reason }. If one post is missing or you cannot delete it, no post in the call is deleted, and likewise for sections. Tell the user which items were not deleted and why, and never say a listed item was deleted.
Adds and edits comments on a padlet's posts. A comment_id starting with new_ adds a comment to post_id, and an existing comment's id replaces that comment's text. This tool cannot delete comments. Delete them with delete_padlet_items. - Returns { success: true }, plus created_comment_ids mapping each new_ id to the real comment id, and updated_comment_ids. - When some comments could not be saved, the result also has `not_applied`, a list of { comment_id, reason }. Tell the user which comments did not change and why, using the reason, and never say a listed change was made. - When the result has `awaiting_approval_comment_ids`, those comments wait for the padlet's approval or content check, so tell the user others cannot see them yet. - You can edit only comments you wrote, unless you are a moderator or admin of the padlet. Nobody can add or edit comments while the padlet is frozen. - A new comment takes text, an attachment, or both. An edit replaces only the text, so send the comment's full new text. - Take post_id and comment_id from the posts and comments get_padlet returns.
Create a new blank padlet that can then be populated using other tools. - Purpose: Create a new empty padlet from scratch. - What this tool returns: { success: true, padlet: { title, description, format, url }, workspace } with the new padlet's details. workspace is { name, library_url } for a library or { personal: true }; tell the user where the padlet went. Guidance for use: - Creates a blank padlet with default settings (private, no posts). - Pass the returned url as `wall_url` to update_padlet_settings and the other tools that take a padlet. - Optional parameters: title (uses smart default based on format if not provided), description, format (grid, stream, timeline_v2, matrix, shelf, table, free, map, timeline, whiteboard, columns). - After creation, use other tools to configure settings, add posts, sections, etc. - If format is not specified, defaults to "grid". Where the new padlet goes: - Ask the user which workspace to use unless they already named one. Pass the library's library_url, or personal: true for their personal space, never both. list_libraries, when you have it as a tool or through run_padlet_read_action, gives each library's link. - With neither, the tool creates only when exactly one workspace can take the new padlet, and the result says which. Otherwise nothing is created, and available_workspaces lists the choices to ask about. - If the workspace cannot take a padlet, nothing is created and the result gives reason, message and available_workspaces. Tell the user why, ask which workspace to use, and call again with one entry's library_url or personal. Never pick one for the user.
Start uploading a file so it can be attached to a padlet. A file dropped into ChatGPT arrives as `file`. Pass that object here and do not PUT. Padlet downloads and verifies it, and the returned `url` is ready for any destination in step 4. Do not call complete_attachment_upload for that file. A local file, when you can read it and send an HTTP PUT (with `curl`, for instance): 1. Call this tool with the file's real size in bytes and its content type. Do not pass `file`. 2. PUT the raw bytes to the `upload_url` you get back. One request, no headers, no form encoding — for example `curl -T /path/to/file "<upload_url>"`. The body must be exactly `size_bytes` bytes long. 3. Call complete_attachment_upload with the same `wall_url` and the `uploaded_url` from this tool. Nothing reaches the padlet until you do, and the file is verified at that point — a file whose bytes do not match the content type you declared is rejected and deleted. 4. Pass the URL complete_attachment_upload returns to a post's `attachment` in create_posts or update_posts, the `attachment` of add_comment_to_post, or `image_url` of update_padlet_wallpaper or update_padlet_icon. An ordinary public web link that should remain a link can be passed directly to any of those destinations. Returns { success: true, upload_url: "...", uploaded_url: "...", expires_at: "..." } for a local file, { success: true, url: "...", file_name: "...", content_type: "...", size_bytes: 123 } for a chat-dropped file, or { success: false, error_code: "...", message: "..." }.
Finish an upload started by start_attachment_upload. Call this once per local file, after the PUT to `upload_url` has succeeded. A chat-dropped file is downloaded by start_attachment_upload when you pass its `file` object, so do not call this tool for it. This is what checks the file: its real size against the padlet's per-file limit, and its actual bytes against the content type declared at the start. A file that fails either check is deleted and cannot be attached. Pass the same `wall_url` you passed to start_attachment_upload — the per-file limit belongs to the padlet, so completing against a different one can reject a file that was fine. On success, pass the returned `url` to a post's `attachment` in create_posts or update_posts, the `attachment` of add_comment_to_post, or `image_url` of update_padlet_wallpaper or update_padlet_icon. One attachment per post or comment; call this once per file and use each URL once. Returns { success: true, url: "...", file_name: "...", content_type: "...", size_bytes: 123 }, or { success: false, error_code: "...", message: "..." }.
Analyzes the content of attachments (images, videos, audio, PDFs, documents) from posts on the padlet. - Purpose: Retrieve and analyze post attachment content so you can describe, summarize, or answer questions about what's in the attachments. - What this tool returns: { success: true, analysis: { posts: [{ post_id, attachments: [{ description }] }] } } with a structured analysis grouped by post_id; { success: true, message: "No valid attachments to analyze" } when none of the posts has an attachment it can read; otherwise { success: false, message: "..." }. Guidance for use: - Use this tool when the user asks about the content of images, videos, audio, documents, or other attachments in posts. - Identify which posts have attachments before calling. If an EXPLICIT list of post_ids to analyze has been provided to you in the conversation, use those directly. Otherwise, call `get_padlet_content` first to discover them. - A post has an attachment if its "attachment" field contains a URL (not empty, not "poll"). Check BOTH the "attachment" field and "attachment_props" — some posts have a URL in "attachment" but empty "attachment_props". - Pass the post_ids of posts whose attachments you want to analyze. The tool will retrieve the attachment URLs automatically. - Pass at most 50 post IDs per call. If there are more, prioritize the most relevant posts. - Only analyzes attachments the current user has permission to view. - Do not use this tool if the user is not asking about attachment content. - Results are cached: previously analyzed attachments return cached descriptions without re-analyzing. - IMPORTANT: Only pass the `query` parameter when the user has a specific, targeted question about the attachment content (e.g. "What formula is on slide 3?", "What color is the logo?"). For general requests like "describe the attachments", "what's in the images", or "summarize the content", do NOT pass a `query` — omit it entirely so the tool returns a comprehensive generic description.
Finds Padlet actions that are not tools of their own, among the actions this account may run. They cover padlet administration (a padlet's summary, content and moderation settings, collaborators, submission forms, custom post fields, breakout links, freezing, remaking, transferring, exporting, archiving and trashing, restoring deleted posts and whiteboard tools), automations, grading and LMS grade sync, arcade activities, pinning and connecting posts, post reactions and poll votes, the account, its folders and the current time, library administration (the library's name, bio and avatar, members, invites and pending invites, classes and their members, onboarding, sign-in, approved domains, permissions, content safety and attachment types) and padlet and library analytics. Search here before telling the user Padlet cannot do something, and before using a listed tool that only comes close to what the user asked. Each match gives its name, summary, arguments, an example and the tool to run it with: run_padlet_read_action, run_padlet_write_action or run_padlet_destructive_action. Run a match directly with that tool. Use describe_padlet_action only when you need an action's full rules.
Returns the full description, arguments and hints of one Padlet action that search_padlet_actions found. A run does not need this first.
Runs a Padlet action that only reads, by its name from search_padlet_actions, with that action's arguments.
Runs a Padlet action that changes something and can be changed back, by its name from search_padlet_actions, with that action's arguments.
Runs a Padlet action that deletes something or cannot be undone, by its name from search_padlet_actions, with that action's arguments. Confirm with the user first.
One endpoint, the same key, whichever client you use.
~/Library/Application Support/Claude/claude_desktop_config.json (Mac) · %APPDATA%\Claude\claude_desktop_config.json (Windows)
Replace API_KEY with your own key.
Already have an "mcpServers" section in your config? Just add the server entry inside it.
Discovery, routing, credentials, tool scoping and execution logs all happen at the gateway→connections stay ACTIVE with no work from you
Padlet MCP runs through a gateway that holds the credentials, scopes the access and records every call.
Managed auth, hosted MCP servers, and every Padlet MCP tool your agent needs.
Free to start.
Ask what happened in Slack yesterday and get a consolidated, channel by channel recap with links back to the threads.