add_library_approved_domain
ChatGPTRequest approval for email domains for a school library. - Purpose: Add pending domains that require approval to enable automatic user registration. - What this tool returns: { success: true, approvedDomains: [...] } with the pending domains. Guidance for use: - Requires user to be a library admin. - Only works for school libraries. - Supports adding multiple domains in one request. - All domains are added as pending and require approval. - Domain format must be valid (e.g., 'example.edu'). - 61 public email providers are blocked (gmail.com, yahoo.com, etc.). - Max 10 pending domains per library. - Domains are case-insensitive and must be unique per library.
analyze_post_attachments
ChatGPTAnalyzes 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.
bulk_invite_library_members
ChatGPTBulk invite users to a library via email or create emailless student accounts. - Purpose: Add multiple users to a library - either by sending email invitations or by creating emailless student accounts. - What this tool returns: { success: true, invited_count: N, duplicate_user_count: M, emailless_users_processed: [...] } or error details. Guidance for use: - Requires permission to invite members or manage members in the library. - Supports batch operations (up to 100,000 users). - Valid roles for educational libraries: admin, teacher, student. - Two modes based on email presence: 1. Email provided: User is invited via email (existing users added immediately, others receive invitation email). 2. Email blank + name + password provided: Creates a new emailless student account (only student role allowed). - For emailless users, the tool returns generated usernames that can be distributed to students. - Duplicate users (already members with same role or already invited) are skipped and counted. - Invalid inputs will cause the entire batch to fail with detailed error messages.
complete_attachment_upload
ChatGPTFinish an upload started by start_attachment_upload. Call this once per file, after the PUT to upload_url has succeeded. 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 the attachment field of create_posts or update_posts. One attachment per post; 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: "..." }.
complete_library_onboarding_step
ChatGPTMark an onboarding step as completed for a library. - Purpose: Complete a specific onboarding task or dismiss the entire onboarding flow. - What this tool returns: { success: true, onboarding_flow: {...} } with updated task status. Guidance for use: - School libraries require at least admin role to complete steps. - Non-school libraries (team/classroom) require owner role. - Valid step_id values depend on library type: - School: connect_school_sso, add_admins, add_teachers_and_students - Non-school: customize_team_info, add_members, pick_plan, make_private_wall - Once a step is completed, it cannot be reverted.
create_automation
ChatGPT• Purpose: Create automations on a padlet. - What this tool returns: { success: true, automation_id: "123" } on successful automation creation; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Automations are scheduled actions to be executed in the future. They must not be scheduled to execute on a past date. - The automation instructions should be calculated based on the user's timezone and current time. However, the scheduled_at timestamp must be converted to UTC. - Do not inform the user about timezone handling. You must use a human-friendly format when displaying dates. - After calling this tool, you MUST include the automations widget in your response using this exact format: <pdlt-widget data-type="padlet_automations" /> - Example response: "I've created a freeze automation scheduled for tomorrow at 9AM. <pdlt-widget data-type="padlet_automations" />"
create_library_saml_connection
ChatGPTCreate a new SAML connection for a library. - Purpose: Set up SAML SSO by providing IdP metadata URL and attribute mappings. - What this tool returns: { success: true, samlConnection: {...} } with the created connection. Guidance for use: - Requires user to be a library admin. - Only works for school libraries. - Fetches and parses SAML metadata from the provided IdP metadata URL. - Email and name attributes are required (cannot be empty). - Role attribute is optional (enables teacher role upgrade when set).
create_padlet
ChatGPTCreate 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: { id, 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, 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.
create_padlet_arcade_activity
ChatGPTCreates one Padlet Arcade activity of the chosen activity_type, generated from the grade, topic and details. - Purpose: creates a Padlet Arcade activity for the user. This is the tool's only operation; it does not call any other tool. - What this tool returns: { success: true, activity_name: ..., activity_url: ... } on success; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Use this tool if the user specifically requests it, or if the request is generic but the user may benefit from one of these activities. - Use mainly in educational environments. - After calling this tool, you MUST include the Padlet Arcade activity widget in your response using this exact format, replacing ID and URL with the actual values: <pdlt-widget data-type="padlet_arcade_activity" data-activity-name="ID" data-activity-url="URL" /> - Example response: "I have generated a multiple choice activity for you! <pdlt-widget data-type="padlet_arcade_activity" data-activity-name="multiple-choice-quiz" data-activity-url="https://..." />" - Keep your message concise (1-2 sentences) and always include the widget. - Supported activity types: - multiple-choice-quiz: a multiple choice quiz where students select the correct answer from several options. - memory-tiles: a memory matching game where students flip tiles to find matching pairs of related concepts. - flashcards: a set of flashcards for studying and memorization with terms on one side and definitions on the other. - matching: a matching activity where students connect related items from two columns. - fill-in-the-blank: a fill-in-the-blank activity where students complete sentences or passages with missing words. - sorting: a sorting activity where students categorize items into different groups or categories. - sequencing: a sequencing activity where students arrange items in the correct order (chronological, procedural, etc.). - word-search: a word search puzzle where students find hidden words related to a topic. - crossword: a crossword puzzle where students fill in words from clues related to a topic. - short-answer: a short-answer activity where students write brief responses to prompts.
create_post_connection
ChatGPTCreate a connection (arrow/line) between two posts on a Freeform padlet. - Purpose: Draw a directional connection from one post to another. - What this tool returns: { success: true, connection_id: "123" } on success; otherwise { success: false, message: "..." }. - Only works on Freeform format padlets. - Use get_padlet_content to get post IDs before calling this tool. - label is optional (max 50 characters). Omit it if no label is needed. - You cannot connect a post to itself. - Duplicate connections (same from_post_id and to_post_id) are not allowed.
create_posts
ChatGPTCreate new posts on a padlet. - Purpose: Add new posts to a padlet. - What this tool returns: { success: true, created_post_ids: { "new_1": "123", "new_2": "456" } } on successful creation, mapping temporary "new_" ids to real post ids; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. - 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. Guidance for use: - CREATING new posts: You MUST use a string id with "new_" prefix (e.g. "new_1", "new_abc"). Never use integer ids for new items. - Requires write permission on the padlet. - If setting an attachment, you must either: 1. include both attachment_type AND attachment_search 2. include attachment as a valid URL. - Poll and other attachments using attachment and attachment_search fields are mutually exclusive. Do not include both in the same post. - If the padlet's settings use the "map" format, you MUST include location_data with latitude, longitude, and location_name. - Create posts under a section: - Create the section first using the update_section tool, or make sure the section already exists. - The update_section tool returns created_section_ids mapping temporary "new_" ids to real section ids (e.g. { "new_1": "123" }). Use these real ids as section_id when creating posts. - If you don't have the real section id, use the get_padlet_content tool to look it up. - NEVER use "new_" prefixed ids as section_id — they will be rejected. - Post color: - Only the following colors are allowed: red, orange, green, blue, purple. There are a few exceptions: - If 'yellow' is provided, use 'orange' instead. - "white" and "black" values are only allowed if and only if the padlet color scheme is "light" and "dark" respectively. The counterpart color should not be allowed and be rejected instead. Use the padlet_settings -> color_scheme field to get the padlet color scheme with the get_padlet_content tool.
delete_automations
ChatGPT• Purpose: Delete multiple automations on a padlet. - What this tool returns: { success: true } on successful automation deletions; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Do not inform the user about timezone handling. You must use a human-friendly format when displaying dates. - After calling this tool, you MUST include the automations widget in your response using this exact format: <pdlt-widget data-type="padlet_automations" /> - Example response: "I've deleted the freeze automation scheduled for tomorrow at 9AM. <pdlt-widget data-type="padlet_automations" />"
delete_custom_fields
ChatGPTDelete custom fields from a padlet. - Purpose: Permanently delete one or more custom fields by their field_id. - What this tool returns: { success: true } on successful deletion; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Get field IDs from the padlet's current settings via the get_padlet_content tool. - This action is irreversible. Always inform the user that deletion is permanent and confirm before proceeding.
delete_post_connection
ChatGPTDelete a connection between two posts on a Freeform padlet. - Purpose: Remove an existing directional connection (arrow/line) between two posts. - What this tool returns: { success: true } on success; otherwise { success: false, message: "..." }. - Only works on Freeform format padlets. - Use get_padlet_content to get connection IDs before calling this tool.
export_padlet
ChatGPTExport a padlet to PDF, an image, a spreadsheet (XLSX), CSV, Markdown, printable HTML, or a ZIP of its attachments. - Purpose: Prepare a plain download or status link for a padlet. - What this tool returns: { success: true, export_url: "...", format: "..." } when a link is ready; otherwise { success: false, message: "..." }. - The link carries no access token. Opening it may show a status page that starts the export, and may require a signed-in Padlet browser session. - Calling this tool prepares the link. It does not start the export. - For PDF, page_size may be a4 or letter and orientation may be portrait or landscape. - spreadsheet is the Excel XLSX export. - zip_attachments is refused when the padlet has no downloadable attachments. - Sandbox export is not supported. - Pass wall_url, the padlet link. There is no id lookup.
freeze_padlet
ChatGPT• Purpose: Freeze or unfreeze a padlet. - What this tool returns: { success: true } on successful freeze/unfreeze; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. - When a padlet is frozen: - New posts cannot be added. - Existing posts cannot be edited or deleted. - Comments and reactions will be disabled. - Settings cannot be modified. Guidance for use: - Use only if the user has requested to freeze now. For scheduled freezes, use the "create_automation" tool.
get_current_user_info
ChatGPTRetrieves information about the currently authenticated user. Use this tool to get details about who is making the request. Returns user profile information including name, email, username, avatar, bio, role, and language preference.
get_library_approved_domains
ChatGPTGet approved email domains for a school library. - Purpose: Retrieve list of email domains allowed for automatic user registration. - What this tool returns: { success: true, approvedDomains: [...] } with domain list. Guidance for use: - Requires user to be at least a library admin. - Only works for school libraries. - Returns domains with approval status (approved or pending). - Each domain includes role assignment (admin, teacher, student).
get_library_attachment_type_settings
ChatGPTFetches attachment type settings for a library. Works with school and classroom libraries only. Returns the attachment type settings including: - modes: Object mapping attachment type to mode Valid modes: "default_on", "default_off", "disabled" Attachment types: padlet, upload, link, camera, video_recorder, ar_lenses_enabled, audio_recorder, screen_recorder, draw, poll, google_drive, microsoft_one_drive_picker, i_cant_draw, talk_for_me, photo_album, image_search, stickers, gif, youtube, spotify, web_search, location, three_d_object_search, document_scanner, sound_and_visual_effects, arcade, device_uploads
get_library_content_safety
ChatGPTFetches content safety/moderation settings for a library. Works with school and classroom libraries only. Returns the content moderation settings including: - contentModerationMode: The default moderation mode for padlets Valid values: none, auto, students_only, all - moderationCategories: Array of category settings with name, enabled, and modifiable flags Categories: sexual, violence, bullying, drugs, alcohol, weapons, child_exploitation, child_safety, self_harm, profanity
get_library_info
ChatGPTGet detailed information about a library including settings, integrations, and permissions. - Purpose: Retrieve comprehensive library data including LTI, rostering, Microsoft Teams, Google Classroom settings, and more. - What this tool returns: { success: true, library: {...} } with the full library object including all settings and configurations. Guidance for use: - Requires the user to be a member of the library with view permissions. - Returns full library details including bio, integrations (LTI, Google Classroom, Microsoft Teams, Google Workspace), rostering settings, membership counts, and billing information. - Use this tool when you need complete library information for a specific library the user has access to.
get_library_invite_links
ChatGPTGet library invite links including URLs and enabled status for all roles. - Purpose: Retrieve invite links for a library to see which roles have active invite links. - What this tool returns: { success: true, invite_links: {...} } with invite link URLs and enabled flags for each role. Guidance for use: - Requires the user to have permission to invite members to the library. - Returns invite links and enabled status for applicable roles based on library type: - Team libraries: admin, maker, contributor - Classroom libraries: teacher, student - School libraries: admin, teacher, student - Empty string is returned for disabled invite links. - When a Team library has no payment method, the result includes role_change_locked: true and a message. The admin and maker URLs are then withheld (empty string) because joins through them are refused, but their enabled flags still reflect the stored state, and those links can still be turned off with update_library_invite_links. Tell the user a payment method is needed before those links work.
get_library_oauth_settings
ChatGPTGet OAuth login provider settings for a school library. - Purpose: Retrieve which OAuth providers are enabled (Google, Microsoft, Apple, Clever, ClassLink, password). - What this tool returns: { success: true, oauthSettings: {...} } with enabled providers and third-party IDs. Guidance for use: - Requires user to be a library admin. - Only works for school libraries (not team or classroom). - Returns list of OAuth providers with enabled status. - Includes Clever district ID and ClassLink tenant ID if configured.
get_library_onboarding_flow
ChatGPTGet the onboarding flow progress for a library. - Purpose: Retrieve the current onboarding tasks and their completion status for a library. - What this tool returns: { success: true, onboarding_flow: {...} } with tasks showing false (not done) or timestamp (done). Guidance for use: - School libraries require at least admin role to access. - Non-school libraries (team/classroom) require owner role. - Tasks vary by library type: - School: connect_school_sso, add_admins, add_teachers_and_students - Non-school: customize_team_info, add_members, pick_plan, make_private_wall - School admins do not see the add_admins task (only owners do).
get_library_permissions
ChatGPTFetches all permission settings for a library. Works with school, classroom, and team libraries. Returns the complete library settings including: - For school/classroom libraries: student and teacher permission settings - For team libraries: member permission settings The response includes all boolean permissions (e.g., canMakeWalls, canViewGallery) and V2 access control settings (e.g., allowVisitorAccess, listedSetting, defaultWallVisitorRole).
get_library_saml_settings
ChatGPTGet SAML connection settings for a library. - Purpose: Retrieve SAML IdP configuration including connection name, metadata URL, attribute mappings. - What this tool returns: { success: true, samlConnections: [...] } with all SAML connections. Guidance for use: - Requires user to be a library admin. - Works for school and team libraries. - Returns array of SAML connections (can have multiple). - Each connection includes IdP metadata URL, attribute mappings, SP entity ID.
get_padlet_access_settings
ChatGPT• Purpose: Get the access settings for a padlet like student role, teacher role, visitor role, isListed (whether the padlet is shown on the dashboard), isPublished (whether the padlet is shown on user profile and web), if the padlet requires visitor to be a logged in user, the padlet's access password. Also return collaborators information. - What this tool returns: { success: true, access_settings: {...} } with complete access settings including collaborators and visitor role. Guidance for use: - ALWAYS use this tool to get the access settings and collaborators information of a padlet before making changes.
get_padlet_automations
ChatGPT• Purpose: get information about the automations on a padlet. - What this tool returns: { success: true, automations: [...] } on successful automation settings retrieval; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - The scheduled_at timestamp is in UTC. You must convert them to the user's timezone when displaying them. - Do not inform the user about timezone handling. You must use a human-friendly format when displaying dates. - After calling this tool, you MUST include the automations widget in your response using this exact format: <pdlt-widget data-type="padlet_automations" /> - Example response: "You have a freeze automation scheduled for tomorrow at 9AM. <pdlt-widget data-type="padlet_automations" />"
get_padlet_content
ChatGPTGet detailed content of a specific padlet including all posts, comments, sections, and settings. - Purpose: Retrieve the current state of a padlet before making updates, or fetch a padlet the user has pasted a URL for. - What this tool returns: { success: true, wall_url: "...", wall_id: 123, wall_public_key: "...", padlet: {...} } with complete padlet data including title, description, format, sections, and all posts with their content. Guidance for use: - Use this tool after list_padlets to understand the current content before making changes. - The returned post_id and section_id values can be used in create_posts, update_posts, and update_section tools. - Posts are returned in the order they appear on the padlet. - Each post includes an editable field indicating whether the current user can edit that post. - Only returns the content if the current user has read access to the padlet.
get_padlet_content_settings
ChatGPT• Purpose: Get the content settings of a padlet like content moderation mode and content (copy) protection setting. - What this tool returns: { success: true, content_settings: {...} } with complete content settings data including content moderation mode and content protection setting. Guidance for use: - Content moderation mode is to decide which posts and comments require approval. The "all" value may also be referred to as "manual" by users because it means all posts and comments require manual approval. - Content protection (also known as copy protection - use this term when talking to users) setting is to decide if the padlet's content can be remade, downloaded, and exported. - is_remakeable is to decide if the padlet's content can be remade.
get_padlet_post_properties
ChatGPT• Purpose: Get the padlet (also known as wall)'s post properties: placeholders, enabled and required fields, and which attachment types are enabled when create/update a post. - What this tool returns: { success: true, post_properties: {...}, library_forbidden_attachment_types: [...] }; otherwise { success: false, message: "..." }. Guidance for use: - post_properties.attachment_settings is true when every attachment type is enabled, false when attachments are disabled, or an object of attachment type => enabled. A type missing from the object is disabled. - library_forbidden_attachment_types lists the attachment types the padlet's library does not allow; they cannot be enabled. - Change these settings with update_padlet_post_properties.
get_time
ChatGPTReturns the current time (or an offset from it) in both ISO 8601 format and unix epoch seconds. - Purpose: Get the current real time in UTC, optionally offset by a number of seconds, for any time-based calculations. - What this tool returns: { success: true, iso8601: "...", timestamp: ... } with the time in ISO 8601 format and as a unix epoch integer. - Use offset_seconds to get a future or past time relative to now (e.g. 7200 for 2 hours from now, -3600 for 1 hour ago). - Use timezone to get the ISO 8601 time in a specific timezone.
get_whiteboard_tool_settings
ChatGPT• Purpose: Get all whiteboard/sandbox tool settings including which toolbar tools are enabled/disabled, AR lenses, and video/screen recording length limit. - What this tool returns: { success: true, whiteboard_tool_settings: {...}, ar_lenses_enabled: true/false, video_length_limit: <seconds or nil> } Guidance for use: - whiteboard_tool_settings shows which toolbar tools are enabled or disabled. It is a hash of tool_id => boolean (true = enabled, false = disabled) - ar_lenses_enabled indicates whether augmented reality filters are available in the video recorder. - video_length_limit is the maximum recording length in seconds for video and screen recorder (nil means using the default/max limit). - Use update_whiteboard_tool_settings to change any of these settings.
grade_posts
ChatGPTGrade posts on a padlet by saving a numeric score per post, and optionally an overall written comment per student. - Purpose: Create or update Score grades for one or more posts. Optionally save one written feedback comment per student. - What this tool returns: { success: true, graded_count: N } on success; { success: false, message: "..." } on failure. - You must call get_padlet_content first to read the posts before grading. - Only wall builders and admins can grade posts. - Scores must be integers between 0 and the wall's max_score. Read max_score from padlet_settings -> grading_settings -> max_score in the get_padlet_content result. - For student_comments: a student may have multiple posts — provide ONE comment per student using any one of their post_ids to identify them. - Do NOT report back to the user asking for confirmation — just grade immediately.
invite_email_as_padlet_collaborator
ChatGPTInvite an email as a padlet collaborator. - Purpose: Invite an email as a padlet collaborator. - What this tool returns: { success: true } on successful invitation; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }.
list_libraries
ChatGPTLists the libraries the current user is a member of, with the user's role in each. - Purpose: resolve which library the user means, so the other library tools can be called with its id. - What this tool returns: { success: true, libraries: [{ id, name, type, role, library_url }] }. Guidance for use: - Call this first whenever a request refers to a library by name or in prose ("my school", "the team library") instead of by id. - type is one of solo, classroom, school, team. A solo library is the user's own personal library. - role is the user's role in that library, e.g. owner, admin, teacher, student, maker, contributor. - library_url is the library's padlet.com link, null for a solo library. Pass it as create_padlet's library_url to create the padlet in that library, or pass personal: true for a solo library. - Every library the user is an active member of is listed, whatever their role. Check role before assuming they can administer it. - Deactivated memberships and suspended libraries are left out, so an empty list means the user has no active membership anywhere rather than that the lookup failed.
list_padlets
ChatGPTList padlets owned by the current user, ordered by most recently updated. - Purpose: Discover what padlets the user owns. - What this tool returns: { success: true, padlets: [...] } with an array of padlet objects containing id, title, description, format, url, and timestamps. Guidance for use: - Use this tool to find which padlets the user owns before performing operations. - Pass the returned url as wall_url to get_padlet_content and to every other tool that takes a padlet. - Results are ordered by most recently updated (updated_at descending). - Only returns active padlets (excludes hidden, archived, suspended, or deleted padlets).
pin_post
ChatGPTPin/unpin a post to the top of the padlet/section it belongs to. - Purpose: Pin/unpin a post to the top of the padlet/section it belongs to. - What this tool returns: { success: true } on successful pin/unpin; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - post_id should be an integer ID. It should be available through get_padlet_content tool. Things like new_1, new_abc are not valid post ids. - If a post was newly created using ID starting with "new_", the number part of that ID is NOT the correct post id. ALWAYS use get_padlet_content tool to get the correct post id.
remake_padlet
ChatGPTRemake (clone) a padlet to create a copy with configurable options. - Purpose: Create a copy of an existing padlet with optional content copying. - What this tool returns: On success, returns { success: true, wall_url: "...", workspace } with the URL of the newly created padlet. workspace is { name, library_url } for a library or { personal: true }; tell the user where the copy went. On failure, returns { success: false, message: "..." }. Guidance for use: - Use this tool when the user wants to create a copy, clone, duplicate, or remake of their padlet. - The user must have permission to remake the padlet (they must be able to view it and the padlet must allow remaking). - By default, posts/objects and wallpaper are copied. Comments and reactions are not copied by default. - IMPORTANT: Only call this tool ONCE per user request. Even if the user asks to remake multiple times, only remake once. Inform them that you can only remake one padlet at a time. - The remake is performed synchronously. It may take a moment for large padlets. - Communication: The user cannot see tool call results directly. After calling this function, you MUST include the wall_url in your response using markdown link format: [Click here to view your remade padlet](wall_url). Admin-only options: - with_original_authors and with_same_privacy are admin-only options that require the user to be an admin of the padlet. - If a non-admin user tries to use these options, the tool will return an error. Where the copy 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, 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.
remove_library_approved_domains
ChatGPTRemove approved email domains from a school library. - Purpose: Remove one or more approved domains from a school library. - What this tool returns: { success: true, removedCount: N, removedDomains: [...] } or error details. Guidance for use: - Requires user to be a library admin. - Only works for school libraries. - Accepts domain names (strings), not domain IDs. - Domain matching is case insensitive. - If any domain is not found, the operation fails and returns an error listing those domains. - Removes domains regardless of their approval status (pending or approved).
remove_library_email_invites
ChatGPTRemove pending email invitations from a library. - Purpose: Remove one or more pending email invitations that have not yet been accepted. - What this tool returns: { success: true, removedCount: N } or error details including emails that were not found. Guidance for use: - Requires permission to manage members in the library. - Accepts multiple emails to remove in a single request. - Email matching is case insensitive. - If some emails are not found as pending invites, the operation will return an error listing those emails. - Only removes pending invitations (stored in LibraryProp), not existing library memberships.
restore_posts_and_sections
ChatGPTRestore soft-deleted posts and/or sections on a padlet. - Purpose: Restore posts or sections that were previously deleted (e.g. by the user or by a prior tool call). Deletions are soft-deleted, so they can be restored. - What this tool returns: { success: true } on successful restore; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Restoring sections requires admin permission on the padlet. Restoring posts requires edit permission on each post. - Provide post_ids to restore specific posts, section_ids to restore specific sections, or both. At least one non-empty list is required. - When restoring a section AND its posts, provide BOTH the section_ids AND the post_ids. Posts are NOT automatically restored when a section is restored. Use the deleted_post_ids returned by the update_section or update_posts tool to know which post_ids to include. - When restoring only posts (not a section), provide post_ids. - Only soft-deleted items can be restored. If an id is not found or was not soft-deleted, it is skipped; others are still restored. - Deleted posts and sections are permanently removed after 24 hours; restore must be requested within that window. - Always use the exact deleted_post_ids and deleted_section_ids returned by update_section or update_posts tool call. Never guess or fabricate IDs. - Use get_padlet_content to see current state; soft-deleted items are not returned there. The user may ask to "undo" a deletion or "restore" something they or the assistant just deleted.
search_walls
ChatGPTSearch for padlets in the user's account using semantic search. - Purpose: Find relevant padlets based on a search query. This allows discovering padlets by their content, not just by browsing recent padlets. - What this tool returns: { success: true, results: [...] } with an array of matching padlets containing id, title, description, url, and other relevant information. Guidance for use: - Use this tool to find specific padlets when the user mentions content or topics (e.g., "my project padlet", "padlet about climate change"). - The search uses semantic/vector search, so it understands meaning, not just exact keyword matches. - Results are ranked by relevance to the search query. - Only returns padlets the current user has access to (owned by them or shared with them). - Pass a result's url as wall_url to get_padlet_content and to every other tool that takes a padlet. - If no results are found, consider using list_padlets to browse recent padlets instead. Results are nearest matches, not exact ones: - This tool always returns the closest padlets it can find. It does NOT return an empty list just because the padlet the user asked for does not exist, so a non-empty response is not evidence that the padlet was found. - Before using a result, check that its title and description actually match what the user asked for. If none of them do, tell the user you could not find that padlet — never silently substitute the nearest result. - Never write to, share, invite anyone to, grade, freeze, or delete anything on a result whose title does not clearly match the user's request. Confirm which padlet they meant first. - A padlet created moments ago may not be indexed yet. When the user refers to a padlet from earlier in this conversation, reuse its url directly instead of searching for it, and use list_padlets for recently created or updated padlets.
send_library_email_invites
ChatGPTSend email invitations to users to join a library with specific roles. - Purpose: Invite multiple users to a library via email in batch. - What this tool returns: { success: true, duplicate_user_count: N, invited_count: M } or error details. Guidance for use: - Requires permission to invite members or manage members in the library. - Supports batch invites (up to 100,000 users). - Valid roles depend on library type: - Educational libraries (classroom/school): admin, teacher, student - Team libraries: admin, maker, contributor - Existing Padlet users are added immediately as library members. - Non-registered users receive email invitations with reminders at 7, 30, and 60 days. - Duplicate users (already members with same role or already invited) are skipped and counted. - Invalid emails or roles will cause the entire batch to fail with detailed error messages.
start_attachment_upload
ChatGPTStart uploading a file from the local filesystem so it can be attached to a padlet. Only call this if you can both read a local file and send an HTTP PUT (with curl, for instance). If you cannot — no filesystem, or no way to make an HTTP request — do not call this tool: pass the file's public URL straight to the attachment field of create_posts or update_posts. Anything already on the public web never needs this tool at all. How it works: 1. Call this tool with the file's real size in bytes and its content type. 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 as a post's attachment field. Returns { success: true, upload_url: "...", uploaded_url: "...", expires_at: "..." }, or { success: false, error_code: "...", message: "..." }.
sync_grades_to_lms
ChatGPTSync all grades for a padlet to the connected LMS (e.g. Canvas, Schoology) via LTI passback. - Purpose: Push all existing post grades to the LMS gradebook. - What this tool returns: { success: true } on success; { success: false, message: "..." } on failure. - Only available when LMS passback is enabled on the padlet. - Only wall builders and admins can trigger a sync. - The sync may be asynchronous for padlets with many students — in that case the result will indicate async: true and the LMS will update shortly. - Do NOT report back to the user asking for confirmation — just sync immediately.
update_auto_remake_settings
ChatGPT• Purpose: Enable, disable, or configure the autoremake link on a padlet. Autoremake links allow others to create their own copy of the padlet via a special link. - What this tool returns: On enable/update success, { success: true, remake_link_url: "<url>" }. On disable success, { success: true }. Otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Use this tool when the user wants to let others remake (copy) their padlet. - Only set the parameters you want to change. Omit parameters to keep their current values. - For board padlets: use copy_posts and use_original_posts_authorship to control what gets copied. - For whiteboard padlets: use copy_objects instead (copy_posts and use_original_posts_authorship are ignored). - After calling this tool with enable: true, you MUST include the autoremake link widget in your response using this exact format, replacing REMAKE_LINK_URL with the remake_link_url from the tool result: <pdlt-widget data-type="padlet_autoremake_link" data-url="REMAKE_LINK_URL" /> - Example response: "I've enabled the autoremake link for your padlet. <pdlt-widget data-type="padlet_autoremake_link" data-url="https://padlet.com/remake/..." />" - Keep your message concise (1-2 sentences) and always include the widget.
update_breakout_settings
ChatGPT• Purpose: Enable breakout room links on a padlet. Breakout rooms create individual links to each section, enabling collaborative group work. - What this tool returns: - { success: true } when breakout rooms are enabled successfully or already enabled. - { success: false, user_action_required: true, ... } when the padlet needs a layout change first. The message contains a breakout rooms widget that lets the user pick a compatible layout. - { success: false, message: "..." } on error. Guidance for use: - Use this tool when the user wants to create separate links for each section of their padlet so different groups can work in different sections. - After calling this tool successfully, you MUST include the breakout rooms widget in your response using this exact format: <pdlt-widget data-type="padlet_breakout_rooms" /> - Example response: "I've enabled breakout rooms for your padlet. <pdlt-widget data-type="padlet_breakout_rooms" />" - When this tool returns user_action_required, include the message content (which contains a breakout rooms widget with layout selection) in your response verbatim. - Keep your message concise (1-2 sentences) and always include the widget.
update_delete_padlet_collaborator_user
ChatGPT• Purpose: Update/delete a padlet collaborator user. - What this tool returns: { success: true } on successful update/delete; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - ALWAYS use the get_padlet_access_settings tool first to get the current access settings, including collaborators so you can get information like user id and role. - Only role can be updated. - Use the is_deleting parameter to indicate whether to delete the collaborator user. true means delete, false means update.
update_library_attachment_type
ChatGPTUpdates a single attachment type setting for a library. Works with school and classroom libraries only. CRITICAL: The API only accepts exactly 1 attachment type per request. VALID ATTACHMENT TYPES: padlet, upload, link, camera, video_recorder, ar_lenses_enabled, audio_recorder, screen_recorder, draw, poll, google_drive, microsoft_one_drive_picker, i_cant_draw, talk_for_me, photo_album, image_search, stickers, gif, youtube, spotify, web_search, location, three_d_object_search, document_scanner, sound_and_visual_effects, arcade, device_uploads VALID MODES: default_on, default_off, disabled SPECIAL BEHAVIOR: - photo_album is automatically disabled if ALL image picker sources are disabled (upload, link, camera, draw, i_cant_draw, image_search, gif) Examples: - Disable video recorder: attachment_type="video_recorder", mode="disabled" - Set upload to default off: attachment_type="upload", mode="default_off"
update_library_content_safety
ChatGPTUpdates content safety settings for a library. Works with school and classroom libraries only. CRITICAL: You can update EITHER the moderation mode OR moderation categories per request, not both. VALID CONTENT MODERATION MODES: none, auto, students_only, all VALID MODERATION CATEGORIES (all boolean, enable/disable): sexual, violence, bullying, drugs, alcohol, weapons, child_exploitation, self_harm, profanity NOTE: "child_safety" is NOT modifiable - it is always enabled Examples: - Update moderation mode: content_moderation_mode="auto" - Disable a category: moderation_category="sexual", category_enabled=false
update_library_invite_links
ChatGPTUpdate library invite links by enabling or disabling them for specific roles. - Purpose: Enable or disable invite links for individual roles in a library. - What this tool returns: { success: true, invite_links: {...} } with the updated invite link URLs and enabled flags. Guidance for use: - Requires role-specific permissions based on library type and role being updated. - When an invite link is enabled, a new code is automatically generated, even if the link was already enabled. The previous link for that role stops working permanently, so only enable a link the user wants reset. - Only include the role parameters you want to update (omit others to leave unchanged). - Available roles depend on library type: - Team libraries: admin, maker, contributor - Classroom libraries: teacher, student - School libraries: admin, teacher, student - Returns the full updated invite links state after the update. - When a Team library has no payment method, the admin and maker URLs are withheld (empty string) from the result and it includes role_change_locked: true and a message. Disabling links still works.
update_library_oauth_settings
ChatGPTUpdate OAuth login provider settings for a school library. - Purpose: Enable or disable OAuth providers (Google, Microsoft, Apple, Clever, ClassLink, password). - What this tool returns: { success: true, oauthSettings: {...} } with updated provider settings. Guidance for use: - Requires user to be a library admin. - Only works for school libraries (not team or classroom). - Cannot disable last OAuth provider unless SAML is configured. - Clever district ID and ClassLink tenant ID must be globally unique.
update_library_permission
ChatGPTUpdates a single permission setting for a library. Supports all library types (school, classroom, team). CRITICAL: The API only accepts exactly 1 setting per request. You cannot update multiple settings at once. Parameters: - library_id: The library ID - role: The role to update permissions for (varies by library type - see VALID ROLES below) - setting_key: The permission field name in snake_case (see VALID SETTINGS below) - setting_value: The new value (varies by setting - see VALID SETTINGS below) VALID ROLES BY LIBRARY TYPE: - Team libraries: "maker", "contributor" (both share the same permission set, mapped to :member internally) - School libraries: "student", "teacher" - Classroom libraries: "student", "teacher" VALID SETTINGS BY LIBRARY TYPE (setting_key => allowed values, :boolean means true/false): TEAM LIBRARIES: {member: {listed_setting: ["not_allowed", "default_on", "default_off", "required"], publishable_setting: ["not_allowed", "default_on", "default_off", "required"], require_password: ["not_allowed", "default_on", "default_off", "required"], require_login: ["not_allowed", "default_on", "default_off", "required"], allow_visitor_access: ["allowed", "not_allowed", "required"], allow_member_access: ["allowed", "not_allowed", "required"], default_wall_visitor_role: [:none, :reader, :commenter, :writer], default_wall_member_role: [:none, :reader, :commenter, :writer]}} SCHOOL LIBRARIES: {student: {can_make_walls: :boolean, can_access_non_school_libraries: :boolean, can_make_private_walls: :boolean, can_make_library_wide_hidden_walls: :boolean, can_make_library_wide_dashboard_walls: :boolean, can_make_password_walls: :boolean, can_make_secret_logged_in_visitors_walls: :boolean, can_make_secret_all_visitors_walls: :boolean, can_make_public_walls: :boolean, default_wall_privacy: [:private, :library_wide_unlisted, :library_wide_listed, :password_protected, :logged_in_users_only, :secret, :public], default_wall_visitor_permission: [:none, :read, :write], listed_setting: ["not_allowed", "default_on", "default_off", "required"], publishable_setting: ["not_allowed", "default_on", "default_off", "required"], require_password: ["not_allowed", "default_on", "default_off", "required"], require_login: ["not_allowed", "default_on", "default_off", "required"], allow_visitor_access: ["allowed", "not_allowed", "required"], allow_student_access: ["allowed", "not_allowed", "required"], allow_teacher_access: ["allowed", "not_allowed", "required"], default_wall_visitor_role: [:none, :reader, :commenter, :writer], default_wall_student_role: [:none, :reader, :commenter, :writer], default_wall_teacher_role: [:none, :reader, :commenter, :writer], can_view_gallery: :boolean, can_access_walls_from_outside_school: :boolean, can_invite_collaborators_from_outside_school: :boolean, can_transfer_walls: :boolean, can_use_ai_image_attachments: :boolean, can_use_ai_speech_attachments: :boolean, can_use_ai_recipes: :boolean, can_use_padlet_intelligence: :boolean, can_use_virtual_field_trip: :boolean}, teacher: {can_make_walls: :boolean, can_access_non_school_libraries: :boolean, can_make_private_walls: :boolean, can_make_library_wide_hidden_walls: :boolean, can_make_library_wide_dashboard_walls: :boolean, can_make_password_walls: :boolean, can_make_secret_logged_in_visitors_walls: :boolean, can_make_secret_all_visitors_walls: :boolean, can_make_public_walls: :boolean, default_wall_privacy: [:private, :library_wide_unlisted, :library_wide_listed, :password_protected, :logged_in_users_only, :secret, :public], default_wall_visitor_permission: [:none, :read, :write], listed_setting: ["not_allowed", "default_on", "default_off", "required"], publishable_setting: ["not_allowed", "default_on", "default_off", "required"], require_password: ["not_allowed", "default_on", "default_off", "required"], require_login: ["not_allowed", "default_on", "default_off", "required"], allow_visitor_access: ["allowed", "not_allowed", "required"], allow_student_access: ["allowed", "not_allowed", "required"], allow_teacher_access: ["allowed", "not_allowed", "required"], defau…
update_library_saml_connection
ChatGPTUpdate an existing SAML connection for a library. - Purpose: Modify SAML IdP configuration including attribute mappings, connection name, and dev mode. - What this tool returns: { success: true, samlConnection: {...} } with the updated connection. Guidance for use: - Requires user to be a library admin. - Works for school and team libraries. - Updating idp_metadata_url triggers full metadata re-sync. - Cannot set email_attribute or name_attribute to empty string. - Setting/clearing role_attribute affects allow_upgrade_to_teacher_role.
update_padlet_access_settings
ChatGPT• Purpose: Update the access settings of a padlet like student role, teacher role, visitor role, isListed (whether the padlet is shown on the dashboard), isPublished (whether the padlet is shown on user profile and web), if the padlet requires visitor to be a logged in user, the padlet's access password. - Effect: changes who can open, post to, or find the padlet, immediately and for everyone. A visitor_role above "none" lets anyone with the link open the padlet, and is_published: true lists it on the user's public profile and the web. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - This tool only updates access settings. If you want to work with collaborators, use padlet collaborator specific tools like update_delete_padlet_collaborator_user, invite_email_as_padlet_collaborator. - Some times user may simply ask to update library/school/organization member's role for the padlet. In this case, set both student role and teacher role at the same time. - Only set the values that you want to update amongst student role, teacher role, and visitor role. - If require_password is set to true but not password provided, a random password will be generated. Or if the wall already has a password, it'll be reused. - Right now always update student role and teacher role together since we don't support updating them separately in the UI.
update_padlet_appearance
ChatGPTUpdate the padlet's visual appearance: color scheme, post size, or font. - Purpose: Change how the padlet looks (color scheme, post size, font). - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Include only the fields you want to change. - color_scheme: "light" or "dark". Not supported for sandbox or map padlets. - post_size: "standard" or "wide". Not supported for canvas, table, or sandbox padlets. - font: Only use this if the user explicitly specifies a font by name. If the user just wants to browse or change the font without specifying which one, do NOT call this tool — instead return the font selector widget. - You MUST use this JSON to translate the UI name to the font internal value for non-sandbox padlets, where the key is the UI name and the value is the internal value: {"Alps":"alps","Thames":"thames","Niagara":"niagara","Fuji":"fuji"}. - You MUST use this JSON to translate the UI name to the font internal value for sandbox padlets, where the key is the UI name and the value is the internal value: {"Modern":"alps","Classic":"thames","Playful":"shantell","Technical":"courier"}. - Do not use this tool for behavioral settings (comments, reactions, sections, custom fields) — use update_padlet_settings instead.
update_padlet_content_settings
ChatGPT• Purpose: Update the content settings of a padlet like content moderation mode and content (copy) protection setting. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Content moderation mode is to decide which posts and comments require approval. Possible values are: none, auto, students_only, all. The "all" value may also be referred to as "manual" by users because it means all posts and comments require manual approval. - Content protection (also known as copy protection) setting is to decide if the padlet's content can be remade, downloaded, and exported. Possible values are: none, disable_all. - is_remakeable is to decide if the padlet's content can be remade. Possible values are: true/false. - Only send the values that you want to update. - NEVER set is_remakeable to true when content protection is not none. - If user wants to only "Disable remakes" or ask to change content protection to disable remakes, set content_protection to none and is_remakeable to false. - If user wants to set content protection to none without saying anything else, also set is_remakeable to true.
update_padlet_icon
ChatGPTUpdate only the padlet's icon, which is also used as its favicon. - Purpose: Update a padlet's icon only. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Use this tool only if the user requests to update the padlet icon and they do specify a search term or particular preference. - Must name the padlet and include icon_search_query. - Communication: The user can see the result of the function call, so NEVER send a message before calling the function. After calling the function, respond with a concise one sentence confirmation.
update_padlet_layout
ChatGPTChange the padlet's format/layout. - Purpose: Convert a padlet to a different format/layout (e.g., from grid to timeline, stream to shelf, etc.). - What this tool returns: { success: true } on successful conversion; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - You MUST use this JSON to translate the UI name to the layout internal value, where the key is the internal value and the value is the UI name: {"free":"프리폼","grid":"담벼락","matrix":"그리드","shelf":"컬럼","stream":"스트림","map":"지도","table":"테이블","timeline":"타임라인","timeline_v2":"행"}. - The "shelf" layout is also known as "columns". Always use "shelf" internally. - You must not inform the user about the logic behind the conversion. Important: - You cannot convert to or from whiteboard/sandbox layout. - This tool only changes the layout. Use update_padlet_settings for other settings.
update_padlet_map_style
ChatGPTUpdate the padlet's map style. - Purpose: Change the theme of a map padlet. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - You MUST ONLY use this tool in padlets in the "map" format. - Use this tool when the user requests to change the map style specifically, or the wallpaper/background of a "map" padlet. - You MUST ALWAYS return a different map style than the current one. - Besides updating the theme, you MUST also guide the user on how to choose a different one. - After calling this tool, you MUST include the map style widget in your response using this exact format: <pdlt-widget data-type="padlet_map_style" /> - Example response: "You can update the map styles through the "Settings" panel. <pdlt-widget data-type="padlet_map_style" />" - This is the list of supported themes: - Id: 100, Name: The Usual, Color scheme: light - Id: 101, Name: Silver, Color scheme: light - Id: 102, Name: Black Metal, Color scheme: dark - Id: 103, Name: Medieval, Color scheme: light - Id: 104, Name: Retro, Color scheme: light - Id: 105, Name: Tron, Color scheme: dark - Id: 106, Name: Night, Color scheme: dark - Id: 107, Name: Amusement Park, Color scheme: light - Id: 108, Name: Video Game, Color scheme: light - Id: 109, Name: Satellite, Color scheme: light - Id: 110, Name: Watercolor, Color scheme: light
update_padlet_post_properties
ChatGPTUpdate the padlet (also known as wall)'s post properties like placeholders for subject, body, and attachment when create/update a post, enable/disable subject and body fields, which fields are required, etc. - Purpose: Update the padlet (also known as wall)'s post properties like placeholders for subject, body, and attachment when create/update a post, enable/disable subject and body fields, which fields are required, etc. - What this tool returns: { success: true, attachment_settings: <stored value> } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Include only the things you need to change under "post_properties". - Cannot require a field that is not enabled. - attachment_settings as an object is a per-type patch: only the listed types change and unlisted types keep their current value. Example: { "poll": false }. - attachment_settings true enables every attachment type the library permits; false disables attachments entirely. - photo_album needs at least one image source on (file, media_library, link, photo_booth, drawing, ai_image_search, image_search, gif_search). It is switched off when none is on. - device_uploads needs at least one device source on (file, photo_booth, video_recorder, audio_recorder, drawing, photo_album). It is switched off when none is on. - Attachment types the library forbids cannot be enabled and are always kept off.
update_padlet_post_sort
ChatGPTUpdate the display ORDER of posts in the padlet (e.g. newest first, oldest first, alphabetical, by custom field). - Purpose: Change the sort order of posts. This tool does NOT organize or categorize posts by content, topic, or theme. To do that, create sections and move relevant posts into them using update_section and update_posts instead. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Communication: The user can see the result of the function call, so NEVER send a message before calling the function. After calling the function, respond with a concise one sentence confirmation. Sorting by custom fields: - Sortable custom field types: vote, rating, score, number, date, text, single_select. - On reactions_migrated walls, vote/rating are custom fields. Use custom_prop sorting instead of reactions_asc/reactions_desc. - To sort by a custom field, use the format: custom_prop:{field_id}:{asc or desc} - Get the field_id from the custom_fields in get_padlet_content (each field has a field_id). - Example: To sort by a vote field with field_id "abc123" in descending order, use "custom_prop:abc123:desc". Emoji reactions: - Emoji reactions (e.g. heart, thumbs up) are NOT sortable. They don't have a single numeric value that can be ranked. - If reactions_migrated is true and the padlet uses emoji reactions, sorting by likes/reactions is not possible. Inform the user that emoji reactions cannot be sorted, and suggest adding a vote custom field if they need sortable likes. - NEVER use reactions_asc or reactions_desc on reactions_migrated walls.
update_padlet_settings
ChatGPTUpdate only the padlet's settings. - Purpose: Toggle padlet settings like sections, comments, reactions, and add custom fields. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Include only the fields you need to change under "settings". - For comments setting, use settings.comments_enabled = true/false. - Do not include posts/sections/title/description/wallpaper in this tool. - To change the padlet format/layout, use the update_padlet_layout tool instead. - Sections cannot be disabled on shelf (columns) format padlets. To remove sections from a shelf padlet, use the update_padlet_layout tool to change the format to grid first. Reactions guidance (check reactions_migrated in get_padlet_content tool): - If reactions_migrated is true: - Use 'emoji' for reactions with an emoji_preset (either heart, thumbs_up, classic or all). - For voting/rating functionality, use custom_post_fields with field_type: 'vote', 'rating', or 'score'. - Do NOT use legacy reaction types (like, vote, star, grade) - they are not supported on migrated walls. - If reactions_migrated is false: - You can use any reaction type: none, like, vote, star, grade, or emoji.
update_padlet_title_description
ChatGPTUpdate only the padlet's title and description. - Purpose: Update a padlet's metadata: title and description only. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Include only padlet_title and/or padlet_description. - Do not include posts, sections, wallpaper, or settings. - padlet_description is NOT supported for sandbox/whiteboard padlets. For sandbox padlets, only padlet_title can be updated. Do NOT pass padlet_description for sandbox padlets. - Communication: The user can see the result of the function call, so NEVER send a message before calling the function. After calling the function, respond with a concise one sentence confirmation.
update_padlet_wallpaper
ChatGPTUpdate only the padlet's wallpaper/background image. - Purpose: Search for and update the padlet's wallpaper based on a description. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Include only wallpaper_description. - The description should be a short phrase about the visual subject (1-3 words). Focus on what the image should depict, NOT the medium or surface. - Good examples: "math equations", "sunset ocean", "tropical plants", "galaxy stars". - Bad examples: "math equations chalkboard mathematics", "winter holiday snow background". Do NOT include words like "chalkboard", "whiteboard", "poster", "banner", "background", "wallpaper". - Do not include posts, sections, title, description, or settings. - Communication: The user can see the result of the function call, so NEVER send a message before calling the function. After calling the function, respond with a concise one sentence confirmation. - If a padlet is in "map" format, NEVER use this tool.
update_posts
ChatGPTUpdate existing posts on a padlet. - Purpose: Modify the content of existing posts, or delete posts (soft delete; can be undone). - What this tool returns: { success: true } on successful update/delete. When posts are deleted, also returns { deleted_post_ids: [...] } with the ids of the deleted posts. - IMPORTANT: Save these deleted_post_ids so you can pass them to the restore_posts_and_sections tool if the user asks to undo the deletion. Otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. - 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. Guidance for use: - UPDATING existing posts: Use the existing post id exactly as provided in the padlet data (e.g. "12345"). - DELETING posts: Set should_delete to true for each post to delete. Only post_id is required for deletion. Deletions are soft-deleted and can be restored. - EMPTYING a field: name it in clear, e.g. clear: ["attachment"] to remove a post's attachment or poll. Sending a field as an empty string leaves it as it is. - You can only update posts that you created, or if you have admin/moderator permissions on the padlet. - Use get_padlet_content first to see which posts have editable: true. - Only include the fields you want to update for each post. - If setting an attachment, you must either: 1. include both attachment_type AND attachment_search 2. include attachment as a valid URL. - If changing only the preview image of an existing link attachment, use exactly one of preview_image_url or preview_image_search. - preview_image_url / preview_image_search keep the original link attachment intact. Do not combine them with attachment, attachment_type, or attachment_search. - Poll and other attachments using attachment and attachment_search fields are mutually exclusive. Do not include both in the same post. - Move posts to a different section: - Use the section_id from the get_padlet_content tool to get the correct section id, especially if you just created a new section. - The section_id should be a string representing the integer id. - Changing post color: - Only the following colors are allowed: red, orange, green, blue, purple. There are a few exceptions: - If 'yellow' is provided, use 'orange' instead. - "white" and "black" values are only allowed if and only if the padlet color scheme is "light" and "dark" respectively. The counterpart color should not be allowed and be rejected instead. Use the padlet_settings -> color_scheme field to get the padlet color scheme with the get_padlet_content tool.
update_section
ChatGPTManage sections on a padlet: create, update, delete, or reorder sections. - Purpose: Create new sections, update existing section titles, delete sections, or reorder sections. - What this tool returns: { success: true } on successful update. When new sections are created, also returns { created_section_ids: { "new_1": "123", "new_2": "456" } } mapping each temporary "new_" id to the real section id. When sections are deleted, also returns { deleted_section_ids: [...], deleted_post_ids: [...] } with the ids of the deleted sections and their posts. Otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. - IMPORTANT: When creating sections and then creating posts, use the real section ids from created_section_ids (not the "new_" prefixed ids) as the section_id in the create_posts tool. - IMPORTANT: Save these deleted_section_ids and deleted_post_ids so you can pass them to the restore_posts_and_sections tool if the user asks to undo the deletion. Guidance for use: - Requires admin permission on the padlet. - CREATING new sections: Use a string id with "new_" prefix (e.g. "new_1", "new_abc"). - UPDATING existing sections: Use the existing section id exactly as provided in the padlet data. - DELETING sections: Set should_delete to true. All posts in the section will be soft-deleted. - IMPORTANT: The last section on a padlet cannot be deleted. A padlet must always have at least one section. - REORDERING sections: Provide section_order with all section ids in the desired order.
update_submission_form_settings
ChatGPT• Purpose: Enable, disable, or configure the submission form link on a padlet. Submission forms allow collecting responses from users via a dedicated form. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Use this tool when the user wants to collect submissions or responses via a form link. - Configure where users are redirected after submitting: the padlet itself, a confirmation page, or another submission form. - Control whether login is required and set custom confirmation text. - Only set the parameters you want to change. Omit parameters to keep their current values. - Keep your message concise (1-2 sentences).
update_whiteboard_tool_settings
ChatGPT• Purpose: Update the whiteboard/sandbox tool settings. This tool can enable/disable ANY toolbar tool, configure AR lenses, and set video/screen recording limits. - Always call get_whiteboard_tool_settings tool first to get the current settings, then use this tool to update the settings. - What this tool returns: { success: true } on successful update; otherwise a hash with success set to false and an optional message, e.g. { success: false, message: "..." }. Guidance for use: - Use whiteboard_tool_settings to enable or disable toolbar tools. Pass an array of { tool_id, enabled } objects. Only include the tools you want to change. Valid tool IDs include: "laser" (Pointer), "draw-nested" (Draw), "text" (Text), "note" (Note), "geo" (Shape), "arrow" (Connector), and padlet content tools prefixed with "padlet-" (e.g. "padlet-link", "padlet-image", "padlet-video_recorder", "padlet-screen_recorder", "padlet-audio_recorder", "padlet-photo_booth"). - Use ar_lenses_enabled to control whether augmented reality filters are available in the video recorder. - Use video_length_limit to set the maximum recording length in seconds for video and screen recorder. Set to null to use the default/max limit based on the padlet owner's plan. Only the following values are allowed: 15, 30, 45, 60, 120, 180, 300, 600, 900, 1800, or null. - You can update all three (whiteboard_tool_settings, ar_lenses_enabled, video_length_limit) in a single call.
validate_saml_metadata_url
ChatGPTValidate a SAML IdP metadata URL before creating a SAML connection. - Purpose: Test if a SAML metadata URL can be fetched and parsed successfully. - What this tool returns: { success: true, valid: true/false } indicating if the URL is valid. Guidance for use: - Requires user to be a library admin. - Only works for school libraries. - Use this to verify a metadata URL before attempting to create a SAML connection. - Does not return the parsed metadata, only validation status.