Piku

Find creators and read their Rate Cards. Creators draft quotes and invoices on their Piku account.

我該用這個嗎

品質與安全性

A
說明品質
100%
結構描述完整度
85%
命名品質
98%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~3,926Token(工具定義)
~2.2 KB典型回應大小
顯著的注意力影響(128k 上下文的 3.07%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "piku": {
      "url": "https://usepiku.com/mcp"
    }
  }
}

遠端端點

https://usepiku.com/mcpstreamable-http

它能做什麼

工具清單

工具(13)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟢search_creators(niche, location, platform, max_from_price, cursor)

Find creators with a live Piku page by niche words (matched against the niches they chose, then their bio and Rates), location (their city and country, then their bio), platform and starting price. Prices are starting prices in the creator's currency; max_from_price is compared after converting currencies. Creators who share prices on request are left out when max_from_price is set. Results are paged: pass next_cursor back as cursor.

輸入結構描述

{
  "type": "object",
  "properties": {
    "niche": {
      "type": "string",
      "description": "Words like skincare, travel, code reviews",
      "maxLength": 60
    },
    "location": {
      "type": "string",
      "description": "A city, a country name or code, or both, like Accra, Ghana",
      "maxLength": 60
    },
    "platform": {
      "type": "string",
      "enum": [
        "instagram",
        "youtube",
        "tiktok",
        "other"
      ],
      "description": "Platform of the Rate"
    },
    "max_from_price": {
      "type": "object",
      "properties": {
        "amount": {
          "type": "number",
          "exclusiveMinimum": 0
        },
        "currency": {
          "type": "string",
          "pattern": "^[A-Za-z]{3}$"
        }
      },
      "required": [
        "amount",
        "currency"
      ],
      "additionalProperties": false
    },
    "cursor": {
      "type": "string"
    }
  },
  "additionalProperties": false
}
🟢get_rate_card(handle)

A creator's Rate Card and media kit: every Rate with its stable id, price as the creator shows it (visibility full, from_price or request_only), what it includes, and the self-reported audience.

輸入結構描述

{
  "type": "object",
  "properties": {
    "handle": {
      "type": "string",
      "description": "The creator's Piku handle, like nia"
    }
  },
  "required": [
    "handle"
  ],
  "additionalProperties": false
}
🔴submit_request(handle, rate_id, brand, brief)

Send a brand's request on one Rate of a creator. Piku emails the brand a confirm link; the request reaches the creator's Deals only after the brand confirms, within 48 hours. Needs the creator's handle, the Rate id, the brand's name and contact email, and a short brief, as the user gave them. Returns a request_id.

輸入結構描述

{
  "type": "object",
  "properties": {
    "handle": {
      "type": "string"
    },
    "rate_id": {
      "type": "string",
      "description": "The Rate's id from get_rate_card, like ig-reel"
    },
    "brand": {
      "type": "object",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 80
        },
        "email": {
          "type": "string",
          "format": "email",
          "maxLength": 160
        }
      },
      "required": [
        "name",
        "email"
      ],
      "additionalProperties": false
    },
    "brief": {
      "type": "string",
      "minLength": 10,
      "maxLength": 1200,
      "description": "What the brand needs, in a few lines"
    }
  },
  "required": [
    "handle",
    "rate_id",
    "brand",
    "brief"
  ],
  "additionalProperties": false
}
🟢get_deal(deal_id)

Where a request stands: awaiting_confirmation, expired, requested, quoted, accepted or declined. Pass the request_id from submit_request as deal_id. When quoted, the quote total, currency and the brand's approval link are included.

輸入結構描述

{
  "type": "object",
  "properties": {
    "deal_id": {
      "type": "string",
      "description": "The request_id from submit_request"
    }
  },
  "required": [
    "deal_id"
  ],
  "additionalProperties": false
}
🟢list_deals(client, stage, limit)

Creators only, on their own Piku account (asks them to connect). The connected creator's Deals, newest first, and their unsent Drafts. Each has its client, title, stage, amount and id. Filter by client name or stage.

輸入結構描述

