Instadram
REMOTE · API.INSTADRAM.ME
Whisky & bourbon collection in AI: search the catalog, read and manage your shelf (OAuth).
Available components
Last scanned (18 hours ago)
Scores higher than 97% of remote servers
Reachable. Last reached 4 Nov 2026.
Category E-commerce
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security97
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability72
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 5351 tokens (~111/item across 48 items; 48 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management67
- Stability observed for 20 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage92
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 77% of tool parameters carry a description.Partial
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 6 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 49 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 63 to 67. That category is still filling its 30-day observation window: 19 days of observed history at the previous scan, 20 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 57 to 60. That category is still filling its 30-day observation window: 17 days of observed history at the previous scan, 18 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 50 to 53. That category is still filling its 30-day observation window: 15 days of observed history at the previous scan, 16 at this one. The score rises as the window fills, whether or not the server changes.
- 29 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 43 to 47. That category is still filling its 30-day observation window: 13 days of observed history at the previous scan, 14 at this one. The score rises as the window fills, whether or not the server changes.
- 27 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 25 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 30 to 33. That category is still filling its 30-day observation window: 9 days of observed history at the previous scan, 10 at this one. The score rises as the window fills, whether or not the server changes.
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 23 to 27. That category is still filling its 30-day observation window: 7 days of observed history at the previous scan, 8 at this one. The score rises as the window fills, whether or not the server changes.
- 20 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://api.instadram.me/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=api.instadram.me | CN=WR3,O=Google Trust Services,C=US | 14 Oct 2026 | 12 Jan 2027 | RSA 2048 | SHA256-RSA | 4faa6c921a877c420af8bf4c170ae682 |
| SANs: api.instadram.me | ||||||
| CN=WR3,O=Google Trust Services,C=US (CA) | CN=GTS Root R1,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | RSA 2048 | SHA256-RSA | 7ff005a91568d63abc22861684aa4b5a |
| CN=GTS Root R1,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 19 Jun 2020 | 28 Jan 2028 | RSA 4096 | SHA256-RSA | 77bd0d6cdb36f91aea210fc4f058d30d |
| CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 1 Sept 1998 | 28 Jan 2028 | RSA 2048 | SHA1-RSA | 40000000001154b5ac394 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of api.instadram.me. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| me. | present | 45352 | 8 | Verified |
| instadram.me. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer realm="Instadram", resource_metadata="https://api.instadram.me/.well-known/oauth-protected-resource"
Bearer realm="Instadram", resource_metadata="https://api.instadram.me/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=31556926 |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
Protected resource metadata
| Document | https://api.instadram.me/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://api.instadram.me/mcp |
| Authorisation server | https://api.instadram.me |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://api.instadram.me/mcp | Verified | 200 | |
| http (plaintext) | http://api.instadram.me/mcp | HTTPS enforced | 301 | https://api.instadram.me/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
add_bottle ~255
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_notes | string | – | Notes about this bottle (batch, gift, etc.) |
| collection_ids | array | – | Your collection ids (list_my_collections) |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| distillery | string | – | – |
| expression_path | string | – | Catalog path from search_catalog (preferred) |
| is_favorite | boolean | – | – |
| name | string | – | Bottle name when it isn't in the catalog |
| notes | string | – | Your tasting notes |
| proof | number | – | – |
| purchase_price | number | – | – |
| purchased_from | string | – | – |
| rating | number | – | – |
| status | string | – | unopened/opened count toward the free 25-bottle shelf; finished, wishlist and tried don't |
No output schema declared.
No examples provided.
add_bottle_from_photo ~205
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Omit first: you get a preview (and what it costs). Repeat with identical arguments plus this token after the user agrees. |
| distillery | string | – | – |
| imageData | string | yes | Base64 JPEG/PNG photo of the bottle (or a data: URL) |
| name | string | – | Override the identified name |
| proof | number | – | – |
| rating | number | – | – |
| status | string | – | – |
| style | string | – | Art style. Free: Elements. Pro: Elements, Dark, Blended, Heritage, Oak, Cheers. |
No output schema declared.
No examples provided.
add_to_collection ~112
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | Id from list_my_bottles |
| collection_id | string | yes | Id from list_my_collections |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
No output schema declared.
No examples provided.
block_user ~122
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| userId | string | – | User id |
| username | string | – | Instadram handle (with or without @) |
No output schema declared.
No examples provided.
check_username ~36
Check whether an @handle is valid and free before set_username (same rules and messages as Edit Profile).
| Name | Type | Req | Description |
|---|---|---|---|
| username | string | yes | – |
No output schema declared.
No examples provided.
create_collection ~91
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| description | string | – | – |
| name | string | yes | – |
No output schema declared.
No examples provided.
delete_collection ~98
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.
| Name | Type | Req | Description |
|---|---|---|---|
| collection_id | string | yes | Id from list_my_collections |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
No output schema declared.
No examples provided.
delete_my_activity ~106
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.
| Name | Type | Req | Description |
|---|---|---|---|
| activity_id | string | yes | Id from list_my_activity |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
No output schema declared.
No examples provided.
discover_users ~75
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | nextCursor from a previous page |
| limit | integer | – | – |
| query | string | – | – |
No output schema declared.
No examples provided.
explore_catalog ~42
The Explore tab's bottle deck: recent public shelf bottles with photos from other collectors, one per expression, blocked and hidden accounts removed.
| Name | Type | Req | Description |
|---|---|---|---|
| limit | integer | – | – |
No output schema declared.
No examples provided.
explore_recipes ~61
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | nextCursor from a previous page |
| pageSize | integer | – | – |
No output schema declared.
No examples provided.
export_shelf ~41
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
fetch_bottle_reviews ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottleId | string | – | Resolve display name from a collection doc, then research |
| bottleName | string | – | Bottle display name to research |
| userId | string | – | Firebase uid of the target user |
| username | string | – | Instadram handle (with or without @). Resolved via usernames/{handle}. |
No output schema declared.
No examples provided.
follow_user ~108
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| userId | string | – | User id |
| username | string | – | Instadram handle (with or without @) |
No output schema declared.
No examples provided.
get_expression ~49
Get one public catalog expression by id, or by path distilleries/{id}/brands/{id}/expressions/{id}.
| Name | Type | Req | Description |
|---|---|---|---|
| expressionId | string | yes | Expression document id or nested catalog path |
No output schema declared.
No examples provided.
get_feed ~86
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | nextCursor from a previous page |
| limit | integer | – | – |
| offset | integer | – | – |
| scope | string | – | – |
No output schema declared.
No examples provided.
get_my_bottle ~46
Get one bottle from the signed-in user's collection by id. 404 if missing or not theirs.
| Name | Type | Req | Description |
|---|---|---|---|
| bottleId | string | yes | Bottle document id in the caller's collection |
No output schema declared.
No examples provided.
get_shelf_value ~90
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
get_user ~77
Get one public profile by username or userId. Resolves handles via usernames/{handle}. Public fields only — no email, stripeCustomerId, or billing.
| Name | Type | Req | Description |
|---|---|---|---|
| userId | string | – | Firebase uid of the target user |
| username | string | – | Instadram handle (with or without @). Resolved via usernames/{handle}. |
No output schema declared.
No examples provided.
get_user_bottle ~91
Get one bottle from another user's public collection. Requires username or userId plus bottleId. 404 if the user or bottle is missing.
| Name | Type | Req | Description |
|---|---|---|---|
| bottleId | string | yes | Bottle document id in the target user's collection |
| userId | string | – | Firebase uid of the target user |
| username | string | – | Instadram handle (with or without @). Resolved via usernames/{handle}. |
No output schema declared.
No examples provided.
list_my_activity ~68
List the signed-in user's own pours/activity. Never returns other users' activity.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from a previous response (numeric offset) |
| limit | integer | – | Page size (max 50) |
| offset | integer | – | Number of items to skip |
No output schema declared.
No examples provided.
list_my_bottles ~138
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from a previous response (numeric offset) |
| limit | integer | – | Page size (max 50) |
| offset | integer | – | Number of items to skip |
| query | string | – | Filter by display name, distillery, or notes |
| status | string | – | Bottle status or shelf group (active / wishlist / tried) |
No output schema declared.
No examples provided.
list_my_collections ~63
List the signed-in user's shelf groups / collections.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from a previous response (numeric offset) |
| limit | integer | – | Page size (max 50) |
| offset | integer | – | Number of items to skip |
No output schema declared.
No examples provided.
list_user_activity ~117
List another user's pours/activity (authenticated feed read). Requires username or userId. Newest first. Same paging caps as list_my_activity.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from a previous response (numeric offset) |
| limit | integer | – | Page size (max 50) |
| offset | integer | – | Number of items to skip |
| userId | string | – | Firebase uid of the target user |
| username | string | – | Instadram handle (with or without @). Resolved via usernames/{handle}. |
No output schema declared.
No examples provided.
list_user_bottles ~168
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from a previous response (numeric offset) |
| limit | integer | – | Page size (max 50) |
| offset | integer | – | Number of items to skip |
| query | string | – | Filter by display name, distillery, or notes |
| status | string | – | Bottle status or shelf group (active / wishlist / tried) |
| userId | string | – | Firebase uid of the target user |
| username | string | – | Instadram handle (with or without @). Resolved via usernames/{handle}. |
No output schema declared.
No examples provided.
list_user_collections ~103
List another user's public shelf groups. Requires username or userId.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from a previous response (numeric offset) |
| limit | integer | – | Page size (max 50) |
| offset | integer | – | Number of items to skip |
| userId | string | – | Firebase uid of the target user |
| username | string | – | Instadram handle (with or without @). Resolved via usernames/{handle}. |
No output schema declared.
No examples provided.
log_pour ~109
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | Id from list_my_bottles |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
No output schema declared.
No examples provided.
lookup_bottle ~113
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).
| Name | Type | Req | Description |
|---|---|---|---|
| imageData | string | – | Base64 bottle photo, same as analyzeBourbonImage |
| query | string | – | Bottle name when no photo is available |
No output schema declared.
No examples provided.
rate_bottle ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | Id from list_my_bottles |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| rating | number | yes | – |
No output schema declared.
No examples provided.
regenerate_art ~146
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | – |
| confirm_token | string | – | Omit first: you get a preview (and what it costs). Repeat with identical arguments plus this token after the user agrees. |
| imageData | string | – | Base64 JPEG/PNG photo of the bottle (or a data: URL) |
| style | string | – | Art style. Free: Elements. Pro: Elements, Dark, Blended, Heritage, Oak, Cheers. |
No output schema declared.
No examples provided.
reidentify_bottle ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | – |
| confirm_token | string | – | Omit first: you get a preview (and what it costs). Repeat with identical arguments plus this token after the user agrees. |
| imageData | string | – | Base64 JPEG/PNG photo of the bottle (or a data: URL) |
| update_identity | boolean | – | – |
No output schema declared.
No examples provided.
remove_bottle ~95
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | Id from list_my_bottles |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
No output schema declared.
No examples provided.
remove_from_collection ~120
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | Id from list_my_bottles |
| collection_id | string | yes | Id from list_my_collections |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
No output schema declared.
No examples provided.
rename_collection ~111
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.
| Name | Type | Req | Description |
|---|---|---|---|
| collection_id | string | yes | Id from list_my_collections |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| description | string | – | – |
| name | string | yes | – |
No output schema declared.
No examples provided.
search_catalog ~79
Search the public bottle catalog (expressions and distilleries). Does not return other users' collections.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from a previous response (numeric offset) |
| limit | integer | – | Page size (max 50) |
| offset | integer | – | Number of items to skip |
| query | string | yes | – |
No output schema declared.
No examples provided.
search_cocktails ~113
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottleName | string | yes | Bottle display name |
| category | string | – | – |
| limit | integer | – | – |
| proof | number | – | – |
| spiritType | string | – | e.g. bourbon, gin |
No output schema declared.
No examples provided.
search_public_bottles ~88
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | nextCursor from a previous page |
| limit | integer | – | – |
| offset | integer | – | – |
| query | string | yes | – |
No output schema declared.
No examples provided.
search_users ~104
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.
| Name | Type | Req | Description |
|---|---|---|---|
| cursor | string | – | Opaque pagination cursor from a previous response (numeric offset) |
| limit | integer | – | Page size (max 50) |
| offset | integer | – | Number of items to skip |
| query | string | yes | Username or display-name prefix |
No output schema declared.
No examples provided.
send_feedback ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| kind | string | yes | – |
| message | string | yes | – |
No output schema declared.
No examples provided.
set_bottle_status ~144
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | Id from list_my_bottles |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| status | string | yes | unopened/opened count toward the free 25-bottle shelf; finished, wishlist and tried don't |
No output schema declared.
No examples provided.
set_username ~113
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| username | string | yes | New handle, with or without @ |
No output schema declared.
No examples provided.
unblock_all_users ~88
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
No output schema declared.
No examples provided.
unfollow_user ~102
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.
| Name | Type | Req | Description |
|---|---|---|---|
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| userId | string | – | User id |
| username | string | – | Instadram handle (with or without @) |
No output schema declared.
No examples provided.
update_bottle ~118
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | Id from list_my_bottles |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| fields | object | yes | – |
No output schema declared.
No examples provided.
update_profile ~222
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bio | string | – | Bio |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| displayName | string | – | Display name |
| string | – | facebook; empty string clears it | |
| string | – | instagram; empty string clears it | |
| location | string | – | location; empty string clears it |
| tiktok | string | – | tiktok; empty string clears it |
| string | – | twitter; empty string clears it | |
| website | string | – | website; empty string clears it |
No output schema declared.
No examples provided.
whoami ~47
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
wishlist_add ~148
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | – | Id from list_my_bottles |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
| distillery | string | – | – |
| expression_path | string | – | Catalog path from search_catalog (preferred) |
| name | string | – | Bottle name when it isn't in the catalog |
No output schema declared.
No examples provided.
wishlist_remove ~93
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.
| Name | Type | Req | Description |
|---|---|---|---|
| bottle_id | string | yes | Id from list_my_bottles |
| confirm_token | string | – | Omit on the first call to get a preview. After the user agrees, call again with identical arguments plus this token. |
No output schema declared.
No examples provided.
How do I install the Instadram MCP server?
Instadram is a hosted endpoint at https://api.instadram.me/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · api.instadram.me
claude mcp add --transport http me-instadram-instadram 'https://api.instadram.me/mcp'
What is the Instadram MCP server?
Instadram is an MCP server listed in the public MCP registry as me.instadram/instadram. Whisky & bourbon collection in AI: search the catalog, read and manage your shelf (OAuth). This page covers its hosted endpoint (https://api.instadram.me/mcp).
Is the Instadram MCP server safe to use?
Instadram scores 89 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Instadram MCP server expose?
Instadram exposes 48 tools: whoami, list_my_bottles, get_my_bottle, get_shelf_value, search_catalog, and 43 more. Their descriptions and schemas cost roughly 5,132 tokens of context every time the server is loaded.
Does the Instadram MCP server require authentication?
Yes. Instadram asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Instadram MCP server still maintained?
Instadram is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.