Remote Camera
Server Details
Capture photos remotely from mobile devices via S3-backed upload URLs
- Status
- Healthy
- Uptime
- 100.0% over 81 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- ChatGPT
- –
- Claude
- –
TDQS
Scored across 2 tools
The two tools have clearly distinct roles in a single workflow: generate_upload_url creates a reusable capture link, while poll_for_upload waits for and retrieves the uploaded photo. There is no meaningful overlap that could cause an agent to select the wrong tool.
Both names follow a consistent snake_case verb_noun pattern: generate_upload_url and poll_for_upload. The convention is predictable and readable.
Two tools are sufficient for the narrow upload-and-retrieve workflow, but the surface feels thin for a camera integration. It sits at the borderline of being too minimal rather than clearly well-scoped.
The server covers the core capture-link and upload-polling flow, including retrieval via presigned download URL. However, there are notable gaps: no listing of prior uploads, no deletion/cleanup, and no direct file metadata or session management operations.
Available Tools
2 toolsgenerate_upload_urlAInspect
Generate a URL for remote camera upload. Send this URL to a mobile device to capture and upload a photo. The capture URL can be reused multiple times to upload different photos without generating a new URL. The URL will be in format: https://www.ai.moda/mcp-servers/remote-camera/capture/?url=PRESIGNED_URL
| Name | Required | Description | Default |
|---|---|---|---|
| message | No | Instructions/message to display to the user on the capture page (max 200 characters) |
Output Schema
| Name | Required | Description |
|---|---|---|
| session_id | Yes | Session ID used for this upload, in UUID format |
| capture_url | Yes | Full URL to send to mobile device for photo capture |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden. It discloses reusability and the exact URL format, which is helpful. However, it does not mention any potential side effects, expiration, rate limits, or whether this creates a persistent record. For a generation tool with no annotations, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences, each adding meaningful information. The description is front-loaded with the core action and includes practical format details without any fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple single-parameter tool with an output schema, the description covers purpose, usage, reuse, and output format. It doesn't explicitly link to the sibling polling tool, so there is a small gap in the overall workflow, but the tool itself is well described.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema description covers the 'message' parameter fully (instructions to display, max length), so the description adds only marginal value by implying the message is shown on the capture page. Baseline of 3 is appropriate given 100% schema coverage and no additional parameter details in the description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Generate' and the resource 'URL for remote camera upload', and explains its purpose (sending to a mobile device for photo capture). It also explicitly distinguishes from the sibling tool 'poll_for_upload' by focusing on generation rather than polling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage context ('Send this URL to a mobile device to capture and upload a photo') and notes that the URL can be reused. It doesn't explicitly mention poll_for_upload as an alternative or next step, so it stops short of full exclusions, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
poll_for_uploadAInspect
Poll S3 bucket waiting for photo upload to complete. Returns a presigned download URL when the file is ready. The same session_id can be used to poll for new uploads multiple times, allowing the capture URL to be reused.
| Name | Required | Description | Default |
|---|---|---|---|
| timeout | No | Max seconds to wait for upload | |
| not_etag | No | Only detect files with different ETag than this value, used to poll for new uploads | |
| session_id | Yes | Session ID to poll for, in UUID format | |
| modified_since | No | Only detect files modified after this date in ISO 8601 or HTTP date format |
Output Schema
| Name | Required | Description |
|---|---|---|
| etag | Yes | ETag of the uploaded file, can be used with not_etag parameter for subsequent polls |
| download_url | Yes | Presigned GET URL to download the uploaded photo, valid for 7 days |
| last_modified | No | Last modified timestamp of the uploaded file from S3 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are supplied, so the description carries the full burden. It discloses the core behavior (blocking poll, presigned URL on success, session reuse) but omits what happens on timeout, whether the call blocks for up to the timeout, and whether a failed poll returns an error or an empty result, all of which matter for a polling tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the action and the return value, then the reuse semantics. No filler, though the final sentence about reuse could be tightened or merged with the return-value sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the four parameters are fully documented in the schema. The main remaining gap is failure and timeout behavior for a blocking poll, which is significant but limited given the otherwise strong structured coverage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents session_id, timeout, not_etag, and modified_since. The description adds only a little: it reinforces that session_id drives repeated polling, but does not explain how not_etag or modified_since interact with repeat polls beyond what the schema states, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: poll an S3 bucket for a photo upload and return a presigned download URL when ready. It clearly differs from the sibling generate_upload_url, but it never names that sibling or states the sequencing relationship explicitly, so the differentiation is implicit rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives useful context that the same session_id can be polled repeatedly so the capture URL can be reused, which implies the polling loop pattern. However, it never says when to call this versus generate_upload_url, whether repeated polling is expected or discouraged, or what a caller should do after a timeout, leaving the workflow guidance incomplete.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-11-04T00:00:00.000Z", - "Thu, 29 Oct 2026 00:00:00 GMT", - "2026-11-03T00:00:00.000Z" -]New value: +[ + "2026-11-05T00:00:00.000Z", + "Fri, 30 Oct 2026 00:00:00 GMT", + "2026-11-04T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-11-03T00:00:00.000Z", - "Wed, 28 Oct 2026 00:00:00 GMT", - "2026-11-02T00:00:00.000Z" -]New value: +[ + "2026-11-04T00:00:00.000Z", + "Thu, 29 Oct 2026 00:00:00 GMT", + "2026-11-03T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-11-02T00:00:00.000Z", - "Tue, 27 Oct 2026 00:00:00 GMT", - "2026-11-01T00:00:00.000Z" -]New value: +[ + "2026-11-03T00:00:00.000Z", + "Wed, 28 Oct 2026 00:00:00 GMT", + "2026-11-02T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-11-01T00:00:00.000Z", - "Mon, 26 Oct 2026 00:00:00 GMT", - "2026-10-31T00:00:00.000Z" -]New value: +[ + "2026-11-02T00:00:00.000Z", + "Tue, 27 Oct 2026 00:00:00 GMT", + "2026-11-01T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-31T00:00:00.000Z", - "Sun, 25 Oct 2026 00:00:00 GMT", - "2026-10-30T00:00:00.000Z" -]New value: +[ + "2026-11-01T00:00:00.000Z", + "Mon, 26 Oct 2026 00:00:00 GMT", + "2026-10-31T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-30T00:00:00.000Z", - "Sat, 24 Oct 2026 00:00:00 GMT", - "2026-10-29T00:00:00.000Z" -]New value: +[ + "2026-10-31T00:00:00.000Z", + "Sun, 25 Oct 2026 00:00:00 GMT", + "2026-10-30T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-29T00:00:00.000Z", - "Fri, 23 Oct 2026 00:00:00 GMT", - "2026-10-28T00:00:00.000Z" -]New value: +[ + "2026-10-30T00:00:00.000Z", + "Sat, 24 Oct 2026 00:00:00 GMT", + "2026-10-29T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-28T00:00:00.000Z", - "Thu, 22 Oct 2026 00:00:00 GMT", - "2026-10-27T00:00:00.000Z" -]New value: +[ + "2026-10-29T00:00:00.000Z", + "Fri, 23 Oct 2026 00:00:00 GMT", + "2026-10-28T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-27T00:00:00.000Z", - "Wed, 21 Oct 2026 00:00:00 GMT", - "2026-10-26T00:00:00.000Z" -]New value: +[ + "2026-10-28T00:00:00.000Z", + "Thu, 22 Oct 2026 00:00:00 GMT", + "2026-10-27T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-26T00:00:00.000Z", - "Tue, 20 Oct 2026 00:00:00 GMT", - "2026-10-25T00:00:00.000Z" -]New value: +[ + "2026-10-27T00:00:00.000Z", + "Wed, 21 Oct 2026 00:00:00 GMT", + "2026-10-26T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-25T00:00:00.000Z", - "Mon, 19 Oct 2026 00:00:00 GMT", - "2026-10-24T00:00:00.000Z" -]New value: +[ + "2026-10-26T00:00:00.000Z", + "Tue, 20 Oct 2026 00:00:00 GMT", + "2026-10-25T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-24T00:00:00.000Z", - "Sun, 18 Oct 2026 00:00:00 GMT", - "2026-10-23T00:00:00.000Z" -]New value: +[ + "2026-10-25T00:00:00.000Z", + "Mon, 19 Oct 2026 00:00:00 GMT", + "2026-10-24T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-23T00:00:00.000Z", - "Sat, 17 Oct 2026 00:00:00 GMT", - "2026-10-22T00:00:00.000Z" -]New value: +[ + "2026-10-24T00:00:00.000Z", + "Sun, 18 Oct 2026 00:00:00 GMT", + "2026-10-23T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-22T00:00:00.000Z", - "Fri, 16 Oct 2026 00:00:00 GMT", - "2026-10-21T00:00:00.000Z" -]New value: +[ + "2026-10-23T00:00:00.000Z", + "Sat, 17 Oct 2026 00:00:00 GMT", + "2026-10-22T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-21T00:00:00.000Z", - "Thu, 15 Oct 2026 00:00:00 GMT", - "2026-10-20T00:00:00.000Z" -]New value: +[ + "2026-10-22T00:00:00.000Z", + "Fri, 16 Oct 2026 00:00:00 GMT", + "2026-10-21T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-20T00:00:00.000Z", - "Wed, 14 Oct 2026 00:00:00 GMT", - "2026-10-19T00:00:00.000Z" -]New value: +[ + "2026-10-21T00:00:00.000Z", + "Thu, 15 Oct 2026 00:00:00 GMT", + "2026-10-20T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-19T00:00:00.000Z", - "Tue, 13 Oct 2026 00:00:00 GMT", - "2026-10-18T00:00:00.000Z" -]New value: +[ + "2026-10-20T00:00:00.000Z", + "Wed, 14 Oct 2026 00:00:00 GMT", + "2026-10-19T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-18T00:00:00.000Z", - "Mon, 12 Oct 2026 00:00:00 GMT", - "2026-10-17T00:00:00.000Z" -]New value: +[ + "2026-10-19T00:00:00.000Z", + "Tue, 13 Oct 2026 00:00:00 GMT", + "2026-10-18T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-17T00:00:00.000Z", - "Sun, 11 Oct 2026 00:00:00 GMT", - "2026-10-16T00:00:00.000Z" -]New value: +[ + "2026-10-18T00:00:00.000Z", + "Mon, 12 Oct 2026 00:00:00 GMT", + "2026-10-17T00:00:00.000Z" +]
1 tool update
- Changed
poll_for_upload1 field changed- changed
Input schema / properties / modified_since / examplesPrevious value: -[ - "2026-10-16T00:00:00.000Z", - "Sat, 10 Oct 2026 00:00:00 GMT", - "2026-10-15T00:00:00.000Z" -]New value: +[ + "2026-10-17T00:00:00.000Z", + "Sun, 11 Oct 2026 00:00:00 GMT", + "2026-10-16T00:00:00.000Z" +]
Related MCP Connectors
Create and manage real-world Huint photo verification tasks via hosted streamable HTTP.
Browse, upload, download, copy, move and share files in your own S3-compatible buckets.
Production-ready images in one pass: resize, crop, compress, convert format, upscale, tag for SEO
Image/video analysis: NSFW detection, object detection, thumbnails
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables secure file uploads to Amazon S3 with progress tracking and presigned URL generation. Provides automatic UUID-based file naming and time-limited access URLs for uploaded files.MIT
- AlicenseAqualityCmaintenanceEnables file uploads to AWS S3 buckets with automatic MIME type detection.15 npmMIT
- AlicenseNot gradedqualityDmaintenanceProvides secure access to AWS S3 buckets through pre-signed URLs, enabling listing, downloading, uploading, and deleting objects.2MIT
- AlicenseNot gradedqualityAmaintenanceEnables MCP servers to accept file uploads via short-lived, single-use HTTPS URLs, streaming bytes directly to a backend without passing the file through MCP.2Apache 2.0
Glama MCP Gateway
Add one secure layer between your agents and this server.