{
  "type": "object",
  "properties": {
    "client": {
      "type": "string",
      "maxLength": 80,
      "description": "Part of the client's name"
    },
    "stage": {
      "type": "string",
      "enum": [
        "requested",
        "quoted",
        "accepted",
        "invoiced",
        "paid",
        "declined",
        "cancelled",
        "draft"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    }
  },
  "additionalProperties": false
}
🔴create_quote(client, title, currency, lines, options, ...)

Creators only, on their own Piku account (asks them to connect). Prepare a quote to one of the creator's clients as a Draft: Lines, up to three billing options (one_off, monthly, quarterly, annual), payment terms and split. client.email is where the link goes: without it (and send_by email or both) the tool answers needs_client_email. send_by self emails nothing. Nothing is sent and no number is used: a Draft goes to the client only through send_draft, after the creator has seen it and said yes. Returns the draft_id, every Line, each option's invoice total and a link to see it in Piku.

輸入結構描述

{
  "type": "object",
  "properties": {
    "client": {
      "type": "object",
      "description": "Who the quote or invoice is for",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 80
        },
        "email": {
          "type": "string",
          "format": "email",
          "maxLength": 160,
          "description": "Where the link goes (needed unless send_by is sms)"
        },
        "phone": {
          "type": "string",
          "maxLength": 24,
          "description": "For send_by sms or both"
        },
        "phone_country": {
          "type": "string",
          "pattern": "^[A-Za-z]{2}$",
          "description": "Two-letter country of the phone, like GH"
        }
      },
      "required": [
        "name"
      ],
      "additionalProperties": false
    },
    "title": {
      "type": "string",
      "maxLength": 120,
      "description": "What the quote is for"
    },
    "currency": {
      "type": "string",
      "enum": [
        "USD",
        "EUR",
        "GBP",
        "CAD",
        "AUD",
        "GHS",
        "NGN",
        "KES",
        "ZAR",
        "XOF",
        "INR",
        "BRL"
      ]
    },
    "lines": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "description": "The priced parts. The total is always their sum.",
      "items": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "maxLength": 120
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9999,
            "default": 1
          },
          "unit_price": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)?$",
            "description": "In major units, as a string, like \"241.62\""
          },
          "note": {
            "type": "string",
            "maxLength": 160,
            "description": "A short line under it"
          },
          "from": {
            "type": "boolean",
            "description": "A base price that may rise; changes no maths"
          }
        },
        "required": [
          "description",
          "unit_price"
        ],
        "additionalProperties": false
      }
    },
    "options": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "one_off",
          "monthly",
          "quarterly",
          "annual"
        ]
      },
      "minItems": 1,
      "maxItems": 3,
      "uniqueItems": true,
      "description": "Default one_off"
    },
    "lines_per": {
      "type": "string",
      "enum": [
        "month",
        "quarter"
      ],
      "description": "What each Line's price covers when an option repeats. Default quarter. Monthly needs month."
    },
    "due_days": {
      "type": "integer",
      "enum": [
        0,
        7,
        14,
        30
      ],
      "description": "Days after issue each invoice is due. Default 14."
    },
    "split": {
      "type": "string",
      "enum": [
        "in_full",
        "50_50",
        "30_70"
      ],
      "description": "How a one-off invoice is paid. Default in_full. For a deposit of your own, use deposit instead."
    },
    "deposit": {
      "type": "object",
      "description": "A custom deposit then the rest: a whole percent 1 to 99, or an amount",
      "properties": {
        "percent": {
          "type": "integer",
          "minimum": 1,
          "maximum": 99
        },
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$",
          "description": "In major units, as a string, like \"241.62\""
        }
      },
      "additionalProperties": false
    },
    "send_by": {
      "type": "string",
      "enum": [
        "email",
        "sms",
        "both",
        "self"
      ],
      "description": "How the client gets it once sent. Default email. self: nothing goes to the client; the creator downloads the PDF from Piku and sends it themselves, so no email is needed."
    }
  },
  "required": [
    "client",
    "title",
    "currency",
    "lines"
  ],
  "additionalProperties": false
}
🔴create_invoice(client, title, brief, currency, lines, ...)

Creators only, on their own Piku account (asks them to connect). Prepare an invoice to one of the creator's clients as a Draft, paid in full or split. client.email is where the link goes: without it (and send_by email or both) the tool answers needs_client_email. send_by self emails nothing. Nothing is sent and no number is used: a Draft goes to the client only through send_draft, after the creator has seen it and said yes. The invoice number is given only when it is sent.

輸入結構描述

