Skip to content

Instadram

by instadram.me · remote · no sign-in to list tools · v1.0.0 · published by me.instadram

Whisky & bourbon collection in AI: search the catalog, read and manage your shelf (OAuth).

Deletes · 6Final · 1Changes · 23

48 tools: 6 can delete or cancel things, 1 do something that can't be undone, 23 change things and 18 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http instadram https://api.instadram.me/mcp

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "lookup_bottle" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "lookup_bottle" says "lookup": a word for reading.

    What this check looks for
  • The server marks "log_pour" as not read-only (readOnlyHint: false), and its words say it reads.

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "log_pour" says "log": a word for reading.

    What this check looks for
  • The server marks "remove_from_collection" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

    Matched text

    annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_from_collection" says "remove": a word for removing or ending something.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

48 tools

Deletes or cancels 6Claude Code: deny
  • delete_collectionDelete one of your collections.No findings

    Why it is in this group

    • The name "delete_collection" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete one of your collections. Its bottles stay on your shelf. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • delete_my_activityDelete one of your own feed posts (id from list_my_activity).No findings

    Why it is in this group

    • The name "delete_my_activity" says "delete": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete one of your own feed posts (id from list_my_activity). The bottle stays on your shelf. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • remove_bottlePermanently delete one of your bottles.No findings

    Why it is in this group

    • The name "remove_bottle" says "remove": a word for removing or ending something.
    • The description says "Permanently delete".
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Permanently delete one of your bottles. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • remove_from_collectionTake one of your bottles out of one of your collections (the bottle stays on your shelf).1 finding

    Why it is in this group

    • The name "remove_from_collection" says "remove": a word for removing or ending something.
    • The server marks it not destructive (destructiveHint: false), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "remove_from_collection" not destructive (destructiveHint: false), and its own name, description or input give the class "destructive".

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "remove_from_collection" says "remove": a word for removing or ending something.

      What this check looks for
    Description, as the server wrote it
    Take one of your bottles out of one of your collections (the bottle stays on your shelf). Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • unblock_all_usersUnblock every user you've blocked (same as Profile → Unblock All Users).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
    Unblock every user you've blocked (same as Profile → Unblock All Users). Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
  • wishlist_removeDelete a bottle from your wishlist.No findings

    Why it is in this group

    • The name "wishlist_remove" says "remove": a word for removing or ending something.
    • The server marks it destructive (destructiveHint: true).
    Description, as the server wrote it
    Delete a bottle from your wishlist. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: true
    • idempotentHint: true
    • openWorldHint: false
