Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Automate Google Photos tasks via Rube MCP (Composio): upload media, manage albums, search photos, batch add items, create and update albums. Always search tools first for current schemas.
.claude/skills/composiohq-googlephotos-automation/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-07 | ✗→✓ | ▲ Improved | 162% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 44% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 59% | 0% |
| case-14 | ✗→✓ | ▲ Improved | 136% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 84% | 0% |
Upload photos, manage albums, search media items, and batch-organize content in Google Photos using Rube MCP (Composio).
Toolkit docs: composio.dev/toolkits/googlephotos
RUBE_MANAGE_CONNECTIONS with toolkit googlephotosRUBE_SEARCH_TOOLS first to get current tool schemasGet Rube MCP: Add https://rube.app/mcp as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.
RUBE_SEARCH_TOOLS respondsRUBE_MANAGE_CONNECTIONS with toolkit googlephotosUse GOOGLEPHOTOS_LIST_ALBUMS to retrieve all albums visible in the user's Albums tab.
Tool: GOOGLEPHOTOS_LIST_ALBUMS
Parameters:
- pageSize: Number of albums per page
- pageToken: Pagination token
- excludeNonAppCreatedData: Only show albums created by this appUse GOOGLEPHOTOS_CREATE_ALBUM to create a new album in Google Photos.
Tool: GOOGLEPHOTOS_CREATE_ALBUM
Parameters:
- title (required): Album titleUse GOOGLEPHOTOS_UPLOAD_MEDIA to upload an image or video file to Google Photos.
Tool: GOOGLEPHOTOS_UPLOAD_MEDIA
Parameters:
- file_to_upload: Local file path to upload
- url: URL of file to upload (alternative to file_to_upload)
- file_name: Name for the uploaded file
- description: Description/caption for the media itemUse GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS to upload multiple files and create media items in one operation.
Tool: GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS
Parameters:
- files: Local file paths to upload
- urls: URLs of files to upload
- media_files: Mixed input (files and URLs)
- albumId: Album to add items to
- albumPosition: Position within the albumUse GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS to search the user's photo library with filters.
Tool: GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS
Parameters:
- albumId: Filter by album
- filters: Search filters (date ranges, content categories, media types)
- orderBy: Sort order
- pageSize: Results per page
- pageToken: Pagination tokenUse GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS to add existing media items to an album.
Tool: GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS
Parameters:
- albumId (required): Target album ID
- mediaItemIds (required): Array of media item IDs to addGOOGLEPHOTOS_CREATE_ALBUM to create an album, then GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS with the album ID to upload and organize photos in one step.GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS or GOOGLEPHOTOS_LIST_MEDIA_ITEMS to find media item IDs, then GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS to add them to albums.GOOGLEPHOTOS_UPDATE_ALBUM to change an album's title or cover photo.GOOGLEPHOTOS_GET_ALBUM with an album ID to retrieve full album information.GOOGLEPHOTOS_ADD_ENRICHMENT to add text overlays, locations, or map enrichments to album positions.url parameter in GOOGLEPHOTOS_UPLOAD_MEDIA or urls in GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS to upload images directly from web URLs.GOOGLEPHOTOS_LIST_MEDIA_ITEMS is deprecated -- prefer GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS for listing and filtering media.GOOGLEPHOTOS_UPLOAD_MEDIA supports images up to 200MB and videos up to a larger limit. Exceeding these will fail.GOOGLEPHOTOS_LIST_ALBUMS or GOOGLEPHOTOS_CREATE_ALBUM responses -- they are opaque strings.GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS can only add items to albums created by the app or albums the user owns.filters parameter in GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS uses a specific Google Photos API filter structure -- consult the schema for date range and content category formats.| Action | Tool | Key Parameters | |--------|------|----------------| | List albums | GOOGLEPHOTOS_LIST_ALBUMS | pageSize, pageToken | | Create album | GOOGLEPHOTOS_CREATE_ALBUM | title | | Get album | GOOGLEPHOTOS_GET_ALBUM | albumId | | Update album | GOOGLEPHOTOS_UPDATE_ALBUM | albumId, title, coverPhotoMediaItemId | | Upload media | GOOGLEPHOTOS_UPLOAD_MEDIA | file_to_upload or url, description | | Batch upload | GOOGLEPHOTOS_BATCH_CREATE_MEDIA_ITEMS | files or urls, albumId | | Search media | GOOGLEPHOTOS_SEARCH_MEDIA_ITEMS | albumId, filters, pageSize | | List media items | GOOGLEPHOTOS_LIST_MEDIA_ITEMS | pageSize, pageToken | | Add items to album | GOOGLEPHOTOS_BATCH_ADD_MEDIA_ITEMS | albumId, mediaItemIds | | Add enrichment | GOOGLEPHOTOS_ADD_ENRICHMENT | albumId, newEnrichmentItem, albumPosition |
Powered by Composio
| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-06 | pass→pass | 11,460 | 5,516 | -52% | 1 | 1 | 0% | 1,885 | 2,512 | +33% | 0 | 0 | — |
case-20 | pass→pass | 5,359 | 1,555 | -71% | 1 | 1 | 0% | 939 | 1,758 | +87% | 0 | 0 | — |
case-01 | fail→fail | 9,155 | 5,568 | -39% | 1 | 1 | 0% | 1,076 | 1,894 | +76% | 0 | 0 | — |
case-02 | fail→fail | 5,849 | 4,432 | -24% | 1 | 1 | 0% | 1,096 | 1,759 | +60% | 0 | 0 | — |
case-03 | fail→fail | 5,052 | 5,410 | +7% | 1 | 1 | 0% | 896 | 1,843 | +106% | 0 | 0 | — |
case-04 | pass→pass | 9,447 | 5,003 | -47% | 1 | 1 | 0% | 1,582 | 2,469 | +56% | 0 | 0 | — |
case-05 | pass→pass | 6,017 | 4,876 | -19% | 1 | 1 | 0% | 970 | 2,395 | +147% | 0 | 0 | — |
case-07 | fail→pass | 4,295 | 3,791 | -12% | 1 | 1 | 0% | 817 | 2,141 | +162% | 0 | 0 | — |
case-08 | fail→pass | 6,631 | 1,372 | -79% | 1 | 1 | 0% | 1,218 | 1,751 | +44% | 0 | 0 | — |
case-09 | fail→pass | 7,160 | 2,041 | -71% | 1 | 1 | 0% | 1,205 | 1,911 | +59% | 0 | 0 | — |
case-10 | pass→pass | 2,976 | 2,650 | -11% | 1 | 1 | 0% | 568 | 1,959 | +245% | 0 | 0 | — |
case-11 | pass→pass | 8,225 | 2,447 | -70% | 1 | 1 | 0% | 1,373 | 1,994 | +45% | 0 | 0 | — |
case-12 | pass→pass | 3,314 | 2,189 | -34% | 1 | 1 | 0% | 563 | 1,848 | +228% | 0 | 0 | — |
case-13 | pass→pass | 4,532 | 2,366 | -48% | 1 | 1 | 0% | 849 | 2,007 | +136% | 0 | 0 | — |
case-14 | fail→pass | 4,557 | 1,625 | -64% | 1 | 1 | 0% | 768 | 1,810 | +136% | 0 | 0 | — |
case-15 | pass→pass | 3,229 | 2,611 | -19% | 1 | 1 | 0% | 579 | 1,948 | +236% | 0 | 0 | — |
case-16 | pass→pass | 3,941 | 2,405 | -39% | 1 | 1 | 0% | 636 | 1,978 | +211% | 0 | 0 | — |
case-17 | pass→pass | 3,251 | 1,317 | -59% | 1 | 1 | 0% | 511 | 1,721 | +237% | 0 | 0 | — |
case-18 | fail→pass | 5,270 | 1,269 | -76% | 1 | 1 | 0% | 930 | 1,708 | +84% | 0 | 0 | — |
case-19 | pass→pass | 4,675 | 2,125 | -55% | 1 | 1 | 0% | 827 | 1,773 | +114% | 0 | 0 | — |
case-21 | fail→pass | 9,744 | 1,674 | -83% | 1 | 1 | 0% | 1,725 | 1,800 | +4% | 0 | 0 | — |
case-22 | pass→pass | 3,930 | 1,893 | -52% | 1 | 1 | 0% | 772 | 1,759 | +128% | 0 | 0 | — |
case-23 | pass→pass | 11,106 | 4,670 | -58% | 1 | 1 | 0% | 1,882 | 2,242 | +19% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 23 cases were attempted, and 20 counted toward the lift figure. The other 3 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +26 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.