{
  "type": "object",
  "properties": {
    "client": {
      "type": "object",
      "description": "Who the quote or invoice is for",
      "properties": {
        "name": {
          "type": "string",
          "maxLength": 80
        },
        "email": {
          "type": "string",
          "format": "email",
          "maxLength": 160,
          "description": "Where the link goes (needed unless send_by is sms)"
        },
        "phone": {
          "type": "string",
          "maxLength": 24,
          "description": "For send_by sms or both"
        },
        "phone_country": {
          "type": "string",
          "pattern": "^[A-Za-z]{2}$",
          "description": "Two-letter country of the phone, like GH"
        }
      },
      "required": [
        "name"
      ],
      "additionalProperties": false
    },
    "title": {
      "type": "string",
      "maxLength": 120
    },
    "brief": {
      "type": "string",
      "maxLength": 1200,
      "description": "Notes for the creator's own record"
    },
    "currency": {
      "type": "string",
      "enum": [
        "USD",
        "EUR",
        "GBP",
        "CAD",
        "AUD",
        "GHS",
        "NGN",
        "KES",
        "ZAR",
        "XOF",
        "INR",
        "BRL"
      ]
    },
    "lines": {
      "type": "array",
      "minItems": 1,
      "maxItems": 50,
      "description": "The priced parts. The total is always their sum.",
      "items": {
        "type": "object",
        "properties": {
          "description": {
            "type": "string",
            "maxLength": 120
          },
          "quantity": {
            "type": "integer",
            "minimum": 1,
            "maximum": 9999,
            "default": 1
          },
          "unit_price": {
            "type": "string",
            "pattern": "^[0-9]+(\\.[0-9]+)?$",
            "description": "In major units, as a string, like \"241.62\""
          },
          "note": {
            "type": "string",
            "maxLength": 160,
            "description": "A short line under it"
          },
          "from": {
            "type": "boolean",
            "description": "A base price that may rise; changes no maths"
          }
        },
        "required": [
          "description",
          "unit_price"
        ],
        "additionalProperties": false
      }
    },
    "split": {
      "type": "string",
      "enum": [
        "in_full",
        "50_50",
        "30_70"
      ],
      "description": "How a one-off invoice is paid. Default in_full. For a deposit of your own, use deposit instead."
    },
    "deposit": {
      "type": "object",
      "description": "A custom deposit then the rest: a whole percent 1 to 99, or an amount",
      "properties": {
        "percent": {
          "type": "integer",
          "minimum": 1,
          "maximum": 99
        },
        "amount": {
          "type": "string",
          "pattern": "^[0-9]+(\\.[0-9]+)?$",
          "description": "In major units, as a string, like \"241.62\""
        }
      },
      "additionalProperties": false
    },
    "send_by": {
      "type": "string",
      "enum": [
        "email",
        "sms",
        "both",
        "self"
      ],
      "description": "How the client gets it once sent. Default email. self: nothing goes to the client; the creator downloads the PDF from Piku and sends it themselves, so no email is needed."
    }
  },
  "required": [
    "client",
    "title",
    "currency",
    "lines"
  ],
  "additionalProperties": false
}
🟢list_invoices(client, status, limit)

Creators only, on their own Piku account (asks them to connect). The connected creator's invoices, newest first: number, client, amount, status (due, overdue, paid, void) and due date. Invoices the creator archived are left out; get_invoice still reads one by its number.

輸入結構描述

{
  "type": "object",
  "properties": {
    "client": {
      "type": "string",
      "maxLength": 80
    },
    "status": {
      "type": "string",
      "enum": [
        "due",
        "overdue",
        "paid",
        "void"
      ]
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "default": 20
    }
  },
  "additionalProperties": false
}
🟢get_invoice(invoice)

Creators only, on their own Piku account (asks them to connect). One invoice by its number, like INV-0042: its Lines, amount, status, due date, period, receipt and pay link.

輸入結構描述

{
  "type": "object",
  "properties": {
    "invoice": {
      "type": "string",
      "description": "The number, like INV-0042"
    }
  },
  "required": [
    "invoice"
  ],
  "additionalProperties": false
}
🔴send_draft(draft_id)