Can't be undone 1Claude Code: ask
  • send_feedbackSend a bug report, feature idea or other feedback to the Instadram team as you (same as Profile → Send Feedback).No findings

    Why it is in this group

    • The name "send_feedback" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Send a bug report, feature idea or other feedback to the Instadram team as you (same as Profile → Send Feedback). 10–5000 characters. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Changes things 23Claude Code: ask
  • add_bottleAdd a bottle to your shelf, wishlist or Tried list (same as the app's Add Bottle form).No findings

    Why it is in this group

    • The name "add_bottle" says "add": a word for a change.
    Description, as the server wrote it
    Add a bottle to your shelf, wishlist or Tried list (same as the app's Add Bottle form). Free accounts can hold 25 unopened/opened bottles; Pro is unlimited. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • add_bottle_from_photoAdd a bottle from a photo, like Add Bottle → photo in the app: the preview identifies it; after the user agrees, AI art is made from the photo (1K) and the bottle is added with it.No findings

    Why it is in this group

    • The name "add_bottle_from_photo" says "add": a word for a change.
    Description, as the server wrote it
    Add a bottle from a photo, like Add Bottle → photo in the app: the preview identifies it; after the user agrees, AI art is made from the photo (1K) and the bottle is added with it. Free: 5 AI art a day; Pro: unlimited. Two steps: repeat with confirm_token after the user agrees.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • add_to_collectionAdd one of your bottles to one of your collections.No findings

    Why it is in this group

    • The name "add_to_collection" says "add": a word for a change.
    Description, as the server wrote it
    Add one of your bottles to one of your collections. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • block_userBlock someone: hides their posts and profile from your feed, Explore and Discover (doesn't unfollow, like the app).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.
    Description, as the server wrote it
    Block someone: hides their posts and profile from your feed, Explore and Discover (doesn't unfollow, like the app). Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • check_usernameCheck whether an @handle is valid and free before set_username (same rules and messages as Edit Profile).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 an @handle is valid and free before set_username (same rules and messages as Edit Profile).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • create_collectionCreate one of your collections.No findings

    Why it is in this group

    • The name "create_collection" says "create": a word for a change.
    Description, as the server wrote it
    Create one of your collections. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • discover_usersDiscover people like the app's People list: everyone (empty query) or a name/handle match, ranked like the app, with badge and whether you follow them.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
    Discover people like the app's People list: everyone (empty query) or a name/handle match, ranked like the app, with badge and whether you follow them. Use follow_user to follow.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • explore_catalogThe Explore tab's bottle deck: recent public shelf bottles with photos from other collectors, one per expression, blocked and hidden accounts removed.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
    The Explore tab's bottle deck: recent public shelf bottles with photos from other collectors, one per expression, blocked and hidden accounts removed.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • explore_recipesThe Explore recipe feed: every drink, ordered by how few bottles you'd need to buy from your own shelf, then popularity.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
    The Explore recipe feed: every drink, ordered by how few bottles you'd need to buy from your own shelf, then popularity. Paged with nextCursor.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • export_shelfExport your whole collection as CSV (Pro, like Profile → Export Collection): the same columns and values as the app's file.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
    Export your whole collection as CSV (Pro, like Profile → Export Collection): the same columns and values as the app's file. Returns filename and csv text.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • follow_userFollow someone (username or userId from search_users).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.
    Description, as the server wrote it
    Follow someone (username or userId from search_users). Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • log_pourLog that you're drinking one of your bottles (posts to your followers' feed, like the app's Pour).1 finding

    Why it is in this group

    • The name "log_pour" says "log": a word for reading.
    • The server marks it as not read-only (readOnlyHint: false).

    Findings

    • Warn

      The server marks "log_pour" as not read-only (readOnlyHint: false), and its words say it reads.

      Matched text

      annotations: {"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "log_pour" says "log": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Log that you're drinking one of your bottles (posts to your followers' feed, like the app's Pour). Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • lookup_bottleAdd-bottle AI identify (analyzeBourbonImage).1 finding

    Why it is in this group

    • The name "lookup_bottle" says "lookup": a word for reading.
    • The description's first verb is "add": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "lookup_bottle" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The name "lookup_bottle" says "lookup": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Add-bottle AI identify (analyzeBourbonImage). Photo (imageData) or text (query). Returns distillery, location, spirit.brand + expressions (name, proof, msrp, tasting_notes, etc.), success, confidence. Does not write a bottle or set expressionRef. Never generates art (transformImage is not used).

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • rate_bottleRate one of your bottles 0-5 in steps of 0.25 (0 clears).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.
    Description, as the server wrote it
    Rate one of your bottles 0-5 in steps of 0.25 (0 clears). Posts a 'rated' update like the app. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • regenerate_artMake new AI art for one of your bottles from its stored photo (or a new photo), like Think harder → Only regenerate the art.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.
    Description, as the server wrote it
    Make new AI art for one of your bottles from its stored photo (or a new photo), like Think harder → Only regenerate the art. Uses 1 AI art credit (free 5/day, Pro unlimited). Two steps.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • reidentify_bottleThink harder about one of your bottles: identify it again from its photo and research fresh reviews.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.
    Description, as the server wrote it
    Think harder about one of your bottles: identify it again from its photo and research fresh reviews. Reviews are saved when found; pass update_identity to also replace the name, distillery and proof. Two steps.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: true
  • rename_collectionRename one of your collections (and optionally change its description).No findings

    Why it is in this group

    • The name "rename_collection" says "rename": a word for a change.
    Description, as the server wrote it
    Rename one of your collections (and optionally change its description). Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • set_bottle_statusMove a bottle between unopened, opened, finished, wishlist and tried.No findings

    Why it is in this group

    • The name "set_bottle_status" says "set": a word for a change.
    Description, as the server wrote it
    Move a bottle between unopened, opened, finished, wishlist and tried. Moving into unopened/opened re-checks the free 25-bottle limit. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • set_usernameChange your @handle (3–20 characters: lowercase letters, numbers, underscore).No findings

    Why it is in this group

    • The name "set_username" says "set": a word for a change.
    Description, as the server wrote it
    Change your @handle (3–20 characters: lowercase letters, numbers, underscore). Your old handle is released. Use check_username first. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • unfollow_userStop following someone.No findings

    Why it is in this group

    • The description's first verb is "stop": a word for a change.
    Description, as the server wrote it
    Stop following someone. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_bottleEdit your bottle: notes, price, store, custom name/distillery/proof, batch, barrel details, favorite.No findings

    Why it is in this group

    • The name "update_bottle" says "update": a word for a change.
    Description, as the server wrote it
    Edit your bottle: notes, price, store, custom name/distillery/proof, batch, barrel details, favorite. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • update_profileEdit your profile like Edit Profile in the app: displayName, bio, location, website, instagram, twitter, facebook, tiktok.No findings

    Why it is in this group

    • The name "update_profile" says "update": a word for a change.
    Description, as the server wrote it
    Edit your profile like Edit Profile in the app: displayName, bio, location, website, instagram, twitter, facebook, tiktok. Only fields you pass change; an empty string clears an optional field. Photos and handle aren't changed here (see set_username). Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
  • wishlist_addPut a bottle on your wishlist: a new one (expression_path or name), or move an existing bottle_id there.No findings

    Why it is in this group

    • The name "wishlist_add" says "add": a word for a change.
    Description, as the server wrote it
    Put a bottle on your wishlist: a new one (expression_path or name), or move an existing bottle_id there. Two steps: the first call only previews and returns confirm_token; show the preview to the user and repeat the call with confirm_token only after they agree.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: true
    • openWorldHint: false
Only reads 18Claude Code: allow
  • fetch_bottle_reviewsAI community-review research for a bottle (fetchBottleReviews).No findings

    Why it is in this group

    • The name "fetch_bottle_reviews" says "fetch": a word for reading.
    Description, as the server wrote it
    AI community-review research for a bottle (fetchBottleReviews). Not a user tasting-note form. iOS may have this flagged off; the tool still works. Pass bottleName, or bottleId (own collection), or username/userId + bottleId to resolve the display name then research. Returns reviews_found, msrp, general_consensus, summary, overall_rating, reviewers. Read/research only — does not write Firestore.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_expressionGet one public catalog expression by id, or by path distilleries/{id}/brands/{id}/expressions/{id}.No findings

    Why it is in this group

    • The name "get_expression" says "get": a word for reading.
    Description, as the server wrote it
    Get one public catalog expression by id, or by path distilleries/{id}/brands/{id}/expressions/{id}.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_feedThe Home feed as the app shows it: recent pours, adds and ratings from everyone (scope global, the app default) or only people you follow plus you (scope following).No findings

    Why it is in this group

    • The name "get_feed" says "get": a word for reading.
    Description, as the server wrote it
    The Home feed as the app shows it: recent pours, adds and ratings from everyone (scope global, the app default) or only people you follow plus you (scope following). Blocked and hidden accounts are removed.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_my_bottleGet one bottle from the signed-in user's collection by id.No findings

    Why it is in this group

    • The name "get_my_bottle" says "get": a word for reading.
    Description, as the server wrote it
    Get one bottle from the signed-in user's collection by id. 404 if missing or not theirs.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_shelf_valueValue of the signed-in user's active shelf (opened + unopened) in USD, the same number as the app's Stats.No findings

    Why it is in this group

    • The name "get_shelf_value" says "get": a word for reading.
    Description, as the server wrote it
    Value of the signed-in user's active shelf (opened + unopened) in USD, the same number as the app's Stats. paid: purchase price, or MSRP when no price was entered (msrpCount says how many used MSRP). msrp: every bottle at MSRP. excludedCount bottles have no usable price. totalCents is exact; total is dollars. Always scoped to the token uid.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_userGet one public profile by username or userId.No findings

    Why it is in this group

    • The name "get_user" says "get": a word for reading.
    Description, as the server wrote it
    Get one public profile by username or userId. Resolves handles via usernames/{handle}. Public fields only — no email, stripeCustomerId, or billing.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • get_user_bottleGet one bottle from another user's public collection.No findings

    Why it is in this group

    • The name "get_user_bottle" says "get": a word for reading.
    Description, as the server wrote it
    Get one bottle from another user's public collection. Requires username or userId plus bottleId. 404 if the user or bottle is missing.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_my_activityList the signed-in user's own pours/activity.No findings

    Why it is in this group

    • The name "list_my_activity" says "list": a word for reading.
    Description, as the server wrote it
    List the signed-in user's own pours/activity. Never returns other users' activity.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_my_bottlesList bottles in the signed-in user's collection.No findings

    Why it is in this group

    • The name "list_my_bottles" says "list": a word for reading.
    Description, as the server wrote it
    List bottles in the signed-in user's collection. Filters: status (unopened|opened|consumed|excluded|wishlist|active|tried) and optional text query. Always scoped to the token uid — a userId argument is ignored.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_my_collectionsList the signed-in user's shelf groups / collections.No findings

    Why it is in this group

    • The name "list_my_collections" says "list": a word for reading.
    Description, as the server wrote it
    List the signed-in user's shelf groups / collections.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_user_activityList another user's pours/activity (authenticated feed read).No findings

    Why it is in this group

    • The name "list_user_activity" says "list": a word for reading.
    Description, as the server wrote it
    List another user's pours/activity (authenticated feed read). Requires username or userId. Newest first. Same paging caps as list_my_activity.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_user_bottlesList bottles on another user's public shelf.No findings

    Why it is in this group

    • The name "list_user_bottles" says "list": a word for reading.
    Description, as the server wrote it
    List bottles on another user's public shelf. Requires username or userId. Same status/query/paging as list_my_bottles. 404 if the user is missing; empty list if they have no bottles.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • list_user_collectionsList another user's public shelf groups.No findings

    Why it is in this group

    • The name "list_user_collections" says "list": a word for reading.
    Description, as the server wrote it
    List another user's public shelf groups. Requires username or userId.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • search_catalogSearch the public bottle catalog (expressions and distilleries).No findings

    Why it is in this group

    • The name "search_catalog" says "search": a word for reading.
    Description, as the server wrote it
    Search the public bottle catalog (expressions and distilleries). Does not return other users' collections.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • search_cocktailsCocktails to make with a bottle, like the app's recipe rail on a bottle page.No findings

    Why it is in this group

    • The name "search_cocktails" says "search": a word for reading.
    Description, as the server wrote it
    Cocktails to make with a bottle, like the app's recipe rail on a bottle page. Pass the bottle's name (plus spiritType, category, proof when known). Results note how many of the main liquors you already own. For browsing all drinks use explore_recipes.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: true
  • search_public_bottlesSearch bottles like the app's Search tab: other collectors' shelf bottles (with owner username and display name) plus public catalog bottles, ranked like the app.No findings

    Why it is in this group

    • The name "search_public_bottles" says "search": a word for reading.
    Description, as the server wrote it
    Search bottles like the app's Search tab: other collectors' shelf bottles (with owner username and display name) plus public catalog bottles, ranked like the app. Paged with nextCursor/hasMore/total.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • search_usersSearch public Instadram profiles by exact username (usernames/{handle} or users.username) then displayName prefix.No findings

    Why it is in this group

    • The name "search_users" says "search": a word for reading.
    Description, as the server wrote it
    Search public Instadram profiles by exact username (usernames/{handle} or users.username) then displayName prefix. Returns uid, username, displayName, photoURL. Never email or billing fields.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • openWorldHint: false
  • whoamiReturn the signed-in user's public profile (uid, username, display name) plus pro (paid or gifted Instadram Pro).No findings

    Why it is in this group

    • The name "whoami" says "whoami": a word for reading.
    Description, as the server wrote it
    Return the signed-in user's public profile (uid, username, display name) plus pro (paid or gifted Instadram Pro). Uses the Bearer token uid only. Available to free users.

    Annotations the server declares

    • readOnlyHint: true
    • destructiveHint: false
    • 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 instadram https://api.instadram.me/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__instadram__whoami",
      "mcp__instadram__list_my_bottles",
      "mcp__instadram__get_my_bottle",
      "mcp__instadram__get_shelf_value",
      "mcp__instadram__search_catalog",
      "mcp__instadram__get_expression",
      "mcp__instadram__list_my_activity",
      "mcp__instadram__list_my_collections",
      "mcp__instadram__search_users",
      "mcp__instadram__get_user",
      "mcp__instadram__list_user_bottles",
      "mcp__instadram__get_user_bottle",
      "mcp__instadram__list_user_activity",
      "mcp__instadram__list_user_collections",
      "mcp__instadram__fetch_bottle_reviews",
      "mcp__instadram__get_feed",
      "mcp__instadram__search_cocktails",
      "mcp__instadram__search_public_bottles"
    ],
    "ask": [
      "mcp__instadram__lookup_bottle",
      "mcp__instadram__explore_catalog",
      "mcp__instadram__discover_users",
      "mcp__instadram__explore_recipes",
      "mcp__instadram__check_username",
      "mcp__instadram__export_shelf",
      "mcp__instadram__add_bottle_from_photo",
      "mcp__instadram__regenerate_art",
      "mcp__instadram__reidentify_bottle",
      "mcp__instadram__add_bottle",
      "mcp__instadram__update_bottle",
      "mcp__instadram__set_bottle_status",
      "mcp__instadram__rate_bottle",
      "mcp__instadram__wishlist_add",
      "mcp__instadram__log_pour",
      "mcp__instadram__create_collection",
      "mcp__instadram__rename_collection",
      "mcp__instadram__add_to_collection",
      "mcp__instadram__follow_user",
      "mcp__instadram__unfollow_user",
      "mcp__instadram__block_user",
      "mcp__instadram__update_profile",
      "mcp__instadram__set_username",
      "mcp__instadram__send_feedback"
    ],
    "deny": [
      "mcp__instadram__remove_bottle",
      "mcp__instadram__wishlist_remove",
      "mcp__instadram__delete_collection",
      "mcp__instadram__remove_from_collection",
      "mcp__instadram__delete_my_activity",
      "mcp__instadram__unblock_all_users"
    ]
  }
}

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 instadram. Review it before you use it.