add_link_block
ChatGPTAdd a block (a link button, text, section title, post card, product, coupon, countdown, notice bar, FAQ, or testimonial) to a link page. The block is saved to the draft; visitors see it only after publish_link_page. config follows the block type, e.g. LINK: { title, url, subtitle?, thumbnailUrl?, style? }; COUNTDOWN: { label?, targetAt }; COUPON: { code, headline?, expiresAt? }; PRODUCT: { items: [{ id, title, buyUrl, price?, currency?, imageUrl?, affiliate? }] }; FAQ: { items: [{ q, a }] }; TESTIMONIAL: { items: [{ id, quote, author, rating? }] }. Optional scheduledStartAt/scheduledEndAt (ISO 8601) show the block only inside that window.
add_style_examples
ChatGPTAdd examples of the brand's own designs for Nimply to learn the look from: images in the media library (mediaIds; put a shared image there with upload_media first) and/or published posts (postIds from list_style_post_candidates). Use designs the user made or approved, not other brands. At least 3 are needed to learn, up to 50; 8-20 varied ones work best. Duplicates are skipped. Free (learning is what costs credits). Then call learn_brand_style.
approve_post
ChatGPTApprove a PENDING_APPROVAL post — it returns to SCHEDULED (if it has a future publish time) or DRAFT. Optionally record a comment.
cancel_agent_run
ChatGPTStop an agent run. A queued run stops now and its held credits are returned; a running one stops at its next checkpoint (credits for work already done are charged). A finished run is returned unchanged.
complete_media_upload
ChatGPTCall after the PUT to the presigned URL succeeds. Finalizes the media asset (records size, queues thumbnails) and returns it — use its id in create_post mediaIds. The asset is unusable until completed.
create_brand_kit
ChatGPTCreate a new brand kit in the user's Nimply workspace: the brand's name, colours, fonts, voice, guidelines and logo, used by create_design. Check list_brand_kits first: every workspace already has a main kit, and update_brand_kit is better when the user means that one. The plan limits how many kits a workspace can have. To fill it from the brand's website, call import_brand_from_website first. For a logo, put the image in the media library with upload_media and pass its id as logoMediaId. Free.
create_design
ChatGPTCreate a fully editable graphic design in the user's Nimply workspace from a written brief: social post images, ads, story graphics, carousels, YouTube thumbnails, Pinterest pins, banners and covers. Use when the user asks you to make or design a visual (not just write text). Nimply builds a real layered design they can open and edit in the Nimply editor. Write a rich prompt: what it is for, the audience, the offer or key message, the exact headline/CTA wording if known, and the style or mood. If the request is vague (no subject or offer), ask the user one short question first. Pick sizes with list_design_sizes (common ids: ig-post-45 Instagram 4:5, ig-post-11 Instagram square, ig-story story 9:16, fb-post Facebook landscape, li-post LinkedIn square, x-post X 16:9, yt-thumb YouTube thumbnail, pin Pinterest pin). Up to 3 sizes per call. Use list_brand_kits to apply the user's brand colors and logo (pass brandKitId), and photoMediaIds to feature their own product photos (upload with upload_media first). When the brand kit has learned the user's look from their own posts in Nimply, the design follows it automatically (each finished design then reports a brand match score, 0-100); pass useLearnedStyle: false only if the user asks not to use it. Uses AI credits (roughly 80-250 credits for the first size, less for extra sizes); call estimate_design_cost if the user asks about cost, and pass maxCredits to cap a run. Takes about 1-3 minutes per size. Returns a job: keep calling get_design_job with its id until status is "done" or "failed", then ALWAYS show the user the edit link and the preview image.
create_linkedin_post
ChatGPTCreate a LinkedIn post on a profile or company page with visibility control. Scheduling works like create_post.
create_media_upload
ChatGPTFor files you have locally rather than at a public URL (requires the ability to execute an HTTP PUT, e.g. a shell — use upload_media for hosted files). Returns a presigned PUT URL: upload the raw bytes to it with the exact Content-Type given, then call complete_media_upload. Plan quotas are checked against the declared size.
create_pinterest_pin
ChatGPTCreate a pin on a specific Pinterest board, with an optional destination link and alt text. Get board ids with get_pinterest_boards first. Scheduling works like create_post.
create_post
ChatGPTCreate a social media post on one or more channels (one post per channel). schedule controls publishing: omit or "draft" = save as draft; "next_slot" = queue into each channel's next free posting slot; "now" = publish immediately; or an ISO 8601 datetime = publish at that time. Attach media by uploading first with upload_media and passing the returned ids in order.
create_tiktok_post
ChatGPTCreate a TikTok video or photo post with privacy and interaction settings. privacyLevel must be one of the levels the account allows — check get_tiktok_creator_info first. Comments/Duet/Stitch are off unless explicitly allowed. Scheduling works like create_post.
create_youtube_video
ChatGPTUpload a video (or Short) to a YouTube channel with the full set of YouTube options. The channel must be a YOUTUBE channel from list_channels and the media must be a video. Scheduling works like create_post.
delete_automation
ChatGPTPermanently delete an automation and its run history. Cannot be undone: confirm with the user first. Owners and admins only.
delete_post
ChatGPTPermanently delete a DRAFT or SCHEDULED post. Published posts cannot be deleted. This cannot be undone — confirm with the user before deleting anything they did not explicitly ask to delete.
estimate_design_cost
ChatGPTEstimate the AI credits and time a design would take, and show the credits available, without starting anything (free). kind "generate" is create_design (pass sizes and pages, and the brandKitId / channelId / useLearnedStyle you will use, so the brand kit's learned look is priced in); kind "layers" is layer_image (pass mode).
get_agent
ChatGPTGet one agent's settings, channels, status, schedule and app link, plus its 5 most recent runs (status, credits, the posts each made).
get_agent_run
ChatGPTCheck an agent run started by run_agent. Waits up to wait seconds (default 25) for it to change before returning. Keep calling while status is PENDING or PROCESSING. When COMPLETED, outputs.postIds are the posts it made (awaiting approval); if FAILED, tell the user the error.
get_analytics
ChatGPTRead performance metrics. scope="workspace" (default): aggregated totals across all channels. scope="channel" (+ id): daily follower/engagement/reach series for one channel. scope="post" (+ id): metric snapshots for one post. from/to are ISO 8601; default last 30 days.
get_automation
ChatGPTGet one automation: its trigger and steps in plain words, the full graph, status, version (pass it to update_automation), last/next run and app link, plus its 5 most recent runs.
get_automation_run
ChatGPTGet an automation run: status, credits used, error and the status of each step. Call again while it is still running.
get_brand_import
ChatGPTCheck a brand import started with import_brand_from_sources. While it is still reading, call again in about 20 seconds. When it is ready you get the draft brand kit: every value says which source it came from, and where two sources disagree (for example the PDF and the website give different main colours) the options are listed so the user can choose.
get_brand_kit
ChatGPTGet one brand kit: name, colours, fonts, voice, guidelines, logo, and whether it has learned the brand's look yet.
get_brand_style
ChatGPTSee what Nimply has learned about how the brand's designs look (its "learned look"): status, a plain-words summary, colours, the rules it follows (the user's own and learned ones), the examples it learns from, and what learning now would cost (free to check). While status is "learning", call this again about once a minute until it is "ready" or "failed".
get_design
ChatGPTGet one design with its edit link and fresh full-size preview links (preview links expire after 7 days; this re-issues them). Show the user the edit link and the preview image.
get_design_job
ChatGPTCheck the progress of a design job started by create_design or layer_image. Waits up to about 25 seconds for progress before returning. Keep calling it while status is queued, running or rendering. When status is "done", ALWAYS show the user the edit link and the preview image. If it failed, tell the user the reason.
get_link_page
ChatGPTGet one link page with its blocks in display order (id, type, position, isActive, config, schedule window). Use the block ids with update_link_block.
get_pinterest_boards
ChatGPTList a Pinterest channel's boards (id, name, privacy, pin count). Use a board id as boardId in create_pinterest_pin.
get_post
ChatGPTGet one post by id, including its status. After publish_post or schedule="now", poll this until status is PUBLISHED or FAILED.
get_posting_schedule
ChatGPTGet a channel's configured posting time slots per weekday (in the channel's timezone). Useful to pick good times, or use schedule="next_slot" in create_post to let Nimply pick automatically.
get_tiktok_creator_info
ChatGPTGet a TikTok account's posting constraints: allowed privacy levels, whether comments/Duet/Stitch are available, and the maximum video duration. Call before create_tiktok_post.
import_brand_from_sources
ChatGPTRead the user's brand from up to 6 places at once — their website, notes they paste, a brand book PDF, one of their connected social channels, and their own logo, photos or designs — into one draft brand kit (name, colours, fonts, logo, voice, guidelines, don'ts, example designs). Nothing is saved yet. Upload PDFs and images first (upload_media for a public link, or create_media_upload + complete_media_upload for a local file) and pass their media ids. Uses AI credits (up to about 20-80; only what it really uses is charged) — tell the user before starting. Paid plans and trials. It takes about a minute: then poll get_brand_import with the returned id until it is ready, show the user the draft, and save it with save_brand_import. To add a new brand book (or other sources) to a kit the user already has, pass its brandKitId: saving then updates that kit instead of creating one.
import_brand_from_website
ChatGPTRead a brand's website and suggest its name, colours, fonts and logo. Nothing is saved: show the user what was found, then save what they want with create_brand_kit or update_brand_kit (for the logo, upload_media the suggested logo URL first and pass the media id as logoMediaId). Fonts that are not Google Fonts must be uploaded in Nimply before a kit can use them. Uses a few AI credits unless the workspace has connected Brandfetch in Nimply. Paid plans and trials.
layer_image
ChatGPTTurn a flat image (for example one you generated, a screenshot or a poster) into an editable Nimply design: the text becomes editable text, and objects and the background become separate layers. Use when the user wants to edit, fix the text in, or rework an existing image. Pass exactly one of: image (a file the user shared or you generated in this chat), imageUrl (a public http(s) URL), or mediaId (an image already in the Nimply media library). mode "everything" (default) separates text, objects and background; "text" only makes the words editable and is cheaper; "objects" separates objects only. Uses AI credits (less than create_design); call estimate_design_cost if the user asks about cost. Takes about 30-60 seconds. Returns a job: keep calling get_design_job until status is "done" or "failed", then ALWAYS show the user the edit link and the preview image.
learn_brand_style
ChatGPTHave Nimply study the brand kit's examples and learn the brand's look (layouts, type, colours, photo style), so every new design for this kit follows it. Needs at least 3 examples (add_style_examples). Uses AI credits: check the cost first with get_brand_style (learnEstimate.creditsMax) and tell the user before starting; only what it really uses is charged. Paid plans and trials. Runs in the background and takes a few minutes: call get_brand_style about once a minute until status is "ready" (then summarise the look for the user) or "failed".
list_agents
ChatGPTList the agents already hired in the workspace, with status, channels, settings and schedule.
list_automations
ChatGPTList the workspace automations, most recently changed first, with status (DRAFT, ACTIVE, PAUSED) and a plain summary. managedBy marks ones that belong to an agent or a Nimply feature: those are read-only here.
list_brand_kits
ChatGPTList the workspace's brand kits (id, name, whether it is the main kit, colors). Pass a kit id as brandKitId to create_design so the design uses that brand; without one the main kit is used. Use get_brand_kit for one kit's details and get_brand_style for its learned look.
list_channels
ChatGPTList the social media accounts (channels) connected to the workspace, with id, platform type, name, and connection health. Use the channel ids when creating posts. Channels with tokenStatus NEEDS_RECONNECT cannot publish until reconnected in the Nimply app.
list_design_sizes
ChatGPTList the size ids create_design accepts (id, label, width and height in pixels), covering Instagram, Facebook, LinkedIn, X, TikTok, YouTube, Pinterest, Threads, web and presentations.
list_designs
ChatGPTList designs in the Nimply workspace, newest first, with name, size, page count, thumbnail and edit link. Use get_design for the full preview of one design.
list_link_pages
ChatGPTList the workspace's link pages (Nimply Pages at nimply.link/<handle>) with id, handle, public url, status (DRAFT, PUBLISHED, SUSPENDED) and published version. Use the page id with get_link_page, add_link_block and publish_link_page.
list_posts
ChatGPTList posts in the workspace, newest first, with cursor pagination. Filter by status (DRAFT, PENDING_APPROVAL, SCHEDULED, PUBLISHED, FAILED, ARCHIVED) and/or channel. Use this to answer "what's scheduled this week?" or to find a post id.
list_style_post_candidates
ChatGPTList the user's published Nimply posts that have an image (newest first, 24 per page, with a preview link and caption), so the user can pick the ones that best show their brand's look. Pass the chosen post ids to add_style_examples.
publish_link_page
ChatGPTPublish the current draft of a link page so the changes go live at its public nimply.link url (live within about a minute). Returns the new published version and the url.
publish_post
ChatGPTQueue an existing draft or scheduled post for immediate publishing. Returns the post as SCHEDULED; poll get_post for PUBLISHED or FAILED.
reject_post
ChatGPTReject a PENDING_APPROVAL post back to DRAFT, optionally recording feedback for the author.
remove_agent
ChatGPTPermanently remove (fire) an agent. Posts it already made are kept; automations that worked with it are kept and paused. Confirm with the user first. Needs a workspace owner or admin.
remove_style_example
ChatGPTRemove one example from the brand look (for example one that does not fit the brand). The image or post itself is not deleted, and the look already learned stays until the next learn_brand_style.
request_approval
ChatGPTSend a DRAFT post into the approval workflow (status becomes PENDING_APPROVAL). Use list_posts with status=PENDING_APPROVAL to see what is waiting.
schedule_post
ChatGPTSet or change when an existing draft or scheduled post will publish. scheduledAt must be a future ISO 8601 datetime.
set_agent_status
ChatGPTPAUSED stops the agent and also pauses the automations that work with it. ACTIVE resumes the agent only: its automations stay paused until switched on again with set_automation_status.
set_brand_style_rules
ChatGPTSave the user's own design rules for the brand (e.g. "Never use script fonts", "Always leave space for the logo top right"), which every design for this kit follows first, and switch learned rules on or off. Send the full list: read the current rules with get_brand_style, then pass them back with your changes. The user's rules left out are deleted. New rule: just text (no id). A learned rule (id "learned:<n>") can be switched off with enabled: false, or reworded (that saves the user's version). The user's rules stay when the look is learned again. Free.
unschedule_post
ChatGPTMove a SCHEDULED post back to DRAFT and clear its publish time — it will not be published until scheduled again with schedule_post.
update_brand_kit
ChatGPTChange a brand kit's name, colours, fonts, voice, guidelines or logo. Only the fields you pass change; colours and fonts replace the whole list, so include the ones to keep (read them with get_brand_kit). Free.
update_link_block
ChatGPTChange a block on a link page: replace its config, switch it on/off (isActive), or set its schedule window. Pass only the fields to change. Publish with publish_link_page afterwards.
update_post
ChatGPTEdit the content and/or title of a DRAFT or SCHEDULED post. Published posts cannot be edited.
upload_media
ChatGPTImport an image/video/GIF (or a PDF brand book for import_brand_from_sources) from a publicly reachable http(s) URL into the workspace media library. Returns the media asset (use its id in create_post mediaIds). Plan quotas apply. The URL must be public — localhost/private hosts are rejected.
approve_post
Claudecomplete_media_upload
Claudecreate_linkedin_post
Claudecreate_media_upload
Claudecreate_pinterest_pin
Claudecreate_post
Claudecreate_tiktok_post
Claudecreate_youtube_video
Claudedelete_post
Claudeget_analytics
Claudeget_pinterest_boards
Claudeget_post
Claudeget_posting_schedule
Claudeget_tiktok_creator_info
Claudelist_channels
Claudelist_posts
Claudepublish_post
Claudereject_post
Clauderequest_approval
Claudeschedule_post
Claudeunschedule_post
Claudeupdate_post
Claudeupload_media
Claude