Kulhad
by kulhad.co · remote · no sign-in to list tools · v1.0.0 · published by co.kulhad
Run a UPI creator support page from chat: supporters, goals, page, share assets. No money moves.
44 tools: 18 can delete or cancel things, 1 do something that can't be undone, 8 change things and 17 only read.
Scanned Oct 21, 2026
- Deletes or cancels18Claude Code: deny: see these tools
- Can't be undone1Claude Code: ask: see these tools
- Changes things8Claude Code: ask: see these tools
- Only reads17Claude Code: allow: see these tools
No check matched anything in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http kulhad https://kulhad.co/mcpTools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
44 tools
Deletes or cancels 18Claude Code: deny
approve_supportApprove one supporter after the creator has found the payment in their own bank app.No findings
Why it is in this group
- The name "approve_support" says "approve": a word for a change.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Approve one supporter after the creator has found the payment in their own bank app. This cannot be undone. The supporter's name and amount then show on the creator's page and stream overlays and count toward totals and the active goal; if that fills the goal, the goal is marked complete and taken off the page. With hidden set, the message and any voice recording stay private while the name and amount still show. A thank-you reply (up to 280 characters, word-filtered) can be set at the same time and replaces any existing reply. Nothing is sent to the supporter. Only the creator can know whether the money arrived, so never approve without being asked to for that specific supporter.
Annotations the server declares
- title: Approve a supporter
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
bulk_approve_supportsApprove up to 100 waiting supporters at once after the creator has checked their bank.No findings
Why it is in this group
- The name "bulk_approve_supports" says "approve": a word for a change.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Approve up to 100 waiting supporters at once after the creator has checked their bank. Part of Premium. This cannot be undone. Ids that are not waiting (already settled, not yet marked as sent, missing, or not this creator's) are skipped and counted. Same effects as approve_support; no reply is set.
Annotations the server declares
- title: Approve several supporters
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
bulk_reject_supportsReject up to 100 waiting supporters at once.No findings
Why it is in this group
- The name "bulk_reject_supports" says "reject": a word for a change.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Reject up to 100 waiting supporters at once. Part of Premium. This cannot be undone and any voice recordings are deleted immediately, so confirm the list with the creator first. Ids that are not waiting are skipped and counted.
Annotations the server declares
- title: Reject several supporters
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
delete_goalDelete a goal that has no approved support.No findings
Why it is in this group
- The name "delete_goal" says "delete": a word for removing or ending something.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Delete a goal that has no approved support. This cannot be undone, and its cover image is deleted with it. Pending or rejected supports pinned to it lose the link. A goal with approved support stays in the history and can only be turned off.
Annotations the server declares
- title: Delete a goal
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
delete_goal_updateRemove one progress note from a goal by its position in the list, counting from zero with the newest first.No findings
Why it is in this group
- The name "delete_goal_update" says "delete": a word for removing or ending something.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Remove one progress note from a goal by its position in the list, counting from zero with the newest first. This cannot be undone.
Annotations the server declares
- title: Remove a progress note
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: false
- openWorldHint: false
reject_supportReject one supporter when the creator has checked their bank and the payment is not there.No findings
Why it is in this group
- The name "reject_support" says "reject": a word for a change.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Reject one supporter when the creator has checked their bank and the payment is not there. This cannot be undone. Any voice recording is deleted immediately; the record itself is cleared a week later. Nothing shows on the page and nothing is sent to the supporter.
Annotations the server declares
- title: Reject a supporter
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
remove_custom_domainDisconnect the custom domain, so the page is served from its kulhad.co address again.No findings
Why it is in this group
- The name "remove_custom_domain" says "remove": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Disconnect the custom domain, so the page is served from its kulhad.co address again. Anything printed with the old domain on it stops working, so confirm with the creator first.
Annotations the server declares
- title: Disconnect my domain
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
remove_upi_idRemove a UPI ID from the account.No findings
Why it is in this group
- The name "remove_upi_id" says "remove": a word for removing or ending something.
- The description says "cannot be undone".
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Remove a UPI ID from the account. The last one, and the only active one, cannot be removed. This cannot be undone, and past supports lose the link to it; switching it off instead keeps it.
Annotations the server declares
- title: Remove a UPI ID
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
reply_to_supporterWrite or replace the thank-you beside one supporter, up to 280 characters; links and flagged words are refused.No findings
Why it is in this group
- The name "reply_to_supporter" says "reply": a word for sending, and what is sent cannot be taken back.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Write or replace the thank-you beside one supporter, up to 280 characters; links and flagged words are refused. It shows on the creator's page once the supporter is approved, and on the supporter's own receipt link in any case. Replaces the previous reply with no history and cannot be blanked. Does not approve anyone and sends nothing.
Annotations the server declares
- title: Reply to a supporter
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
set_custom_domainRecord the domain the creator wants in front of their page and return the DNS record to add.No findings
Why it is in this group
- The name "set_custom_domain" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Record the domain the creator wants in front of their page and return the DNS record to add. Part of Premium. Replaces any domain already recorded, including a working one, which then stops serving until verify_custom_domain passes again, so confirm with the creator if a domain is already active. This does not touch DNS or make the domain work: the creator adds the record at their registrar, then verify_custom_domain checks it.
Annotations the server declares
- title: Connect my own domain
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
set_saved_repliesReplace the list of ready-made thank-you replies the creator picks from when approving a supporter.No findings
Why it is in this group
- The name "set_saved_replies" says "set": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Replace the list of ready-made thank-you replies the creator picks from when approving a supporter. Part of Premium. At most 7, each up to 280 characters; blank replies and any containing a link or a flagged word are dropped and counted. Passing an empty list removes all of them.
Annotations the server declares
- title: Set my saved replies
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
update_goalChange a goal's title, target, description, deadline or impact tiers.No findings
Why it is in this group
- The name "update_goal" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Change a goal's title, target, description, deadline or impact tiers. Only the fields you pass change, and each replaces the old value; impact replaces the whole list. Renaming changes the goal's web address, and the old address stops working with no redirect. Changing the target does not re-check whether the goal is complete.
Annotations the server declares
- title: Change a goal
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
update_page_appearanceChange the page theme and the announcement banner across the top of it.No findings
Why it is in this group
- The name "update_page_appearance" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Change the page theme and the announcement banner across the top of it. Page themes, a custom theme colour (shown only when the theme is "custom"), your own banner colour, hiding the Kulhad badge, and a Google Analytics measurement ID are Premium. The measurement ID is stored as a page setting; Kulhad itself does not contact Google. Each value passed replaces the current one. Writes to the creator's own Kulhad account only.
Annotations the server declares
- title: Change how my page looks
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
update_page_behaviourChange what the page does: whether new supporters go up without approval, whether people may give without a name, whether the supporter count and total show, the three suggested am…No findings
Why it is in this group
- The name "update_page_behaviour" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Change what the page does: whether new supporters go up without approval, whether people may give without a name, whether the supporter count and total show, the three suggested amounts and their labels, the headline on the pay card, the note supporters see after paying, when stream alerts fire, and whether voice messages are allowed (Premium). Passing amounts replaces all three. A label or headline that fails the word filter is blanked. Affects future supports only. Writes to the creator's own Kulhad account only.
Annotations the server declares
- title: Change how my page behaves
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
update_profileChange the creator's name, bio, page address, kind of page (person or organisation), page language, dashboard language, and the links on the page.No findings
Why it is in this group
- The name "update_profile" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Change the creator's name, bio, page address, kind of page (person or organisation), page language, dashboard language, and the links on the page. Only the fields you pass change. Links replace the whole list, so pass every link that should stay. The bio keeps bold, italic, links and line breaks and is cut at 280 characters. Changing the page address stops the old kulhad.co address working at once, with no redirect: printed QR codes, embeds and OBS overlay links break, and the old name is free for anyone to take. Not allowed while a custom domain is active. Writes to the creator's own Kulhad account only.
Annotations the server declares
- title: Change my page details
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
update_seoSet the title (up to 60 characters) and description (up to 160) in the page's HTML head, which search engines and link previews read.No findings
Why it is in this group
- The name "update_seo" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Set the title (up to 60 characters) and description (up to 160) in the page's HTML head, which search engines and link previews read. Part of Premium. A blank value goes back to the text Kulhad generates. This does not set an image and does not contact any search engine; it only changes what the page serves.
Annotations the server declares
- title: Change how my page appears in search
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
update_upi_idChange the address or label of a UPI ID, switch it on or off, or mark the one-rupee test done.No findings
Why it is in this group
- The name "update_upi_id" says "update": a word for a change.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Change the address or label of a UPI ID, switch it on or off, or mark the one-rupee test done. Changing the address clears the test, and from then on the new address is what supporters are quoted and what past supports display. At least one ID has to stay active. Switching off the default leaves the lowest active ID quoted.
Annotations the server declares
- title: Change a UPI ID
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
verify_custom_domainLook the domain up in public DNS and, if it points at Kulhad, switch the page to it; kulhad.co/<name> then redirects there.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it Look the domain up in public DNS and, if it points at Kulhad, switch the page to it; kulhad.co/<name> then redirects there. Part of Premium. Clears the same domain from any other account's unverified claim. Fails until the record has propagated, which is normal for the first few minutes.
Annotations the server declares
- title: Check my domain is pointing here
- destructiveHint: true
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: true
Can't be undone 1Claude Code: ask
send_test_alertFire a test alert so the creator can see where it lands in OBS while setting up.No findings
Why it is in this group
- The name "send_test_alert" says "send": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it Fire a test alert so the creator can see where it lands in OBS while setting up. It is not a real support: nothing is recorded, no goal moves and nobody is thanked. The overlay picks it up within about five seconds and it disappears after six.
Annotations the server declares
- title: Send a test alert to my stream overlay
- destructiveHint: false
- readOnlyHint: false
- idempotentHint: false
- openWorldHint: false
Changes things 8Claude Code: ask
add_upi_idAdd a UPI ID for supporters to pay into.No findings
Why it is in this group
- The name "add_upi_id" says "add": a word for a change.
Description, as the server wrote it Add a UPI ID for supporters to pay into. Kulhad cannot check that an address is real or that it belongs to the creator, so tell them to send one rupee to it themselves and confirm it arrived before sharing the page. Duplicates are not checked. The free plan keeps one ID active at a time.
Annotations the server declares
- title: Add a UPI ID
- destructiveHint: false
- readOnlyHint: false
- idempotentHint: false
- openWorldHint: false
check_username_availableCheck whether a Kulhad page name is free.No findings
Why it is in this group
- Nothing in its name or description says what it does, so it is counted as a write.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Description, as the server wrote it Check whether a Kulhad page name is free. A page name is the last part of the address, as in kulhad.co/priya. Use this before suggesting a name to somebody setting up a page.
Annotations the server declares
- title: Check a page name
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
create_goalCreate a goal with a title and a target in whole rupees.No findings
Why it is in this group
- The name "create_goal" says "create": a word for a change.
Description, as the server wrote it Create a goal with a title and a target in whole rupees. Unless active is false, it becomes the goal shown on the page and any other goal is put away, not deleted (set_active_goal brings one back). The free plan refuses while another goal is running, even with active false. Impact tiers are Premium. A goal that is neither active nor complete has no page of its own.
Annotations the server declares
- title: Create a goal
- destructiveHint: false
- readOnlyHint: false
- idempotentHint: false
- openWorldHint: false
post_goal_updateAdd a short note, up to 280 characters, under a goal saying what the money did.No findings
Why it is in this group
- The name "post_goal_update" says "post": a word for a change.
Description, as the server wrote it Add a short note, up to 280 characters, under a goal saying what the money did. Notes are kept newest first, at most 20 per goal, and show on the goal's page while the goal is active or complete. Free on every plan. Nobody is notified.
Annotations the server declares
- title: Post a progress note on a goal
- destructiveHint: false
- readOnlyHint: false
- idempotentHint: false
- openWorldHint: false
set_active_goalMake one goal the one shown on the page, or turn the current one off.No findings
Why it is in this group
- The name "set_active_goal" says "set": a word for a change.
Description, as the server wrote it Make one goal the one shown on the page, or turn the current one off. The page shows a single goal at a time, so choosing one puts the others away without deleting anything. Reversible.
Annotations the server declares
- title: Choose which goal the page shows
- destructiveHint: false
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
set_default_upi_idMake one active UPI ID the one supporters are shown first.No findings
Why it is in this group
- The name "set_default_upi_id" says "set": a word for a change.
Description, as the server wrote it Make one active UPI ID the one supporters are shown first. The others stay on the account. This does not switch an ID on: an inactive ID made default is never quoted.
Annotations the server declares
- title: Choose which UPI ID is quoted first
- destructiveHint: false
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
set_upi_rotationWhen on, active UPI IDs take turns being quoted so support spreads across them instead of landing in one account.No findings
Why it is in this group
- The name "set_upi_rotation" says "set": a word for a change.
Description, as the server wrote it When on, active UPI IDs take turns being quoted so support spreads across them instead of landing in one account. Part of Premium.
Annotations the server declares
- title: Turn taking turns on or off
- destructiveHint: false
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
start_signupGet a link that opens Kulhad sign-up with a page name already filled in.No findings
Why it is in this group
- The name "start_signup" says "start": a word for a change.
Description, as the server wrote it Get a link that opens Kulhad sign-up with a page name already filled in. Hand it to the person setting up the page; they finish it themselves in a browser. This does not create an account and cannot. It marks the name as taken for check_username_available for fifteen minutes; it does not stop anyone signing up with that name directly. Nothing is sent.
Annotations the server declares
- title: Start setting up a page
- destructiveHint: false
- readOnlyHint: false
- idempotentHint: true
- openWorldHint: false
Only reads 17Claude Code: allow
get_analyticsDaily page views, approved supports and amounts for up to the last ninety days, thirty by default, with the rate at which visitors go on to support.No findings
Why it is in this group
- The name "get_analytics" says "get": a word for reading.
Description, as the server wrote it Daily page views, approved supports and amounts for up to the last ninety days, thirty by default, with the rate at which visitors go on to support. Part of Premium. Comes from the nightly rollup, so today is not included and only days with activity are returned.
Annotations the server declares
- title: Read my page numbers
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_custom_domainRead whether a custom domain is connected to the page, and what DNS record it needs.No findings
Why it is in this group
- The name "get_custom_domain" says "get": a word for reading.
Description, as the server wrote it Read whether a custom domain is connected to the page, and what DNS record it needs. Part of Premium.
Annotations the server declares
- title: Read my custom domain
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_dashboard_summaryThe headline numbers from the creator dashboard: what came in this month against last, the all-time total, how many approved supports there have been, and how many are waiting to b…No findings
Why it is in this group
- The name "get_dashboard_summary" says "get": a word for reading.
Description, as the server wrote it The headline numbers from the creator dashboard: what came in this month against last, the all-time total, how many approved supports there have been, and how many are waiting to be approved.
Annotations the server declares
- title: Read my dashboard summary
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_embed_codeGet the HTML to put a support button, the pay card, or a live goal bar on the creator own website or blog.No findings
Why it is in this group
- The name "get_embed_code" says "get": a word for reading.
Description, as the server wrote it Get the HTML to put a support button, the pay card, or a live goal bar on the creator own website or blog. Returns the snippets to paste, not a rendered preview.
Annotations the server declares
- title: Get code to put Kulhad on my own website
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_goalRead one goal in full, including its impact tiers and its progress notes.No findings
Why it is in this group
- The name "get_goal" says "get": a word for reading.
Description, as the server wrote it Read one goal in full, including its impact tiers and its progress notes.
Annotations the server declares
- title: Read one goal
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_my_profileRead the page details for the signed-in creator: name, page address, bio, links, language, plan, and any custom domain recorded on the account with its status (pending, active or d…No findings
Why it is in this group
- The name "get_my_profile" says "get": a word for reading.
Description, as the server wrote it Read the page details for the signed-in creator: name, page address, bio, links, language, plan, and any custom domain recorded on the account with its status (pending, active or disabled).
Annotations the server declares
- title: Read my page details
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_page_settingsRead the current appearance and behaviour settings for the page: theme, banner, suggested amounts, what is shown publicly, and the thank-you note.No findings
Why it is in this group
- The name "get_page_settings" says "get": a word for reading.
Description, as the server wrote it Read the current appearance and behaviour settings for the page: theme, banner, suggested amounts, what is shown publicly, and the thank-you note.
Annotations the server declares
- title: Read how my page looks and behaves
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_plan_and_billingRead which plan the account is on, when Premium runs to, whether it is set to end, and the past charges with links to their invoices.No findings
Why it is in this group
- The name "get_plan_and_billing" says "get": a word for reading.
Description, as the server wrote it Read which plan the account is on, when Premium runs to, whether it is set to end, and the past charges with links to their invoices. Read-only: nothing here starts, changes or cancels a subscription.
Annotations the server declares
- title: Read my plan and billing history
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_stream_overlaysGet the three overlay addresses to add to OBS or any streaming software as a browser source: a goal bar, a wall of recent supporters, and an alert that appears when someone gives.No findings
Why it is in this group
- The name "get_stream_overlays" says "get": a word for reading.
Description, as the server wrote it Get the three overlay addresses to add to OBS or any streaming software as a browser source: a goal bar, a wall of recent supporters, and an alert that appears when someone gives. Includes the size each source should be and when alerts currently fire.
Annotations the server declares
- title: Get my stream overlay addresses for OBS
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_supportRead everything the creator can see about one supporter, by its id.No findings
Why it is in this group
- The name "get_support" says "get": a word for reading.
Description, as the server wrote it Read everything the creator can see about one supporter, by its id.
Annotations the server declares
- title: Read one supporter
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_support_sourcesBreak approved support down by where it came from: the page itself, an embedded button, a QR code, the printed counter card, or a link tagged for WhatsApp, Instagram, YouTube or a …No findings
Why it is in this group
- The name "get_support_sources" says "get": a word for reading.
Description, as the server wrote it Break approved support down by where it came from: the page itself, an embedded button, a QR code, the printed counter card, or a link tagged for WhatsApp, Instagram, YouTube or a standee. Use this to answer which channel is actually working.
Annotations the server declares
- title: Read where my supporters came from
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
get_wrappedKulhad Wrapped for a year: how many people supported, the total, page views, the busiest month, and the largest single support.No findings
Why it is in this group
- The name "get_wrapped" says "get": a word for reading.
Description, as the server wrote it Kulhad Wrapped for a year: how many people supported, the total, page views, the busiest month, and the largest single support. Free on every plan.
Annotations the server declares
- title: Read my year in review
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
list_goalsList every goal on the page, the active one first, with how much each has raised against its target.No findings
Why it is in this group
- The name "list_goals" says "list": a word for reading.
Description, as the server wrote it List every goal on the page, the active one first, with how much each has raised against its target.
Annotations the server declares
- title: List my goals
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
list_pending_supportsList the supporters who have marked a payment as sent and are waiting for the creator to approve them.No findings
Why it is in this group
- The name "list_pending_supports" says "list": a word for reading.
Description, as the server wrote it List the supporters who have marked a payment as sent and are waiting for the creator to approve them. Kulhad cannot see a bank account, so this is what people say they sent, not what has been received. The creator checks their own bank app for the amount and the four-character code, then approves.
Annotations the server declares
- title: List supporters waiting for approval
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
list_supportsList supporters, newest first, optionally narrowed by status or by date.No findings
Why it is in this group
- The name "list_supports" says "list": a word for reading.
Description, as the server wrote it List supporters, newest first, optionally narrowed by status or by date. Use this for history and for questions about a particular period; use list_pending_supports for the approval queue.
Annotations the server declares
- title: List my supporters
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
list_upi_idsList the UPI IDs on the account, which are the addresses supporters pay into.No findings
Why it is in this group
- The name "list_upi_ids" says "list": a word for reading.
Description, as the server wrote it List the UPI IDs on the account, which are the addresses supporters pay into. The free plan keeps one of them active at a time.
Annotations the server declares
- title: List my UPI IDs
- destructiveHint: false
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.0.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http kulhad https://kulhad.co/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__kulhad__get_my_profile",
"mcp__kulhad__get_page_settings",
"mcp__kulhad__get_dashboard_summary",
"mcp__kulhad__list_pending_supports",
"mcp__kulhad__list_supports",
"mcp__kulhad__get_support",
"mcp__kulhad__list_goals",
"mcp__kulhad__get_goal",
"mcp__kulhad__list_upi_ids",
"mcp__kulhad__get_share_assets",
"mcp__kulhad__get_embed_code",
"mcp__kulhad__get_stream_overlays",
"mcp__kulhad__get_analytics",
"mcp__kulhad__get_wrapped",
"mcp__kulhad__get_support_sources",
"mcp__kulhad__get_plan_and_billing",
"mcp__kulhad__get_custom_domain"
],
"ask": [
"mcp__kulhad__check_username_available",
"mcp__kulhad__start_signup",
"mcp__kulhad__create_goal",
"mcp__kulhad__set_active_goal",
"mcp__kulhad__post_goal_update",
"mcp__kulhad__add_upi_id",
"mcp__kulhad__set_default_upi_id",
"mcp__kulhad__set_upi_rotation",
"mcp__kulhad__send_test_alert"
],
"deny": [
"mcp__kulhad__update_profile",
"mcp__kulhad__update_page_appearance",
"mcp__kulhad__update_page_behaviour",
"mcp__kulhad__update_seo",
"mcp__kulhad__set_saved_replies",
"mcp__kulhad__approve_support",
"mcp__kulhad__reject_support",
"mcp__kulhad__reply_to_supporter",
"mcp__kulhad__bulk_approve_supports",
"mcp__kulhad__bulk_reject_supports",
"mcp__kulhad__update_goal",
"mcp__kulhad__delete_goal",
"mcp__kulhad__delete_goal_update",
"mcp__kulhad__update_upi_id",
"mcp__kulhad__remove_upi_id",
"mcp__kulhad__set_custom_domain",
"mcp__kulhad__verify_custom_domain",
"mcp__kulhad__remove_custom_domain"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as kulhad. Review it before you use it.