- Brand
- Unknown
- Category
- Pending
- Primary Subcategory
- Pending
Integration details
Description
Leafpad shows which of your pages are losing search traffic and the refresh it prepared for each one. Read the before and after, approve or reject a change, and draft a new post without publishing it. Publishing a draft and approving a refresh happen only when you ask. Leafpad uses the sites, pages, and Search Console data already connected to your account.
- Integration type
- Plugin
- Verification status
- Not applicable
- Platform
- ChatGPT
- Category
- Pending
- Primary Subcategory
- Pending
- Secondary Subcategories
- None listed
- Brand
- Unknown
- Access
- Account required
- First tracked
- 2026-10-31
- Tool count
- 20
- Market
- US
The broad Category that contains the Primary Subcategory.
The Primary Subcategory used for this profile’s headline score.
Other Subcategories where the Integration is listed.
Your score is coming
ChatGPT now suggests Plugins on its own when they match a user's request.Your Plugin Discovery Score measures how often yours appears, and it will show here as soon as it’s ready.
What discovery looks like

Get alerts for Leafpad
Get updates when Leafpad’s Discoverability Score or category rank changes.
Competitive lineup
20 tools agents can invoke
Approve one refresh proposal. If it holds a place today, LeafPad publishes that one page. Otherwise it is scheduled for a later day. This can change a live page. A proposal is published only after the user has agreed to it. Args: - organization_slug: Site slug from leafpad_list_organizations - proposal_id: Proposal id from get_refresh_proposal
approve_refresh
Score one post with the same on-page SEO checks the LeafPad editor uses: title length, meta description, word count, headings, images, links and tags. Also reports the latest saved guardrail result when one already exists. Does not edit the post and does not start a new guardrail run. Args: - organization_slug: Site slug from leafpad_list_organizations - post_id: Numeric post id
check_draft_seo
Create a blog post in a LeafPad site. The post is an unpublished draft unless published is true. publish_post publishes a draft the user has agreed to publish. Args: - organization_slug (string): Site slug from leafpad_list_organizations (e.g. 'acme-corp') - name (string): Post title (required) - slug (string, optional): Post slug. Derived from the title when omitted. - html_content (string, optional): HTML for the post body. The title is stored separately from the body, which has no H1. - post_type ('ARTICLE' | 'FOLDER'): Post type (default: 'ARTICLE') - published (bool, optional): Published flag. False by default, which leaves an unpublished draft. True creates the post already published. - seo_title (string, optional): SEO title override - seo_description (string, optional): Meta description, commonly 150–160 characters - seo_keywords (string, optional): Comma-separated SEO keywords - tags (string, optional): Comma-separated tag names. Existing tags are reused. Returns: Created post id, slug, title, and whether it is published.
leafpad_create_post
List pages on a site that are losing search traffic, and refresh proposals waiting for a decision. Reads Search Console comparisons when the site has them, and the refresh planner when that site is on it. Does not change any page. get_refresh_proposal returns one proposal before approve_refresh or reject_refresh. Args: - organization_slug: Site slug from leafpad_list_organizations - limit: How many decaying pages to return, 1–20 (default 10)
find_pages_needing_attention
Generate a featured image for a blog post using LeafPad's AI image generation workflow. The image is generated by an AI pipeline using the organization's brand style and color palette, then stored on LeafPad's CDN. The result is the public address of that image, suitable as a post's featured image. Args: - organization_slug (string): Organization slug (e.g. 'acme-corp') - prompt (string): Description of the image to generate (e.g. 'A futuristic city at sunset with neon lights') Returns: Public CDN address of the generated image (string).
leafpad_generate_image
List blog posts for a LeafPad organization. The organization slug is obtainable from leafpad_list_organizations. Args: - organization_slug (string): Organization slug from leafpad_list_organizations (e.g. 'acme-corp') - search (string, optional): Filter posts whose name contains this string (case-insensitive) - page (int, optional): Page number, starting at 1 (default: 1) - limit (int, optional): Posts per page, 1–100 (default: 10) - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: Paginated list of posts with ID, slug, title, tags, SEO description, timestamps, and where a post redirects (301) when it does.
leafpad_list_posts
List the posts and rewrites on a LeafPad organization's content calendar, soonest first. Returns the scheduled post IDs that leafpad_update_scheduled_post and leafpad_delete_scheduled_posts take. Args: - organization_slug (string): Organization slug from leafpad_list_organizations - include_completed (bool, optional): Also list rows that already ran (default false: only pending rows) - from_date (string, optional): ISO 8601; only rows scheduled at or after this time - to_date (string, optional): ISO 8601; only rows scheduled at or before this time - limit (int, optional): Rows to return, 1-100 (default 50) Returns: Each row's scheduled post ID, type (new post, rewrite, or publish existing post), status, date, title, prompt or instructions, and keyword data.
leafpad_list_scheduled_posts
List all LeafPad organizations the authenticated user belongs to. Args: - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: List of organizations with name, slug, ID, and creation date.
leafpad_list_organizations
List all tags available in a LeafPad organization. leafpad_create_post reuses an existing tag when its name matches. Args: - organization_slug (string): Organization slug (e.g. 'acme-corp') - search (string, optional): Filter tags whose name contains this string (case-insensitive) Returns: List of tags with their ID and name.
leafpad_list_tags
Make one draft live on the LeafPad site and notify a configured webhook. Sets that post to published when the user has agreed to publish. It does not run a full catalog sync to WordPress, Ghost, Shopify, Webflow or Framer; those stay on the site's own sync. Args: - organization_slug: Site slug from leafpad_list_organizations - post_id: Numeric post id from leafpad_create_post or leafpad_list_posts
publish_post
Read Google Search Console performance (clicks, impressions, CTR, average position) for an organization's connected property. Data is read live from Google with the Search Console connection set up in LeafPad. The latest two days are left out because Google is still filling them in, and Search Console keeps about 16 months. Args: - organization_slug (string): Organization slug (e.g. 'acme-corp') - dimensions (array, optional): Group rows by any of 'query', 'page', 'date', 'country', 'device', 'searchAppearance' (default ['query']) - days (integer, optional): Length of the window ending at the latest complete day (default 28, up to 484) - start_date / end_date (string, optional): Explicit range as YYYY-MM-DD; both together, in place of days - row_limit (integer, optional): Rows to return, 1-25000 (default 100) - start_row (integer, optional): Offset for paging (default 0) - query_contains (string, optional): Only queries containing this text - page_contains (string, optional): Only page URLs containing this text - country (string, optional): ISO 3166-1 alpha-3 country code, e.g. 'usa' - device ('DESKTOP' | 'MOBILE' | 'TABLET', optional) - response_format ('markdown' | 'json'): Output format (default 'markdown') Returns: Rows of Search Console metrics for the property, with the date range used. Organizations without Search Console connected return an error saying so.
leafpad_get_search_console_data
Fetch a single blog post from LeafPad by organization slug and post slug. Args: - organization_slug (string): Organization slug (e.g. 'acme-corp') - post_slug (string): Post slug. Nested paths are supported (e.g. 'docs/getting-started') - content_format ('markdown' | 'html' | 'json'): Format for the post body (default: 'markdown') - response_format ('markdown' | 'json'): Metadata wrapper format (default: 'markdown') Returns: Full post data: title, slug, ID, tags, SEO metadata, author, body content, where the post redirects (301) when it does, and which posts redirect to it.
leafpad_get_post
Read one proposed refresh: the page, why it was selected, the current text, the proposed text, and whether it can be approved. Does not publish anything. Approving and rejecting are separate tools. A review card is shown when the host supports it. Args: - organization_slug: Site slug from leafpad_list_organizations - proposal_id: Proposal id from find_pages_needing_attention
get_refresh_proposal
Answer a question using indexed company content stored in the knowledge base. Queries the Pinecone vector index scoped to the organisation's configured site, so only content belonging to that company is searched. Returns the most relevant text chunks along with their sources. Args: - organization_slug (string): Organization slug (e.g. 'acme-corp') - question (string): The question or search query to answer from company content. - response_format ('markdown' | 'json'): Output format (default: 'markdown') Returns: Relevant company content chunks that best answer the question.
leafpad_get_company_data
Redirect one post permanently (301) to another post of the same site, or remove its redirect. Typical use: two pages compete for the same searches, and the weaker one should send its visitors and ranking to the stronger one. LeafPad records the redirect and reports it in its public post API; the site serving the page answers the old URL with a 301. Once redirected, the post is left out of sitemaps, listings, refreshes, internal links and CMS sync. The destination must be a published article of the same site that is not itself redirected. Folders and posts with pages under them cannot be redirected. Posts already redirecting to this one are moved to the new destination, so no chain is created. Args: - organization_slug: Site slug from leafpad_list_organizations - post_id: Numeric id of the post to redirect, from leafpad_list_posts or leafpad_get_post - destination_post_id: Numeric id of the post to redirect to, or null to remove the redirect Returns: Where the post now redirects (path and URL), or that its redirect was removed.
leafpad_set_redirect
Turn down one refresh proposal. The live page is not changed, and the proposal's place for today is released. Args: - organization_slug: Site slug from leafpad_list_organizations - proposal_id: Proposal id from get_refresh_proposal
reject_refresh
Remove posts or rewrites from a LeafPad organization's content calendar so they never run. Nothing already written or published is touched, and nothing is charged. A row that already ran is kept as history, and a rewrite whose generation has started cannot be stopped this way; both are reported and left in place. Args: - organization_slug (string): Organization slug from leafpad_list_organizations - scheduled_post_ids (array of int, 1-50): Scheduled post IDs from leafpad_list_scheduled_posts or the scheduling tools Returns: Which rows were removed, and which were left and why.
leafpad_delete_scheduled_posts
Schedule one or more new blog posts to be written by AI at a future time in a LeafPad organization. At the scheduled time LeafPad generates the post from its title and prompt, using the organization's settings and guardrails, and charges $1 to the organization's balance. Posts you write yourself with leafpad_create_post are never charged. Rewrites of posts that already exist are scheduled with leafpad_schedule_rewrites instead. Args: - organization_slug (string): Organization slug (e.g. 'acme-corp') - posts (array): Posts to schedule. Each item has: - title (string): Post title / keyword the post is generated about (required) - date (string): ISO 8601 datetime when the post is generated (required, e.g. '2025-06-01T09:00:00Z') - prompt (string, optional): The brief for generation (angle, sections, tone, audience). Replaces the bare title as the brief when given - volume (integer, optional): Monthly search volume of the keyword (>= 0) - kd (integer, optional): Keyword difficulty of the keyword, 0-100 - intent (string, optional): Search intent, e.g. 'informational', 'commercial', 'transactional' - post_type ('ARTICLE' | 'FOLDER', optional): Kind of post generated (default 'ARTICLE') - parent_id (integer, optional): ID of an existing folder post the new post is nested under - parent_scheduled_post_id (integer, optional): ID of another scheduled post (a folder) whose generated post becomes the parent Returns: Summary of how many posts were scheduled successfully, with per-item status and scheduled post IDs.
leafpad_add_scheduled_posts
Update a post the signed-in user can edit. Overwrites only the fields that are provided. Replacing html_content replaces the public HTML. publish_post publishes a draft. The post id is the numeric id from leafpad_list_posts or leafpad_get_post. Args: - organization_slug (string): Site slug from leafpad_list_organizations - post_id (int): Numeric post id - name (string, optional): New title - slug (string, optional): New post slug, unique within the site - html_content (string, optional): Replacement HTML body - published (bool, optional): Published flag. publish_post publishes a draft. - seo_title (string, optional): SEO title - seo_description (string, optional): Meta description - seo_keywords (string, optional): Comma-separated SEO keywords Returns: Updated title, slug, published flag, and which fields changed.
leafpad_update_post
Change a post or rewrite on a LeafPad organization's content calendar before it runs. Only the fields given change. A row that already ran cannot be changed, and neither can a rewrite whose generation has started. Which fields apply depends on the row's type (leafpad_list_scheduled_posts shows it): - every type: date - new post: title, prompt, volume, kd, intent, post_type, parent_id, parent_scheduled_post_id - rewrite: instructions, target_keywords, url, volume, kd, intent - publish existing post: date only Args: - organization_slug (string): Organization slug from leafpad_list_organizations - scheduled_post_id (int): Scheduled post ID from leafpad_list_scheduled_posts or the scheduling tools - date (string, optional): New ISO 8601 datetime, e.g. '2025-06-01T09:00:00Z' - title (string, optional): New post title / keyword - prompt (string, optional): New generation brief; '' clears it - volume (int, optional): Monthly search volume (>= 0) - kd (int, optional): Keyword difficulty, 0-100 - intent (string, optional): Search intent; '' clears it - post_type ('ARTICLE' | 'FOLDER', optional): Kind of post generated - parent_id (int, optional): Existing folder post to nest under; 0 removes it - parent_scheduled_post_id (int, optional): Scheduled folder whose post becomes the parent; 0 removes it - instructions (string, optional): New direction for the rewrite; '' clears it - target_keywords (array, optional, up to 12): Replaces the rewrite's keywords, first one primary; [] clears them. Each item: keyword (string), volume (int, optional) - url (string, optional): Page path as Search Console reports it Returns: The row as it now stands.
leafpad_update_scheduled_post
Leafpad ChatGPT Plugin FAQ
How the directory, categories and Discoverability Score work.
Read the methodologyHow do I improve Leafpad's ChatGPT Plugin discoverability?
The levers are the listing surface agents actually read: names, descriptions, keywords, tool metadata, and registry health. Which lever matters depends on where discovery breaks, which is what continuous measurement shows.
Where is this profile measured?
This profile uses the geography attached to the latest public registry snapshot: US. Locale tags are intentionally omitted.