MCP is a shared way for AI agents to connect to an app safely. An agent like Claude, ChatGPT or Cursor that connects to Kinf can do many of the things you can do, for you, once you sign in and give permission.
Reads
Reads your files, projects, brands and posters and answers your questions.
Does
Opens a project, sets up a brand, designs and edits posters, and resizes images.
Sends
If you allow it, it sends files and text to the accounts you connected (like Slack, Drive or X).
You don't need to install anything. Give your agent Kinf's address, it sends you to Kinf, and you approve once there. There are 88 tools below. The agent decides which one to use and when, and you just say what you want.
How do I connect?
Every agent follows the same three steps: give your agent Kinf's address, sign in on the Kinf page that opens, and click Connect.
Kinf's MCP address
https://kinf.app/mcp
You don't need to copy a key or a password. Connecting happens in your browser through OAuth: the agent sends you to Kinf, you click Connect, and the agent gets its own key and renews it every hour by itself. Agents introduce themselves to Kinf the first time they connect (dynamic registration), so you don't need to register an app.
1In your agent, find "add remote MCP server" (where it is for each agent is listed below) and enter the address.
2The agent opens a Kinf page in your browser. Sign in there, check the agent's name, and click Connect.
3Tell the agent what you want. Example: "List my latest projects in Kinf."
Claude (desktop and web)claude.ai and the Claude desktop app use the same connector.⌄
1In Claude, open Customize → Connectors, click + Add, then click Add custom connector.
2Enter Kinf as the name and this as the URL, then click Continue:
https://kinf.app/mcp
3Choose Register automatically as the OAuth client, click Add, and click Connect on the Kinf page that opens.
Claude CodeClaude in your terminal.⌄
1Run in your terminal (add --scope user at the end to use it in every project):
claude mcp add --transport http kinf https://kinf.app/mcp
2In Claude Code, type /mcp, choose Kinf and approve on the Kinf page that opens in your browser.
ChatGPTNeeds ChatGPT's custom MCP server feature; if your account or plan doesn't have it, it won't show up.⌄
1On chatgpt.com/plugins, click the plus button, then click Add custom MCP server.
2Enter a name, use this as the Server URL, and choose OAuth for authentication:
https://kinf.app/mcp
3Accept the warning, click Create as a plugin and install the plugin. Once you approve on the Kinf page, you can pick Kinf with @ in a chat.
2Zed needs you to sign in. Approve it on the Kinf page that opens in your browser.
ClineAs a remote server.⌄
1In Cline, click the MCP Servers icon and open the Remote Servers tab.
2Enter kinf as the Server Name and this as the Server URL; choose Streamable HTTP as the Transport Type:
https://kinf.app/mcp
3Tap Add Server. When Kinf asks you to sign in, approve it in your browser.
Another agentEvery agent that supports a remote MCP server.⌄
In the agent's settings, add this address as a remote (HTTP) MCP server. When you connect, a Kinf sign-in page opens. Once you approve, the agent appears under Settings → MCP.
https://kinf.app/mcp
If something goes wrong, look for these in the agent. Most agents find them on their own.
Transport: Streamable HTTP, each request is a separate JSON-RPC message (POST). No session is kept.
Authentication: OAuth 2.1, PKCE (S256 only), public client, dynamic registration. The key is only sent in the Authorization: Bearer … header, never in the address.
Discovery addresses: https://kinf.app/.well-known/oauth-protected-resource/mcp and https://kinf.app/.well-known/oauth-authorization-server
Redirect address: https, 127.0.0.1 / localhost on this computer, or the callback address of known apps such as Cursor, VS Code, VS Code Insiders and Windsurf.
An agent does each job with a tool. Below you'll find what each tool does, what it takes, and how to ask the agent for it. The tool list is read from Kinf's server, so new tools show up here too.
So your agent isn't flooded, Kinf shows only the most used tools when it connects: drawing posters, finding material and searching your library. The other groups, like Brands, Projects, Memory and Integrations, stay closed; when a job needs one, the agent opens that group for the session with kinf_toolsets, or runs a tool directly by its name. So no tool is ever missing. Just write what you want.
Read only: it doesn't change anything.Makes changes: sets up something new or edits something.Moves to trash / removes: deletes something. The agent asks you first.Reaches your connected account: sends outside Kinf.
88 tools
Always on
Your agent sees these as soon as it connects: drawing posters, finding design material, opening the other groups.
Search the library
library_searchRead only
Finds files in your library by words, kind, tag or star: name, kind, size, pixels, tags, note, when added and id.
Ask your agent something like: “Find the starred images tagged “summer” in my library.”
What happens: Matching files are listed with their pixel size, tags and note.
Inputs (5)
query(text, at most 120 characters)
Words looked for in names, notes and tags.
kind(image, svg or video)
Only files of this kind.
tag(text, at most 24 characters)
Only files carrying this tag.
starred(true or false)
true: only starred files.
limit(whole number, 1-50)
How many files. 20 when left out.
Read a poster
poster_getRead only
Reads a poster's pages and every layer in short lines: kind, name, box, words or picture, colours, font; with an editor link.
Ask your agent something like: “Read the “Summer sale” poster. What layers does it have?”
What happens: You get the pages and each layer in short lines: type, name, box, text or image, color, font.
Inputs (2)
id(text (id))required
The poster's project id. Required.
guide(true or false)
true: the guide to what each change in poster_change takes comes too.
New poster
poster_createMakes changes
Opens a new, empty poster: a title, its size by a format's name or in pixels, and a brand if you like.
Ask your agent something like: “Open a blank Instagram post poster called “Concert”, with the “Harbor Cafe” brand.”
What happens: A blank poster opens; you get its ID and editor link.
Inputs (6)
title(text, at most 120 characters)required
The poster's name. Required.
format(text, at most 60 characters)
A format's name: instagram-post, instagram-story, flyer-a4… A feed post (1080×1350) when neither it nor width and height are given.
width(whole number, 16-8000)
Width in pixels, with height.
height(whole number, 16-8000)
Height in pixels, with width.
brand(id (UUID))
A brand id from brand_list: the poster is made in that brand.
lang(language tag (BCP 47))
The language the poster's words are in: tr, en, de… It sets how words in capitals are written: in Turkish a small i becomes a dotted capital I, in English a plain one ('biggest' is 'BIGGEST'). Read off the title when left out.
Design material
poster_materialRead only
Before you draw a page, tells what you have to work with: its size, the brand kit, fonts with their measures, real photographs for the subject and their cut-outs.
Ask your agent something like: “Gather a beach-themed photo and brand details for this poster.”
What happens: Before drawing, your agent gets what it has to work with: the size, brand kit, font measurements, real photos that fit the topic and their cut-outs.
Inputs (3)
id(text (id))required
The poster's project id. Required.
subject(text, at most 80 characters)
What a photograph should show, in a few words. Empty: no photographs are looked for.
like(text, at most 30 characters)
The nearest common thing, in one word, for when there is no photograph of the exact subject.
Draw a page from SVG
poster_draw_pageMakes changes
Turns an SVG document you write into a page of a poster: texts to edit, pictures to swap, shapes; Kinf's referee mends what it can, and a picture of the page comes back.
Ask your agent something like: “Draw the poster's first page from this SVG: a big headline, the date under it, a beach photo behind.”
What happens: The SVG turns into editable text, replaceable images and shapes. Kinf's checker fixes it and a picture of the page comes back.
Inputs (5)
id(text (id))required
The poster's project id. Required.
svg(text, at most 40,000 characters)required
The whole page, as one SVG document. Required.
page(whole number, 1-30)
The number of the page to redraw. A new page at the end when left out.
picture(true or false)
false: no picture of the page comes back. It comes when left out.
side(whole number, 256-1600)
The picture's long side in pixels. 1080 when left out.
Look at a page
poster_see_pageRead only
Shows one page of a poster as a picture, drawn by Kinf's own renderer.
Ask your agent something like: “Take a look at the poster's first page.”
What happens: The page comes back as a picture drawn by Kinf itself, so your agent can see its work and fix it.
Inputs (5)
id(text (id))required
The poster's project id. Required.
page(whole number, 1-30)
The page's number. 1 when left out.
side(whole number, 256-1600)
The picture's long side in pixels. 1080 when left out.
format(jpg or png)
jpg when left out.
moments(list of up to 6 numbers, 0-60)
Seconds on the page's clock to see it at while it plays (of a poster that is one video: seconds into that page's scene; poster_get says when each scene starts). Left out: the page at rest.
Change a poster
poster_changeMakes changes
Changes a poster without redrawing it: a text's words or look, moving, resizing, swapping a picture, deleting, bringing forward or back, the background.
Ask your agent something like: “Change the headline to “Big summer sale” and make the photo a little bigger.”
What happens: Text, position, size, images, order and background change without redrawing the page. Up to 40 changes at a time.
Inputs (2)
id(text (id))required
The poster's project id. Required.
changes(list of objects, 1-40)required
Each one "do" and the parts that kind of change takes, made in order. Required.
Export a poster
poster_exportMakes changes
Takes a poster's pages out as files: PNG (transparent too), JPG, WebP, SVG, PDF or ICO for a favicon; by scale or an exact size in pixels, with a 24-hour download link. A moving poster: poster_export_motion.
Ask your agent something like: “Export the poster's first page as a PNG.”
What happens: The PNG is saved to your library and you get a download link; PDF works too. For a moving poster's video, use poster_export_motion.
Inputs (10)
id(text (id))required
The poster's project id. Required.
format(png, jpg, webp, svg, pdf, ico)required
Required.
page(whole number, 1-30)
One page. Every page when left out.
scale(number, 0.25-4)
Output pixels to a page pixel. 1 when left out (2 for the pictures inside an svg).
width(whole number, 16-16000)
Exact width in pixels; the height follows the page's shape.
height(whole number, 16-16000)
Exact height in pixels; the width follows the page's shape.
side(whole number, 16-16000)
The long side in pixels.
transparent(true or false)
png, webp and ico: the page's background is left out.
quality(whole number, 1-100)
jpg and webp: how fine the file is written. 92 when left out.
path(text, at most 200 characters)
Where the file goes in your project (public/og.png); with several files, their folder.
Search icons
icon_searchRead only
Finds icons by words in Kinf's 11 icon families (Lucide, Tabler, Phosphor, Iconoir, Heroicons, MingCute, Material, IconPark, Fluent, Bootstrap, Ionicons): each one's name, set and licence.
Ask your agent something like: “Find calendar and location icons for my presentation.”
What happens: You get the name, set and license of matching icons from Kinf's icon sets (Lucide, Tabler, Phosphor).
Inputs (3)
words(text, at most 80 characters)required
What to look for, in English or Turkish. Required.
style(line, fill, duotone, any)
Line, filled or two-tone. any (every style) when left out.
limit(whole number, 1-40)
How many icons. 20 when left out.
Get icons
icon_getRead only
Gives icons as SVG code in the colour, line thickness and size you ask.
Ask your agent something like: “Give me the calendar and map-pin icons in #0B3D5C, at 32 pixels.”
What happens: The icons come as SVG code in the color, stroke width and size you asked for, ready to drop into a page. No file is saved.
Inputs (4)
names(list of texts, at most 12)required
Names as icon_search gives them. Required.
color(text: hex, rgb(), hsl() or oklch(), or currentColor)
The icons' colour. currentColor when left out.
stroke(number, 1-3)
Line thickness, for line icons. 2 when left out.
size(whole number, 16-1024)
Width and height in pixels. 24 when left out.
Get a logo
logo_getRead only
Gives a brand's logo as SVG: in its own colours, in one colour or in the colour you ask; says so plainly when Kinf has none.
Ask your agent something like: “Give me the Spotify and Apple Music logos in their own colors.”
What happens: The logo comes as SVG: in its own colors, in one color or in the color you want. If Kinf doesn't have that brand, it says so plainly and suggests the closest names.
Inputs (3)
brand(text, at most 60 characters)required
The brand's name: Instagram, Visa, Spotify… Required.
ink(brand, black, white, or a colour (hex, rgb(), hsl(), oklch()))
brand: the brand's own colours. brand when left out.
size(whole number, 16-2048)
The longer side in pixels. No size when left out (it fills its box).
Search photos
photo_searchRead only
Searches Kinf's own photographs and cut-outs: each with an address that loads anywhere, its size, its colours and its licence line.
Ask your agent something like: “Find coffee cup photos and cut-outs.”
What happens: Kinf's photos come with addresses that open anywhere, their size, colors and a license line. All are free for commercial work.
Inputs (4)
words(text, at most 80 characters)required
What the picture shows, in English or Turkish. Required.
kind(any, photo, cutout)
photo: a photograph; cutout: one thing with no background. any when left out.
Gives five colours with their roles, and the text colours that read on them, from a mood, a brand or one colour.
Ask your agent something like: “Give me a color palette for a calm, natural cafe.”
What happens: You get five colors with their roles (background, surface, primary, secondary, text), the text color that reads on each one with its contrast ratio, and CSS variables.
Inputs (3)
mood(text, at most 60 characters)
A mood, in English or Turkish: calm, luxury, playful, coffee, dark warm…
brand(text, at most 60 characters)
The name or id of one of your own brands, or a well-known brand's name.
color(text: hex, rgb(), hsl() or oklch())
One colour to build the palette from.
Pair fonts
font_pairRead only
Suggests a heading font and a body font from Kinf's fonts that go together, with the tags that load them, CSS rules and @font-face addresses.
Ask your agent something like: “Pair fonts for an elegant wedding invitation.”
What happens: You get a heading and a body font, their weights, the link to add to your page and the CSS rules, with @font-face addresses.
Inputs (3)
mood(text, at most 40 characters)
elegant, modern, warm, bold, editorial or minimal; or in Turkish: zarif (elegant), çağdaş (modern), sıcak (warm), güçlü (bold), dergi (editorial), sade (minimal).
heading(text, at most 60 characters)
A font already chosen for headings: the body font that goes with it is given.
faces(true or false)
true: the @font-face rules come too. true when left out.
Draw and look
render_and_lookRead only
Draws an agent's own SVG as a PNG the way Kinf draws a page, and adds Kinf's referee's notes on overflow, contrast and crowding.
Ask your agent something like: “Look at this SVG presentation page I drew. Does anything overflow or read poorly?”
What happens: The SVG comes back as a PNG, drawn the way Kinf draws it; Kinf's checker points out anything that overflows, reads poorly, overlaps or is too small. Nothing is saved.
Inputs (5)
svg(text, at most 40,000 characters)
The SVG document to draw. Exactly one of svg and html is required.
html(text, at most 40,000 characters)
An HTML snippet holding one <svg>. Not with svg.
width(whole number, 64-4000)
The page's width, with height. Read from the viewBox when left out.
height(whole number, 64-4000)
The page's height, with width. Read from the viewBox when left out.
side(whole number, 256-1600)
The picture's long side in pixels. 1080 when left out.
Upload a file
file_uploadMakes changes
Gives a one-time address and a curl line for uploading a file from your computer (a logo, a screenshot, CSS) to Kinf; the file stays 7 days in the temporary area.
Ask your agent something like: “Upload the logo.svg in my project to Kinf.”
What happens: You get a one-time upload address and a ready curl line; your agent sends the file there and its ID works in the other tools. The file stays in a temporary space for 7 days and doesn't fill up your library.
Inputs (3)
name(text, at most 200 characters)required
The file's name with its extension (logo.png). Required.
mime(text, at most 100 characters)
Its media type (image/png). Optional: the file's bytes decide.
bytes(whole number, up to 25 MB)
Its size in bytes. Optional.
Export a moving poster
poster_export_motionMakes changes
A moving poster as an MP4 (H.264), a GIF and/or a Lottie JSON, one page or all pages with their transitions, each with a 24-hour link and its path in your project.
Ask your agent something like: “Export my moving poster as MP4, GIF and Lottie and put them in the public/media folder.”
What happens: The video (H.264), GIF and Lottie JSON are made on the server; each comes with a link that works for 24 hours and the place it goes in your project.
Inputs (8)
id(id)required
The poster's project id. Required.
formats(list: mp4, gif, lottie)
mp4 when left out.
page(1 to 30)
One page; every page as one file when left out.
resolution(1080p, 2K or 4K)
A video's shorter side: 1080, 1440 or 2160 px; 1080p when left out.
fps(12 to 60)
Frames a second (a GIF at most 30); mp4 and lottie 30, gif 15 when left out.
side(120 to 3840)
The long side in pixels, for a smaller file; the file's own size when left out.
folder(text)
Where the files go. public/media when left out.
name(text, at most 80 characters)
The files' name without extension; the poster's title when left out.
Let Kinf design it
kinf_designMakes changes
Kinf AI designs an app icon, OG image, store graphic, README banner, poster, social post or logo itself, as an editable Kinf poster, paid in coins.
Ask your agent something like: “Let Kinf design it: make an app icon for my habit tracker app.”
What happens: Kinf AI makes the design with its own engine and saves it as a poster that opens in the editor; you get a picture and a full-size PNG of the result. It's paid with coins; with your own key, no coins are used.
What it is for, who sees it, anything about its look. Required.
words(list of up to 8 lines)
The exact words to set on it.
brand(text)
One of the person's brands by name or id.
files(list of up to 4 ids)
Their pictures to use (file_upload, library_search).
width + height / format(pixels 64-4096 / a Kinf format)
Another size than the job's.
options(1-3)
How many different layouts. 2 when left out.
quality / model(best, balanced, fast / a model id)
Which model designs it. best when left out.
photos(true or false)
May Kinf have a photograph made for it (extra coins). Only poster and social by default.
confirm_cost(true or false)
The person agreed to the price the first call said.
path(text)
The folder in your project the PNGs go in.
Toolsets
kinf_toolsetsRead only
Lets the agent see Kinf's other toolsets, switch them on for this session, or run a tool by name.
Ask your agent something like: “Open the Kinf tools for my brands and list my brands.”
What happens: Your agent sees the closed groups and opens what it needs for this session, or runs a tool by its name.
Inputs (4)
enable(list)
The ids of the toolsets to switch on (brands, memory…).
call(text)
A tool to run by name.
arguments(object)
That tool's inputs.
page(whole number)
Which page of a long list.
Kinf guide
kinf_guideRead only
Tells the agent how to work with Kinf, one tool's full description, or one toolset's tools.
Ask your agent something like: “Read how you should work in Kinf before you draw a poster.”
What happens: Your agent reads Kinf's full guide, or the whole description of a single tool.
Inputs (2)
tool(text)
The tool to explain in full.
toolset(text)
The toolset whose tools to list.
Posters
Lists your posters and saves a page as a template.
Posters
posters_listRead only
Lists your posters, most recently changed first: title, size, last change, id and editor link.
Ask your agent something like: “List my posters, most recently changed first.”
What happens: You get the name, size, last change, ID and editor link.
Inputs (1)
limit(whole number, 1-50)
How many posters. 20 when left out.
Save as template
poster_save_templateMakes changes
Saves one page of a poster as your own template, with a name, a shelf and tags; the editor shows it under Şablonlarım (My templates).
Ask your agent something like: “Save this page as a template called “Summer template” on the “sale” shelf.”
What happens: The page becomes your template; it shows up in My templates in the editor.
Inputs (5)
id(text (id))required
The poster's project id. Required.
page(whole number, 1-30)
The page to save. 1 when left out.
name(text, at most 60 characters)required
The template's name. Required.
shelf(duyuru, sunum, etkinlik, indirim, urun, soz, bilgi, kapak, video, tebrik, davet, menu, emlak, kurs, saglik, guzellik, hizmet, festival, kafe, yorum, ilan, sayim, sayi, tarife, kaydir, okut, hareket or its English name (sale, event…))required
The shelf the template stands on. Required.
tags(list of texts, at most 8, each at most 24 characters)
Words it is found by, English or Turkish.
Fill a ready-made design
template_fillMakes changes
Fills one of Kinf's ready-made designs with the words given and a photograph of the subject; gives a PNG, a library link and an editor link.
Ask your agent something like: “Fill a ready-made design for an Instagram post with the headline “30% off this weekend”.”
What happens: One of Kinf's ready-made designs is filled with your words and a photo that fits the topic, and opens as a new poster; you get its PNG, a library link and an editor link.
Inputs (20)
headline(text, at most 120 characters)required
The headline. Required.
label(text, at most 160 characters)
The label, if the design has a place for it.
sub(text, at most 160 characters)
The line under the headline, if the design has a place for it.
offer(text, at most 160 characters)
The offer, if the design has a place for it.
note(text, at most 160 characters)
The note, if the design has a place for it.
date(text, at most 160 characters)
The date, if the design has a place for it.
place(text, at most 160 characters)
The place, if the design has a place for it.
hours(text, at most 160 characters)
The hours, if the design has a place for it.
price(text, at most 160 characters)
The price, if the design has a place for it.
name(text, at most 160 characters)
The name, if the design has a place for it.
contact(text, at most 160 characters)
The contact, if the design has a place for it.
quote(text, at most 160 characters)
The quote, if the design has a place for it.
subject(text, at most 60 characters)
What the poster shows (a photograph of it is looked for).
design(text, at most 60 characters)
A ready-made design's id, or words to find one by.
kind(sale, event, product, announcement, menu, invitation… or the Turkish id (indirim, etkinlik, urun…))
The kind of poster. Read from the words when left out.
format(text, at most 40 characters)
A size by name: instagram-post, instagram-story, youtube-thumbnail, flyer-a4…
width / height(whole number, 64-4000)
Both together: a size in place of format.
tone / warmth / accent(dark|light, warm|cool|neutral, a colour)
The feel wanted and the accent colour.
look(true or false)
true: the page's picture comes in the answer too. Only its link when left out.
path(text, at most 200 characters)
Where the file goes in your project (public/hero.png). The file's name when left out.
Design material
Mockups, made-to-order photos and the sizes every platform asks for.
Make a photo
photo_makeReaches the connected account
Makes a scene or a cut-out photograph with OpenAI's newest image model and keeps it in your library; paid with your own key or in coins.
Ask your agent something like: “Make a photo of a latte on a wooden table in morning light, with empty space at the top.”
What happens: The photo is made and saved to your library, and you get its link. It's paid with your own OpenAI key; without one, it comes out of your coins (1.5 times the cost). Up to 10 an hour.
Inputs (4)
prompt(text, 8-1000 characters)required
What to make, in English. Required.
kind(scene or cutout)
scene: a whole ground; cutout: one thing with no background. scene when left out.
shape(square, portrait or landscape)
The picture's shape. square when left out.
path(text, at most 200 characters)
Where the file goes in your project (public/hero.png). The file's name when left out.
Mockup
mockupMakes changes
Puts a picture into a frame (phone, laptop, browser, poster on a wall) or onto a real photographed scene from mockup_scenes; gives a PNG and a library link.
Ask your agent something like: “Show this poster in a photo of a flyer on a table.”
What happens: The image is placed on a phone, laptop, browser or framed on a wall, or into a real photo (a phone in a hand, a flyer on a table, a poster in a shop window); it comes back as a PNG and is saved to your library.
Inputs (9)
picture(text (id))
A file id from your library, or one of Kinf's photographs (kinf-…; kinf-…:object for its cut-out). Not with poster.
poster(id (UUID))
A poster's project id: one of its pages is used. Not with picture.
page(whole number, 1-30)
With poster: which page. 1 when left out.
frame(phone, phone-light, phone-tilted, laptop, tablet, desktop, browser, watch, tv, poster-on-wall, print, instant, or a frame id)
Which frame. phone when left out. Not with scene.
scene(text (id))
A photographed scene's id from mockup_scenes (telefon-elde…). Not with frame or background.
background(text: hex, rgb(), hsl() or oklch())
The colour of the ground behind a frame. A light grey when left out (a wall colour for poster-on-wall).
side(whole number, 256-1600)
The picture's long side in pixels. 1200 when left out.
look(true or false)
true: the picture comes in the answer too. Only its link when left out.
path(text, at most 200 characters)
Where the file goes in your project (public/hero.png). The file's name when left out.
Mockup scenes
mockup_scenesRead only
Finds Kinf's real photographed mockup scenes (phone in hand, flyer on a desk, poster in a shop window, billboard, mug…) with the shape of each surface; ids for mockup's scene.
Ask your agent something like: “Find shop window and flyer mockup scenes in Kinf.”
What happens: Mockup scenes from real photos are listed with their ID, shelf, surface ratio and photographer.
Inputs (3)
words(text, at most 80 characters)
What the scene shows, in English or Turkish (flyer, shop window, phone, mug). All scenes when left out.
Cuts a picture or a poster page to many platform sizes in one go; each is kept in your library, with its link.
Ask your agent something like: “Resize this image for every social media size.”
What happens: Each size (Instagram, Facebook, X, LinkedIn, Pinterest, YouTube thumbnail, share image…) is saved to your library as its own file, and you get the links. Up to 12 at a time.
Inputs (7)
picture(text (id))
A file id from your library, or one of Kinf's photographs (kinf-…; kinf-…:object for its cut-out). Not with poster.
poster(id (UUID))
A poster's project id: one of its pages is used. Not with picture.
page(whole number, 1-30)
With poster: which page. 1 when left out.
sizes(list of texts, at most 12)
Size names (instagram-story, x-post…), or social. social when left out.
mode(crop or fit)
crop: fills each size; fit: the whole picture shows, the edges filled with a colour. crop when left out.
background(text: hex, rgb(), hsl() or oklch())
With fit: the edges' colour. White when left out.
path(text, at most 200 characters)
The folder in your project the files go in (public/social/).
App icon pack
pack_app_iconsMakes changes
Every iOS, Android and web icon from one design (poster page, picture or SVG), each with its path in the project, plus one zip; paths follow the framework (plain, Next.js, Expo, Flutter).
Ask your agent something like: “Make every app icon for iOS, Android and the web from this logo and place them to fit my Next.js project.”
What happens: Each icon (iOS appiconset, Android mipmap and adaptive icon, favicon, web manifest) comes with the place it goes in your project, and all of them in one zip.
Inputs (11)
poster_id + page(id, page number)
A Kinf poster and its page (1 when left out).
file_id(id)
A picture or SVG from the library or file_upload.
svg(text, at most 100,000 characters)
Your own SVG document. Exactly one of the three sources.
targets(list: ios, android, web, all)
Which icons. All when left out.
framework(plain, nextjs, expo, flutter)
Where the files go. plain when left out.
background(#RRGGBB)
The plate behind the art; from the design when left out.
background_file_id(id)
A picture as the plate and the adaptive icon's background.
padding(0 to 0.4)
Free space each side.
corner_radius(0 to 0.5)
Rounded corners on the web icons only.
name(text, at most 60 characters)
The app's name as people see it (with its capitals), for the web manifest.
theme_color(#RRGGBB)
The browser bar's colour; the background when left out.
Share image pack
pack_og_imagesMakes changes
One 1200×630 share image per page from a design with {{slots}} and a list of rows (also X and square sizes), words fitted per row, plus a Next.js opengraph-image.tsx on request.
Ask your agent something like: “Make a share image (OG) with its title for every page of my site: home, pricing, blog.”
What happens: You get a 1200×630 image for each page; text is fitted to every line, and anything shortened is pointed out. If you like, a Next.js opengraph-image.tsx file comes too. All in one zip.
Inputs (12)
poster_id + page(id, page number)
A Kinf poster whose texts hold {{slots}}.
svg(text)
Your own SVG design with {{slots}} in <text>. One of the two.
slots(object)
Slot name → text layer id, for poster texts without {{…}}.
rows(list of 1 to 50 objects)required
One per page: slug and the slots' words. Required.
slug_key(text)
The field that names the file. slug when left out.
sizes(list: og, twitter, square)
Which sizes. og when left out.
folder(text)
Where the images go. public/og when left out.
least_scale(0.4 to 1)
How small words may be made. 0.6 when left out.
framework(plain or nextjs)
nextjs: the answer carries the metadata (metadataBase, openGraph, twitter) to paste.
site_url(https URL)
The live site, for metadataBase and absolute image URLs.
nextjs(true/false)
Also a Next.js opengraph-image.tsx.
nextjs_route(text)
The route folder for it. app/[slug] when left out.
Launch image pack
pack_launchMakes changes
One design at every launch size (README banner, GitHub preview, Product Hunt, X, LinkedIn, Instagram), laid out again per size, each with its path, plus one zip.
Ask your agent something like: “Resize this design for launch: README, GitHub, Product Hunt, X, LinkedIn and Instagram.”
What happens: The design is laid out again for each size (nothing gets stretched); you get each file with its path, and all of them in one zip.
Inputs (7)
poster_id + page(id, page number)
A Kinf poster and its page (1 when left out).
file_id(id)
A picture or SVG from the library or file_upload.
svg(text, at most 100,000 characters)
Your own SVG document. Exactly one of the three sources.
targets(list of size ids, or all)
Which sizes. All when left out.
folder(text)
Where the social images go. launch when left out.
background(#RRGGBB)
The ground around a picture that is fitted whole.
title(text, at most 80 characters)
What the images show, for the README's alt text.
Store screenshots
pack_store_screenshotsMakes changes
Makes App Store and Google Play screenshots in every required size from your screenshots and captions, with device frames, plus one zip.
Ask your agent something like: “Make App Store and Google Play images with headlines from these three screenshots.”
What happens: Each screen comes as a PNG in a device frame with its headline, in every size the stores ask for (iPhone 6.9"/6.5", iPad 13", Play phone/tablet, feature graphic); all in one zip, in folders.
Inputs (10)
screens(list of 1-10 {file, caption, subcaption?, tablet_file?})required
Each screen: a screenshot id from file_upload and its caption. Required.
sizes(list of iphone-6.9, iphone-6.5, ipad-13, play-phone, play-tablet-7, play-tablet-10, play-feature, or appstore, play, all)
Which sizes. All when left out.
background(colour, or list of 2-3 colours)
The ground: one colour, or a fade from top to bottom.
text_color(colour)
The captions' colour. White or near-black when left out, whichever reads better.
brand(text)
One of your brands by name or id: its colours and heading font.
caption_position(top or bottom)
Where the caption stands. top when left out.
font / weight(a family of Kinf's fonts, 100-900)
The captions' font. Inter 800 when left out.
frame / device_color(true or false; dark or light)
A device frame round each screenshot (true), and its colour.
feature_title / feature_subtitle(text)
The Play feature graphic's words. The first caption when left out.
path(text, at most 200 characters)
The folder in your project the files go in (for example fastlane/screenshots/).
Find illustrations
illustration_searchRead only
Finds Kinf's hand-drawn marks, shapes, drawings, 3D objects, flags, badges, stickers, frames and animations by words; ids for illustration_get.
Ask your agent something like: “Find a hand-drawn arrow and underline in Kinf.”
What happens: Hand-drawn marks, shapes, 3D objects, flags, badges and stickers are listed with their IDs and licenses.
Gives one of Kinf's illustrations as SVG (recoloured for marks and shapes), PNG, a frame's mask SVG or an animation's Lottie JSON / animated WebP, with its licence and a download link.
Ask your agent something like: “Give me the mark:underline-wavy drawing as an orange SVG.”
What happens: The drawing comes as SVG in the color you asked for, or as PNG in the size you asked for, with its license and a download link.
Inputs (5)
id(text)required
An id from illustration_search, e.g. mark:arrow-curl-1. Required.
format(svg, png, webp, lottie, gif)
svg for vectors and frames, png for 3D, lottie (or animated webp for emoji) for animations when left out.
color(colour)
For marks, shapes and single-colour stickers: their colour; for a frame: its window's. #111111 (#D3D9E0 for a frame) when left out.
size(whole number, 16-4096)
The long side in pixels. 512 when left out (400 for 3D).
path(text, at most 200 characters)
Where the file goes in your project. Its name when left out.
Photograph at a size
photo_getMakes changes
Gives one of Kinf's photographs cut to any exact width × height (crop or fit), as JPG, PNG or WebP with its licence.
Ask your agent something like: “Crop this photo to 1600x900.”
What happens: Kinf's photo comes in exactly that size (cropped or fitted) as JPG, PNG or WebP, with its license line.
Inputs (7)
id(text)required
A photograph's id from photo_search (kinf-…, or kinf-…:object). Required.
width / height(whole numbers, 16-6000)
The exact size in pixels. Required.
fit(crop or fit)
crop fills the size; fit shows all of it. crop when left out.
focus(busy or center)
With crop: what stays in view. busy when left out.
background(colour)
With fit: the colour round it. White, or see-through for a cut-out.
format / quality(jpg, png or webp; 1-100)
The file's kind and, for JPG and WebP, its quality (86).
path(text, at most 200 characters)
Where the file goes in your project.
Library
The files you uploaded and the ones Kinf made.
Library files
library_listRead only
Lists the files in your library, newest first: name, kind, size, when added and id.
Ask your agent something like: “Show the last 10 files in my Kinf library.”
What happens: You get each file's name, type, size, when it was added and its ID. Files in the trash are left out.
Inputs (1)
limit(whole number, 1-50)
How many files. 20 when left out.
File download link
library_get_linkRead only
Gives a 24-hour download link for one file in your library, with where it goes in your project.
Ask your agent something like: “Give me a download link for this file.”
What happens: You get a download link that works for 10 minutes. Only for your own files.
Inputs (2)
id(text (id))required
The file id from library_list or library_search. Required.
path(text, at most 200 characters)
Where the file goes in your project. The file's name when left out.
Edit a file
library_updateMakes changes
Changes a file's name, note, tags or star in your library. What is not given stays as it is.
Ask your agent something like: “Rename logo.png in my library to “Main logo” and star it.”
What happens: The name, note, tags and star change. Anything you don't mention stays the same.
Inputs (5)
id(text (id))required
The file id from library_list or library_search. Required.
name(text, at most 200 characters)
A new name for the file, with its extension.
note(text, at most 500 characters)
What the file is, in a line. An empty text removes the note.
tags(list of texts, at most 12, each at most 24 characters)
All of the tags. An empty list removes them.
starred(true or false)
Whether the file is starred.
Move files to the trash
library_trashMoves to trash or removes
Moves files in your library to the trash, up to 20 at a time. Nothing is deleted: you can take them back within 30 days in Görseller → Çöp kutusu (Pictures → Trash).
Ask your agent something like: “Move these three old files in my library to the trash.”
What happens: The files go to the trash, not deleted. You can restore them in Kinf within 30 days. Up to 20 at a time.
Inputs (1)
ids(list of ids, 1-20)required
File ids from library_list or library_search. Required.
Move files to a folder
library_moveMakes changes
Puts files from your library into a folder, or takes them out of their folder, up to 20 at a time.
Ask your agent something like: “Move these five images into my “Campaign” folder.”
What happens: The files go into the folder. Give null instead of a folder and they come out of it.
Inputs (2)
ids(list of ids, 1-20)required
File ids from library_list or library_search. Required.
folder_id(text (id) or null)required
The folder id from folders_list. null takes the files out of every folder. Required.
Temporary files
files_list_tempRead only
Lists the files in the temporary area (uploads and tools' in-between results) with their ids and 24-hour download links.
Ask your agent something like: “List the temporary files I uploaded to Kinf and the ones the tools made.”
What happens: Each temporary file comes with its ID, type, size, when it goes away and a download link that works for 24 hours. Temporary files last 7 days.
Inputs (1)
limit(whole number, 1-50)
How many files. 20 when left out.
Keep in the library
file_keepMakes changes
Moves a file from the temporary area into your library for good and gives its library id.
Ask your agent something like: “Save the logo.png I just uploaded to my library.”
What happens: The temporary file moves to your library and you get its library ID. If the same file is already in your library, it isn't saved twice.
Inputs (2)
file_id(id (UUID))required
The temporary file's id, from file_upload or files_list_temp. Required.
name(text, at most 200 characters)
Its name in the library. Its own name when left out.
Folders
The folders of your library and your Projects page.
Folders
folders_listRead only
Lists your folders, in your library or on your Projeler (Projects) page: each one's name, the folder it sits in, how much it holds and its id.
Ask your agent something like: “List the folders in my library.”
What happens: You get each folder's name, the folder it sits in, how many things it holds and its ID.
Inputs (1)
shelf(library, projects)
library: the folders in your library. projects: the folders on your Projeler (Projects) page. library when left out.
Create a folder
folder_createMakes changes
Makes a folder in your library or on your Projeler (Projects) page. If one with the same name is already in the same place, it shows that one instead of making another.
Ask your agent something like: “Create a blue folder called “Spring 2026” on my Projects page.”
What happens: The folder is created. If a folder with the same name is already there, no new one is made and the existing one is shown.
Inputs (4)
name(text, at most 60 characters)required
The folder's name. Required.
shelf(library, projects)
library: in your library. projects: on your Projeler (Projects) page. library when left out.
parent_id(text (id))
The folder to make it inside: a folder id from folders_list. At the top when left out.
color(orange, yellow, green, blue, purple, pink)
The folder's colour. Plain when left out.
Edit a folder
folder_updateMakes changes
Changes one of your folders' name, colour or place. What it holds stays in it.
Ask your agent something like: “Rename the “Campaign” folder to “Campaign 2026”.”
What happens: The name, color or place changes; what's inside stays the same.
The format of the colours and fonts. css when left out.
Create a project
project_createMakes changes
Starts a new poster project, optionally with its brief, colours and fonts.
Ask your agent something like: “Create a 1080x1350 poster project called “Summer sale”, in dark blue and orange.”
What happens: The new project shows up on your Projects page; you get its ID and link.
Inputs (10)
title(text, at most 120 characters)required
The project's name. Required.
kind(design)required
design: a poster, the one kind new projects are. Required. The older value animation is still accepted but is no longer a kind of its own.
width(whole number, 16-8000)
Width in pixels. 1080 when left out.
height(whole number, 16-8000)
Height in pixels. 1080 when left out.
summary(text, at most 400 characters)
What the project is.
audience(text, at most 200 characters)
Who it is for.
tone(text, at most 200 characters)
How it should feel.
formats(list of texts, at most 6)
What it will be made as.
palette(list of colours, at most 8)
The colours, each as #RRGGBB with its name.
fonts(list of texts, at most 4)
Font families: the first for headings, the second for body text.
Update a project
project_updateMakes changes
Changes a project's title, status, tags, due day or brief. What is not given stays as it is.
Ask your agent something like: “Set the “Summer sale” project's status to “review” and its due date to October 20.”
What happens: The name, status, tags, due date and summary change. Anything you don't mention stays the same.
Inputs (11)
id(text (id))required
The project id from projects_list. Required.
title(text, at most 120 characters)
A new name.
status(draft, active, review or done)
Where the work stands.
tags(list of texts, at most 8, each at most 24 characters)
All of the tags. An empty list removes them.
due(YYYY-MM-DD or null)
The due day. null removes it.
summary(text, at most 400 characters)
What the project is. null clears it.
audience(text, at most 200 characters)
Who it is for. null clears it.
tone(text, at most 200 characters)
How it should feel. null clears it.
formats(list of texts, at most 6)
What it will be made as. null clears it.
palette(list of colours, at most 8)
The colours, each as #RRGGBB with its name. null clears it.
fonts(list of texts, at most 4)
Font families: the first for headings, the second for body text. null clears it.
Add files to a project
project_add_filesMakes changes
Puts files from your library into a project's inventory, up to 20 at a time.
Ask your agent something like: “Put these two photos from my library into the “Summer sale” project's inventory.”
What happens: The files go into the project's inventory. Up to 20 at a time.
Inputs (2)
id(text (id))required
The project id from projects_list. Required.
file_ids(list of ids, 1-20)required
File ids from library_list or library_search. Required.
Add Kinf pictures to a project
project_add_kinf_picturesMakes changes
Puts Kinf's own photographs into a project's inventory, up to 20 at a time.
Ask your agent something like: “Add these three beaches you found in Kinf's images to the project.”
What happens: Kinf's photos go into the project's inventory. Up to 20 at a time.
Inputs (2)
id(text (id))required
The project id from projects_list. Required.
picture_ids(list of ids, 1-20)required
Picture ids from kinf_pictures_search (each starts with kinf-). Required.
Take files out of a project
project_remove_filesMoves to trash or removes
Takes files or Kinf pictures out of a project's inventory. The files stay in your library.
Ask your agent something like: “Take this photo out of the “Summer sale” inventory.”
What happens: The file only leaves the project; it stays in your library.
Inputs (3)
id(text (id))required
The project id from projects_list. Required.
file_ids(list of ids, at most 20)
The files to take out: file ids as project_get lists them in the inventory.
picture_ids(list of ids, at most 20)
The Kinf pictures to take out: ids as project_get lists them in the inventory (each starts with kinf-).
Move projects to a folder
project_fileMakes changes
Puts your projects into a folder on your Projeler (Projects) page, or takes them out of their folder, up to 20 at a time.
Ask your agent something like: “Put these three projects of mine in the “Archive” folder.”
What happens: The projects go into the folder on your Projects page. Up to 20 at a time.
Inputs (2)
ids(list of ids, 1-20)required
Project ids from projects_list. Required.
folder_id(text (id) or null)required
The folder id from folders_list (shelf: projects). null takes the projects out of every folder. Required.
Pin a project
project_pinMakes changes
Pins one of your projects to the top of your Projeler (Projects) page, or takes its pin off.
Ask your agent something like: “Pin the “Summer sale” project to the top.”
What happens: The project is pinned to the top of your Projects page; pinned: false unpins it.
Inputs (2)
id(text (id))required
The project id from projects_list. Required.
pinned(true or false)
true pins it, false takes the pin off. true when left out.
Move a project to the trash
project_trashMoves to trash or removes
Moves one of your projects to the trash. Nothing is deleted: you can take it back within 30 days on the Projeler (Projects) page, under Çöp kutusu (Trash).
Ask your agent something like: “Move the “Old draft” project to the trash.”
What happens: The project goes to the trash, not deleted. You can restore it from the Trash in Projects within 30 days.
Inputs (1)
id(text (id))required
The project id from projects_list. Required.
Link a project to a brand
project_set_brandMakes changes
Links one of your projects to one of your brands, or unlinks it. The project's brief takes the colours, fonts and tone it lacks from the brand.
Ask your agent something like: “Link the “Summer sale” project to the “Harbor Cafe” brand.”
What happens: The project is linked to the brand; if you like, missing colors, fonts and tone are filled in from the brand. Give null to unlink it.
Inputs (3)
id(text (id))required
The project's id, from projects_list. Required.
brand_id(text (id) or null)required
The brand's id, from brand_list; null takes the link away. Required.
fill(true or false)
true: the brief takes the colours, fonts and tone it lacks from the brand. true when left out.
Brands
Your brand kits: colors, fonts, voice and files.
Brands
brand_listRead only
Lists your brands: name, whether it is the default, tagline, colours, fonts, how many files and projects it holds, and its id.
Ask your agent something like: “List my brands.”
What happens: You get the name, whether it's the default, the tagline, colors, fonts, how many files and projects it has, and its ID.
Takes no input
Brand details and tokens
brand_getRead only
Reads one brand whole (kit, themes, fonts, files, projects) and hands its colours and fonts over as token files with English names: CSS with dark mode, Tailwind v4 and v3, SCSS, JSON, SwiftUI, Android, Compose.
Ask your agent something like: “Read the whole “Harbor Cafe” brand and give me its colors as Tailwind.”
What happens: You get its identity, colors, themes, fonts, files and projects, with colors and fonts ready to drop into code.
The token format to hand over as files. css when left out; all gives every format.
Create a brand
brand_createMakes changes
Makes a new brand: its name and, if you like, its tagline, voice, colours, themes and fonts. Given colours and no themes, three themes are built from the colours.
Ask your agent something like: “Set up a brand called “Harbor Cafe”: tagline “Sun, coffee, sea”, colors #0B3D5C and #F28C28.”
What happens: The brand is set up. If you give colors but no themes, three themes are made from the colors.
Inputs (12)
name(text, at most 80 characters)required
The brand's name. Required.
tagline(text, at most 120 characters)
The one line under the name.
about(text, at most 600 characters)
What the brand is and does.
audience(text, at most 300 characters)
Who it speaks to.
tone(text, at most 200 characters)
How it sounds, in a sentence.
traits(list of texts, at most 6, each at most 30 characters)
The voice in single words, such as warm or plain.
dos(list of texts, at most 6, each at most 140 characters)
What its words always do.
donts(list of texts, at most 6, each at most 140 characters)
What its words never do.
site(text, at most 200 characters)
Its website, as an https address.
colors(list of colours, at most 12)
Each as #RRGGBB with a name and a job (primary, secondary, accent, ground, text, other).
themes(list of themes, at most 8)
Each with a name and six colours (ground, surface, text, muted, accent, onAccent). Left out while colours are given, three are built from the colours.
fonts(list of fonts, at most 4)
Each with its family, its job (heading, body, accent) and, if wanted, a weight.
Change a brand
brand_updateMakes changes
Changes a brand's name, whether it is the default, or parts of its kit. What you leave out stays as it is.
Ask your agent something like: “Make “Harbor Cafe” my default brand and set its tone to “warm, simple”.”
What happens: The name, default setting and parts of the identity change. Anything you don't mention stays the same.
Inputs (14)
id(text (id))required
The brand's id, from brand_list. Required.
name(text, at most 80 characters)
A new name for the brand.
default(true or false)
true makes this brand the default (the one that was stops being it); false takes the default away.
tagline(text, at most 120 characters)
The one line under the name. null clears it.
about(text, at most 600 characters)
What the brand is and does. null clears it.
audience(text, at most 300 characters)
Who it speaks to. null clears it.
tone(text, at most 200 characters)
How it sounds, in a sentence. null clears it.
traits(list of texts, at most 6, each at most 30 characters)
The voice in single words, such as warm or plain. null clears it.
dos(list of texts, at most 6, each at most 140 characters)
What its words always do. null clears it.
donts(list of texts, at most 6, each at most 140 characters)
What its words never do. null clears it.
site(text, at most 200 characters)
Its website, as an https address. null clears it.
colors(list of colours, at most 12)
Each as #RRGGBB with a name and a job (primary, secondary, accent, ground, text, other). null clears it.
themes(list of themes, at most 8)
Each with a name and six colours (ground, surface, text, muted, accent, onAccent). null clears it.
fonts(list of fonts, at most 4)
Each with its family, its job (heading, body, accent) and, if wanted, a weight. null clears it.
Add files to a brand
brand_items_addMakes changes
Puts your library files (as a logo, image, icon or pattern) and Kinf's own pictures into a brand, up to 50 at a time. A logo is always your own file.
Ask your agent something like: “Add the logo file from my library to the “Harbor Cafe” brand as its logo.”
What happens: Files (logo, image, icon, pattern) and Kinf images go into the brand. Up to 50 at a time.
Inputs (2)
id(text (id))required
The brand's id, from brand_list. Required.
items(list of items, 1-50)required
Each: kind (logo, image, icon, pattern) and file_id (a library file) or picture_id (a Kinf picture); on a logo, variant and ground if wanted; label on any. Required.
Take files out of a brand
brand_items_removeMoves to trash or removes
Takes files or Kinf pictures out of a brand. The files stay in your library.
Ask your agent something like: “Take the old logo out of the brand.”
What happens: The file only leaves the brand; it stays in your library.
Inputs (2)
id(text (id))required
The brand's id, from brand_list. Required.
item_ids(list of ids, 1-50)required
The items to take out: the ids brand_get prints after "item" on each file. Required.
Move a brand to the trash
brand_trashMoves to trash or removes
Moves one of your brands to the trash. Nothing is deleted: you can take it back within 30 days on the Brands page.
Ask your agent something like: “Move the “Old Brand” brand to the trash.”
What happens: The brand goes to the trash, not deleted; you can restore it from the Brand page within 30 days. This server can't restore it, only you can.
Inputs (1)
id(text (id))required
The brand's id, from brand_list. Required.
Logo from type
brand_wordmarkMakes changes
Sets a name in a font as a logo, or its initials as a monogram, and keeps it as an SVG in your library and, if you like, in a brand.
Ask your agent something like: “Make a bold, dark blue logo from the words “Harbor Cafe” and save it to the brand.”
What happens: An SVG logo in the font you chose (or a mark made from the initials) is saved to your library, and to your brand if you like.
Inputs (10)
text(text, 1-40 characters)required
The name to set. Required.
family(text: a font family)required
One of Kinf's fonts, by its name. Required.
weight(whole number, 100-900)
One of the weights that family comes in. The one nearest 700 when left out.
color(text: hex, rgb(), hsl() or oklch())
The letters' colour. #111111 when left out.
ground(colour or null)
A colour behind the letters: a plate under a wordmark, the fill of a monogram's badge. Transparent when left out or null.
letter_case(as-is, upper or lower)
Letters as written, in capitals, or small. as-is when left out.
tracking(number, -0.05 to 0.3)
Space between letters, in em. 0 when left out.
form(wordmark or monogram)
wordmark: the whole name. monogram: its initials. wordmark when left out.
badge(none, circle or square)
The shape a monogram sits in. none when left out.
brand_id(text (id))
A brand's id from brand_list: the logo also goes into that brand.
Read a website's brand
brand_from_siteReaches the connected account
Reads a website's own brand: its name, tagline, colours, fonts and logo candidates. Saves nothing; at most 20 sites an hour.
Ask your agent something like: “Read the brand of the site harborcafe.example. What are its colors and fonts?”
What happens: You get the site's own name, tagline, colors, fonts and logo candidates. Nothing is saved. Up to 20 sites an hour.
Inputs (1)
address(text, at most 200 characters)required
The site's address: example.com or https://example.com. Required.
Read a brand from project files
brand_from_filesMakes changes
Reads an existing brand out of uploaded project files (CSS, Tailwind config, package.json, web manifest, tokens JSON, logo): name, colours with jobs, light and dark themes, fonts, logo. Saves it as a brand kit when asked.
Ask your agent something like: “Upload my project's CSS, tailwind.config.js, package.json and logo; read my brand from them and save it to Kinf.”
What happens: You get the name, colors with their roles, light and dark themes, fonts and logo from the files. With save: true it's saved as a brand, with the logo inside.
Inputs (3)
file_ids(list of ids, 1-10)required
The files to read: ids from file_upload, files_list_temp or the library. Required.
save(true or false)
true: also create a brand kit from what was found. false when left out.
name(text, at most 80 characters)
The brand's name when saving; the name found in the files when left out.
Save your own logo to a brand
brand_logo_saveMakes changes
Saves an SVG logo mark you drew into a brand (cleaned, kept in the library) and hands back SVG, transparent PNG 512 and 1024, and a one-colour version.
Ask your agent something like: “Save the SVG icon you drew as my brand's logo and put it in the project.”
What happens: The SVG is cleaned up and goes into your library and brand; you get download links for the SVG, transparent 512 and 1024 PNGs and a one-color version.
Inputs (6)
id(text (id))required
The brand's id, from brand_list. Required.
svg(text, at most 300,000 characters)required
The logo as SVG markup, with a viewBox. Required.
variant(main, mark, wordmark, mono)
Which form of the logo it is. mark when left out.
mono_color(text: hex, rgb(), hsl() or oklch())
The colour of the one-colour copy. The brand's text colour, else #111111, when left out.
name(text, at most 60 characters)
The files' name, without an ending. The brand's name and -logo when left out.
path(text, at most 200 characters)
The folder in your project the files go to. public/brand when left out.
Image tools
Work on Kinf's photos and your own files: resize, convert, compress, QR codes.
QR code
qr_codeRead only
Makes a QR code for a link or a text and gives it as SVG.
Ask your agent something like: “Give me a QR code SVG for kinf.app.”
What happens: The QR code comes back as SVG. No file is saved.
Inputs (6)
text(text, at most 1200 characters)required
The link or text the code holds. Required.
level(L, M, Q, H)
Error correction: L the least, H the most. M when left out.
foreground(text: hex, rgb(), hsl() or oklch())
The colour of the code. Black when left out.
background(text: hex, rgb(), hsl() or oklch())
The colour behind it. White when left out.
margin(whole number, 2-8)
The quiet zone around the code, in modules. 4 when left out.
shape(square or dot)
The modules' shape: square or round dots. square when left out.
Optimize an SVG
svg_optimizeRead only
Makes SVG markup smaller without changing how it looks; gives the size before and after and the cleaned markup.
Ask your agent something like: “Shrink this SVG code: <svg ...>”
What happens: You get the smaller code, with the size before and after. No file is saved.
Inputs (4)
svg(text, at most 100,000 characters)required
The SVG markup to make smaller. Required.
precision(whole number, 1-5)
Decimal places kept in numbers: fewer makes a smaller file and can bend fine curves. 2 when left out.
flexible(true or false)
true: width and height go and the viewBox stays, so it fits its container.
keep_ids(true or false)
true: ids and classes are left as they are, for an SVG styled or scripted from outside.
Search Kinf's pictures
kinf_pictures_searchRead only
Searches Kinf's own photographs: each one's title, shelf, tags, size, photographer, licence, id and direct address.
Ask your agent something like: “Search Kinf's images for a sunset photo.”
What happens: Photos come with their name, shelf, tags, size, photographer, license, ID and address.
Inputs (3)
query(text, at most 120 characters)
What the picture shows, in English or Turkish: for example "coffee", "desk", "ocean".
Where the picture will go. Not together with width and height.
size(text: a size's id)
One of that place's sizes (for example instagram-story). The place's first size, the one most people want there, when left out.
width(whole number, 1-8000)
Width in pixels. Given together with height when no named size fits.
height(whole number, 1-8000)
Height in pixels. Given together with width.
mode(crop or fit)
crop: fills the size and cuts off what overflows. fit: the whole picture fits, with bars at the edges. crop when left out.
path(text, at most 200 characters)
Where the file goes in your project; given back with its download link.
Convert a picture
image_convertMakes changes
Writes a picture in your library again as PNG, JPG or WebP; keeps the new file in your library.
Ask your agent something like: “Bu PNG'yi WebP yap.”
What happens: A PNG, JPG or WebP copy is saved to your library.
Inputs (4)
file_id(text (id))required
The id of the picture to convert, from library_list or library_search. Required.
format(png, jpg, webp)required
The format to write. Required.
quality(whole number, 40-100)
Quality for JPG and WebP; not used for PNG. 90 when left out.
path(text, at most 200 characters)
Where the file goes in your project; given back with its download link.
Compress a picture
image_compressMakes changes
Makes a lighter copy of a picture in your library and keeps it there; when it would not come out lighter, no file is made.
Ask your agent something like: “Make a lighter copy of this image.”
What happens: A lighter copy is saved to your library. If it wouldn't be lighter, no file is made.
Inputs (4)
file_id(text (id))required
The id of the picture to compress, from library_list or library_search. Required.
format(png, jpg, webp)
The format to write. A PNG comes down to 256 colours. webp when left out.
quality(whole number, 30-90)
Quality for JPG and WebP: the lower, the lighter the file. 75 when left out.
path(text, at most 200 characters)
Where the file goes in your project; given back with its download link.
Clean an SVG
svg_cleanMakes changes
Makes an SVG file in your library smaller without changing how it looks; keeps the clean copy in your library.
Ask your agent something like: “Clean up this SVG in my library.”
What happens: A smaller copy that looks exactly the same is saved to your library.
Inputs (2)
file_id(text (id))required
The id of the SVG file to clean, from library_list or library_search. Required.
path(text, at most 200 characters)
Where the file goes in your project; given back with its download link.
QR kod (PNG)
qr_makeMakes changes
Makes a QR code for a link or a text and keeps it in your library as a PNG.
Ask your agent something like: “Make a dark blue QR code for kinf.app and save it as a PNG.”
What happens: A PNG QR code (512, 1024 or 2048 pixels) is saved to your library.
Inputs (6)
text(text, at most 1,200 characters)required
The link or text the code holds. Required.
level(L, M, Q, H)
Error correction: L the least, H the most. M when left out.
foreground(text: hex, rgb(), hsl() or oklch())
The colour of the code. Black when left out.
background(text: hex, rgb(), hsl() or oklch())
The colour behind it. White when left out.
size(512, 1024, 2048)
One side of the picture, in pixels. 1024 when left out.
path(text, at most 200 characters)
Where the file goes in your project; given back with its download link.
Trace into SVG
image_vectorizeMakes changes
Traces a picture (logo, icon, drawing) into a clean SVG in a few flat colours or one ink, background dropped.
Ask your agent something like: “Turn the logo.png I uploaded into an SVG, without the background.”
What happens: The image becomes a clean SVG in a few flat colors (or one color); a plain background is dropped. It comes with a download link.
Inputs (6)
picture(id)required
A picture from file_upload or the library. Required.
colors(whole number, 2-32)
How many flat colours. 8 when left out.
mono / color(true or false; colour)
One ink colour (#111111 when left out) on nothing.
detail(low, medium or high)
Smoother (low) or more faithful (high). medium when left out.
background(auto, keep or drop)
Whether the background's colour is drawn. auto when left out.
path(text, at most 200 characters)
Where the SVG goes in your project.
Remove a plain background
image_remove_backgroundMakes changes
Takes a plain one-colour background off your picture (logo, product shot, scan) as a see-through PNG; busy photo backgrounds are not available yet.
Ask your agent something like: “Remove the background from my product photo on white.”
What happens: A plain one-color background is removed and you get a transparent PNG. Busy photo backgrounds aren't supported yet: they're coming with Kinf's cut-out feature.
Inputs (4)
picture(id)required
A picture from file_upload or the library. Required.
tolerance(whole number, 1-60)
How far from the background colour still goes. 12 when left out.
trim(true or false)
Cut the empty margin away. false when left out.
path(text, at most 200 characters)
Where the PNG goes in your project.
Color
Color formats, contrast and tone scales.
Convert a colour
color_convertRead only
Writes one colour as hex, rgb(), hsl() and oklch().
Ask your agent something like: “Write the color #F28C28 as HSL and OKLCH.”
What happens: The color comes as HEX, RGB, HSL and OKLCH.
Inputs (1)
color(text: hex, rgb(), hsl() or oklch())required
The colour to convert. Required.
Check contrast
color_contrastRead only
Gives two colours' contrast ratio and whether it passes WCAG AA and AAA; when body text falls short, the nearest colours that pass.
Ask your agent something like: “Can white text be read on a #F28C28 background?”
What happens: You get the contrast ratio and the WCAG AA / AAA result; if it doesn't pass, the closest color that does is suggested.
Inputs (2)
foreground(text: hex, rgb(), hsl() or oklch())required
The colour of the text or icon. Required.
background(text: hex, rgb(), hsl() or oklch())required
The colour behind it. Required.
Tone scale
color_scaleRead only
Makes an eleven-tone scale, 50 to 950, from one colour: as a hex list, CSS custom properties or a Tailwind v4 theme.
Ask your agent something like: “Make a 50-950 tone scale from #0B3D5C and give it to me as Tailwind.”
What happens: You get an eleven-step scale: a HEX list, CSS variables or a Tailwind theme.
Inputs (3)
color(text: hex, rgb(), hsl() or oklch())required
The colour to build the scale from. Required.
name(text, at most 40 characters)
The scale's name in variable names. "renk" when left out.
format(hex, css, tailwind)
What the answer is written as. hex when left out.
Memory and chats
What Kinf remembers about you, and the titles of your chats.
What Kinf remembers
memory_listRead only
Lists what Kinf remembers about you (your personal memory only).
Ask your agent something like: “What does Kinf remember about me?”
What happens: You get the items in Kinf's personal memory. Private topics are read only if you've allowed it.
Takes no input
Add to memory
memory_addMakes changes
Adds one thing to your personal memory, with the app's limits: at most 500 characters, 200 items, private topics only if you allowed them.
Ask your agent something like: “Have Kinf remember this: I always want simple fonts on my posters.”
What happens: One item is added to memory. Up to 500 characters and 200 items; private topics only if you've allowed it.
Inputs (1)
text(text, at most 500 characters)required
The thing to remember. Required.
Chats
chats_listRead only
Lists your chats by last activity: title, kind, last activity. Messages are never read.
Ask your agent something like: “Show the titles of my recent chats.”
What happens: You get the title, type and last activity. The messages themselves aren't read.
Inputs (1)
limit(whole number, 1-30)
How many chats. 20 when left out.
Remove from memory
memory_forgetMoves to trash or removes
Removes one item from what Kinf remembers about you. The item is named by its exact words, as memory_list prints them.
Ask your agent something like: “Tell Kinf to forget the “simple fonts” item.”
What happens: That item is deleted from memory. It doesn't go to the trash, so your agent should ask you first.
Inputs (1)
text(text, at most 500 characters)required
The words of the item to remove, exactly as memory_list prints them, without the [topic] in front. Required.
Integrations
Sends through the accounts you've connected; only works if you turn it on.
Connected accounts
integrations_listRead only
Lists the accounts you connected to Kinf and what can be done with each: the service, the action, the account's name, whether it takes text or files, and whether a destination must be chosen.
Ask your agent something like: “Which of my accounts have I connected to Kinf?”
What happens: You get your connected accounts and what each can do: the service, the action, the account name, and whether it takes text or files. This list can be read even when sending is off.
Takes no input
Send destinations
integration_destinationsReaches the connected account
Lists where a connected account can send to: channels, repositories, pages. Works only if you have let agents send through your connected accounts.
Ask your agent something like: “Which channels can I send to in my Slack account?”
What happens: You get the channels, repos or pages the connected account can send to. Only works if you've turned on sending.
Inputs (3)
provider(text)required
The service's id, as integrations_list gives it. Required.
action(text)required
The action's id, as integrations_list gives it. Required.
connection(text (id))
Which account, when you connected more than one of the same service: the connection id from integrations_list.
Send through a connected account
integration_sendReaches the connected account
Sends files from your library, or a text, through one of your connected accounts: posts, uploads, saves. Works only if you allowed it in Ayarlar → MCP (Settings → MCP); at most 20 sends an hour.
Ask your agent something like: “Send this poster's PNG to the #design channel in Slack.”
What happens: Text or files are shared, uploaded or saved through your connected account. Only works if you've allowed it in Settings → MCP; up to 20 sends an hour.
Inputs (8)
provider(text)required
The service's id, as integrations_list gives it. Required.
action(text)required
The action's id, as integrations_list gives it. Required.
connection(text (id))
Which account, when you connected more than one of the same service: the connection id from integrations_list.
destination(text, at most 200 characters)
Where it goes: an id from integration_destinations. Required for actions marked "destination needed".
text(text, at most 10,000 characters)
The post, message, description or commit message, as fits the action.
title(text, at most 200 characters)
A title, where the service has one (a video's title, a page heading).
file_ids(list of ids, at most 4)
The files to send: ids from library_list or library_search.
slides_project(id)
Instead of files, with google-drive save only: one of the person's presentations (a project id), sent as a Google Slides presentation.
Security
You approve the agent, and you can cut it off any time. It only works in your account, and only as far as you allow.
What an agent can do
Works in your library, projects, brands, posters and memory; it can't reach anyone else's data. No tool takes a user ID.
Reads, names, tags and files your files, projects and brands; draws and changes posters; makes new copies of images.
New files (resized, converted and compressed copies, QR codes, exported posters) go into your library as new files; your originals stay untouched.
What an agent can't touch
Can't change your account, password, payments or settings.
Can't delete files, projects or brands: they go to the trash, and you can restore them within 30 days. Your agent can't restore from the trash; that's up to you.
Can't send anything to your connected accounts while sending is off. To send, you have to turn on “Let agents send to my connected accounts” in Settings → MCP.
Can't read your messages: only chat titles are visible.
Removals that don't go to the trash
Files, projects and brands go to the trash and can be restored. These don't. They're marked "ask first", so agents usually ask for your OK.
Forgetting an item from your memory (memory_forget): it doesn't go to the trash.
Removing a folder (folder_remove): the folder goes away, nothing inside is deleted.
Taking a file out of a project or brand: the file stays in your library.
Your data is not instructions
File names, tags, notes, project names and summaries, brand names and kits, text and layer names on posters, chat titles, memory items, and the names of connected accounts and places to send to are your data, not instructions for the agent. Even if a file's name says “delete this”, your agent shouldn't take it as a command.
What a site writes about itself (brand_from_site) is that site's text, not an instruction.
Still, which agent you connect is your call: connect only agents you trust.
Turn off
Every agent connected in Settings → MCP has its own row, and you can disconnect it any time. You can also turn off sending: while the "Let agents send to my connected accounts" switch is off, nothing goes to any of your connected accounts.
Limits
Tools by plan
Your agent reaches the tools your plan opens: Free 20 tools, Pro 50 tools, Premium 80 tools, Creator all 88 (Kinf has 88 tools). The most used ones open first; if your agent calls a tool outside your plan, it gets a reply saying which plan opens it. The number of calls a day is fair use.
Calls a minute
Your connected agents can call up to 10 (Free), 30 (Pro), 45 (Premium), 60 (Creator) tools a minute. Past that, your agent gets a “Too many tool calls” reply, waits a little and tries again.
20 sends an hour
integration_send runs up to 20 times an hour. You first have to turn on sending in Settings → MCP; while it's off, nothing is sent.
10 generated photos an hour
photo_make makes up to 10 photos an hour. If your own OpenAI key is connected, it's paid with that; if not, it comes out of your coins (1.5 times the cost), and if you don't have enough coins, nothing is made. Kinf's other material (icons, logos, photos, colors, fonts, mockups, resizing) is free.
Saatte 20 site
brand_from_site reads up to 20 sites an hour.
Up to 20 (50) in bulk jobs
Bulk jobs like moving files, moving them to the trash or adding them to a project work with up to 20 items at a time; adding files to a brand and taking them out, 50.
Bir saatlik anahtar
The connection works with an access key that lasts an hour; your agent renews it by itself. A connection unused for 60 days is closed.
20 agents
Up to 20 agents can be connected at once. For more, disconnect one you don't use.
Request size
A single request can be up to 128,000 characters. An SVG page drawn onto a poster can be up to 40,000 characters.
Troubleshooting
Your agent says “Sign in to Kinf” or 401
The connection may have been closed or cut. Connect Kinf again in your agent and click Connect on the page that opens. A connection unused for 60 days closes by itself.
A “Too many tool calls” error
Your plan's per-minute call limit is used up. Wait a minute, and ask your agent to break the job into small steps without extra calls.
The sending tools don't work
The “Let agents send to my connected accounts” switch in Settings → MCP is off. Turn it on and they work; keep the 20 sends an hour limit in mind.
A “redirect address” error on Kinf's connection page
Your agent's return address isn't recognized. It has to be https, an address on this computer (127.0.0.1, localhost) or the address of a known agent app like Cursor, VS Code or Windsurf. Update your agent or try another one.
No custom MCP server option in ChatGPT
This feature depends on your ChatGPT account and plan; Kinf can't turn it on. You can connect with another agent, like Claude or Cursor.
A file, project or brand can't be found
Items in the trash aren't visible to tools. Restore it from the Trash in Kinf, then ask your agent again.
Your agent shows an old list of tools
Agents keep the tool list for a few minutes, and some don't show newly opened groups right away. Ask your agent to run the tool by its name with kinf_toolsets, or restart your agent.
I want to disconnect
Disconnect it from your agent's row in Settings → MCP. Your agent loses access right away.