Creators only, on their own Piku account (asks them to connect). Send one Draft to its client: a quote goes out with its accept link; an invoice is numbered and goes out with its pay link (or, with send_by self, is marked sent for the creator to send). For use only after the creator has seen this Draft and said yes to sending it. Sending the same Draft again sends nothing.

輸入結構描述

{
  "type": "object",
  "properties": {
    "draft_id": {
      "type": "string",
      "description": "The draft_id create_quote or create_invoice returned"
    }
  },
  "required": [
    "draft_id"
  ],
  "additionalProperties": false
}
🟢get_page

Creators only, on their own Piku account (asks them to connect). The connected creator's public page as data: name, bio, the button look (colour, shape, alignment), the sections (tabs) in order, links and widgets with their ids, Rates in order, the choices the page builder offers, and any open Page draft.

輸入結構描述

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
🔴design_page(look, bio, titles, links_order, sections, ...)

Creators only, on their own Piku account (asks them to connect). Propose a design for the creator's page as a Page draft: any of the button look, bio, link titles, the order of links, widgets, sections and Rates, and new links or widgets from addresses the creator gave you. Every field is optional; give only what changes. Nothing on the live page changes: the creator previews the Page draft and applies it, or parts of it, in the page builder. A new design replaces the open one. Returns the draft_id, the changes by part (Look, Order, Text, New links) and a preview_url.

輸入結構描述

{
  "type": "object",
  "properties": {
    "look": {
      "type": "object",
      "description": "The page's buttons. Fonts and backgrounds are not available.",
      "properties": {
        "button_colour": {
          "type": "string",
          "pattern": "^#?([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$",
          "description": "Like #4A2073. get_page lists the named ones"
        },
        "button_shape": {
          "type": "string",
          "enum": [
            "rounded",
            "square",
            "pill"
          ]
        },
        "button_align": {
          "type": "string",
          "enum": [
            "left",
            "center"
          ],
          "description": "Where titles sit on the buttons"
        }
      },
      "additionalProperties": false
    },
    "bio": {
      "type": "string",
      "minLength": 1,
      "maxLength": 280,
      "description": "Plain text"
    },
    "titles": {
      "type": "array",
      "maxItems": 50,
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "maxLength": 60
          }
        },
        "required": [
          "id",
          "title"
        ],
        "additionalProperties": false
      },
      "description": "New titles for links or widgets, by id from get_page"
    },
    "links_order": {
      "type": "array",
      "maxItems": 200,
      "uniqueItems": true,
      "items": {
        "type": "string"
      },
      "description": "Link and widget ids in the new order; new:0 is the first item of add. Ones left out follow in their order."
    },
    "sections": {
      "type": "array",
      "minItems": 1,
      "maxItems": 3,
      "uniqueItems": true,
      "items": {
        "type": "string",
        "enum": [
          "links",
          "rates",
          "media-kit"
        ]
      },
      "description": "The tabs shown, in order. The first opens first."
    },
    "rates_order": {
      "type": "array",
      "maxItems": 200,
      "uniqueItems": true,
      "items": {
        "type": "string"
      },
      "description": "Rate ids in the new order. Ones left out follow."
    },
    "add": {
      "type": "array",
      "maxItems": 10,
      "description": "New links or widgets, only from addresses the creator gave you. Links must be https.",
      "items": {
        "type": "object",
        "properties": {
          "type": {
            "type": "string",
            "enum": [
              "link",
              "youtube",
              "tiktok",
              "instagram",
              "spotify",
              "apple-music",
              "whatsapp"
            ],
            "default": "link"
          },
          "title": {
            "type": "string",
            "maxLength": 60
          },
          "url": {
            "type": "string",
            "description": "For type link: an https address"
          },
          "value": {
            "type": "string",
            "description": "For a widget: its https link, or the WhatsApp number with country code"
          },
          "text": {
            "type": "string",
            "maxLength": 300,
            "description": "WhatsApp only: the first message"
          },
          "size": {
            "type": "string",
            "enum": [
              "compact",
              "full",
              "card"
            ]
          }
        },
        "additionalProperties": false
      }
    }
  },
  "additionalProperties": false
}
🟢list_page_drafts(limit)

Creators only, on their own Piku account (asks them to connect). The connected creator's recent Page drafts: status (draft, applied, discarded, replaced, expired), the parts applied, and the preview link.

輸入結構描述

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "default": 10
    }
  },
  "additionalProperties": false
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本13 個工具