Tattoo Feed
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| IG_USER_ID | No | The Instagram Business/Creator account id that owns the token. | |
| NGROK_DOMAIN | No | Optional. Stable ngrok domain for persistent URL. | |
| IG_ACCESS_TOKEN | No | A long-lived Instagram Graph API access token. | |
| MCP_AUTH_ISSUER | No | Issuer URL of your IdP — must exactly match the iss claim. | |
| NGROK_AUTHTOKEN | No | ngrok auth token for TLS ingress. | |
| MCP_AUTH_AUDIENCE | No | Canonical public URL of this server — the RFC 8707 audience binding. | |
| MCP_AUTH_JWKS_URL | No | JWKS endpoint used to verify JWT signatures. | |
| TATTOO_FEED_DATA_DIR | No | Optional. Where the JSON stores live (default ./data). | |
| MCP_AUTH_REQUIRED_SCOPES | No | Comma-separated required scopes (e.g. mcp:read). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_artistsA | List the tattoo artists currently being tracked. |
| add_artistA | Track a new artist by Instagram handle. The handle must resolve to a reachable professional (Business/Creator) account; otherwise a clear error is returned. |
| remove_artistB | Stop tracking the artist with the given handle. |
| get_feedA | Return recent posts from all tracked artists, newest first. Returns metadata and permalinks only (no images) to keep context light. |
| next_inspirationA | Show one not-yet-seen post for inspiration, then mark it seen. |
| save_to_inspirationC | Bookmark a post (by id, from the current feed) into saved inspiration. |
| list_inspirationA | List saved inspiration items, in the order they were saved. |
| remove_from_inspirationB | Remove a saved inspiration item by post id. |
| reset_seenA | Clear the seen-set so next_inspiration starts fresh. |
| record_preferenceA | Record a note about the user's tattoo taste. |
| get_preference_summaryA | Return every recorded taste preference, so a fresh session can reload it. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| _widget_inspiration | ChatGPT Apps SDK widget that renders the next_inspiration preview image. |
TDQS
Scored across 11 tools
Each tool targets a clearly distinct responsibility: artist management, feed viewing, inspiration, and preferences. No overlapping purposes.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., add_artist, get_feed, record_preference), making the surface predictable.
11 tools is well-scoped for the domain of tracking tattoo artists, browsing feeds, and managing inspiration and preferences.
Core workflows are covered: CRUD for artists and inspiration, preference recording, and feed retrieval. Minor gaps include no update/delete for preferences and no filtered feed per artist, but these are not critical.