Foto MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| FOTO_EMAIL | No | Your Foto account email address for authentication via environment variables. | |
| FOTO_PASSWORD | No | Your Foto account password for authentication via environment variables. |
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": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| foto_auth_statusA | Check the current authentication status with Foto app (logged-in user, token validity). |
| foto_loginA | Authenticate with Foto app using your account email and password. Securely stores credentials locally. |
| foto_logoutA | Log out of Foto app and delete stored credentials from local disk. |
| foto_inspect_imageA | Inspect a local image file without uploading: extracts technical EXIF (camera, lens, ISO, shutter, aperture), dimensions, aspect ratio, and checks for GPS presence. |
| foto_suggest_tagsA | Suggest 1 to 3 valid tags from Foto's official 303 curated tags list based on caption, camera/film notes, or subject keywords. |
| foto_search_tagsA | Search Foto's official 303 curated allowed tags whitelist by keyword or prefix. |
| foto_draft_postA | Preview and validate a post draft without publishing. Validates tag constraints (1-3 from whitelist), formats EXIF summary, and checks image parameters. |
| foto_publish_postA | Publish a single photo post to Foto. Automatically normalizes resolution (max 1820px, JPEG 80%), scrubs GPS for privacy, uploads to Storage, passes moderation, and creates the post. Use dryRun=true to test locally without publishing. |
| foto_publish_seriesB | Publish a multi-image Series (2 to 5 photos) under a single post to Foto. Use dryRun=true to validate locally without uploading. |
| foto_get_user_profileA | Retrieve profile details and stats for the authenticated Foto user (username, bio, post count, following/followers). |
| foto_sync_instagramA | Synchronize posts from an Instagram data export (HTML/JSON) to Foto. Cleans hashtags, suggests 1-3 curated tags, normalizes dimensions, scrubs GPS, and checks against already-published Foto posts. Default dryRun=true validates everything without publishing. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| curate_foto_post | Formulate a thoughtful photographic post for Foto adhering to platform ethos (no hashtags, 1-3 curated tags, technical EXIF summary). |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| foto-curated-tags | The complete whitelist of 303 curated tags permitted on Foto. |
TDQS
Scored across 11 tools
Each tool targets a fairly clear stage of the workflow (auth, inspect, tag, draft, publish, sync). Minor overlap exists between foto_draft_post and foto_publish_post with dryRun=true, and between foto_suggest_tags and foto_search_tags, but descriptions do enough to separate them.
All tools share a consistent foto_ prefix and mostly follow a verb_noun pattern (foto_inspect_image, foto_publish_post, foto_sync_instagram). Minor deviations: foto_auth_status is noun-phrase and foto_get_user_profile uniquely uses a get_ verb.
Eleven tools is well within a healthy scope and each maps to a distinct step: auth lifecycle (3), local inspection, tag discovery (2), draft, publishing (2), profile, and import sync.
Covers the full publish lifecycle from login and local validation through single/series publishing and Instagram import, plus read-only profile. The only notable gap is post management after publishing (edit/delete/list own posts), which agents can work around for now.