Capture photos remotely from mobile devices via S3-backed upload URLs
Call this server's tools from your browser. Nothing to install.
S3 credentials token in format: Bearer <base64-encoded-json>. The JSON should contain: {s3Url, accessKeyId, secretAccessKey, region}. Visit https://www.ai.moda/mcp-servers/remote-camera/ to set up your S3 auth token.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
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
Instructions/message to display to the user on the capture page (max 200 characters)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
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
| Argument | Type | Description |
|---|---|---|
| message | string | Instructions/message to display to the user on the capture page (max 200 characters) |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"properties": {
"message": {
"type": "string",
"examples": [
"Take a photo of the chip markings on the main IC",
"Capture the PCB trace layout near the connector",
"Show me the part number on that sensor module"
],
"maxLength": 200,
"minLength": 1,
"description": "Instructions/message to display to the user on the capture page (max 200 characters)"
}
},
"additionalProperties": false
}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.
| Argument | Type | Description |
|---|---|---|
| timeout | integer | Max seconds to wait for upload |
| not_etag | string | Only detect files with different ETag than this value, used to poll for new uploads |
| session_id* | string | Session ID to poll for, in UUID format |
| modified_since | string | Only detect files modified after this date in ISO 8601 or HTTP date format |
{
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"session_id"
],
"properties": {
"timeout": {
"type": "integer",
"default": 50,
"maximum": 600,
"minimum": 1,
"description": "Max seconds to wait for upload"
},
"not_etag": {
"type": "string",
"examples": [
"d41d8cd98f00b204e9800998ecf8427e",
"\"1a2b3c4d5e6f7g8h9i0j\"",
"a3bb189e8bf94c5e8d7a1e5f5e5e5e5e-2"
],
"maxLength": 130,
"minLength": 3,
"description": "Only detect files with different ETag than this value, used to poll for new uploads"
},
"session_id": {
"type": "string",
"format": "uuid",
"description": "Session ID to poll for, in UUID format"
},
"modified_since": {
"type": "string",
"format": "date-time",
"examples": [
"2026-10-22T00:00:00.000Z",
"Fri, 16 Oct 2026 00:00:00 GMT",
"2026-10-21T00:00:00.000Z"
],
"description": "Only detect files modified after this date in ISO 8601 or HTTP date format"
}
},
"additionalProperties": false
}