Skip to main content
Glama

IvedaAI: add cameras from an IP or RTSP URL

ivedaai_add_camera

Adds IP or RTSP cameras to IvedaAI, activates their streams, and checks for partial-creation failures to avoid duplicate camera records.

Instructions

Adds one or more cameras (e.g. from a list of IPs or RTSP stream URLs) and starts their connection. The raw CameraRequest schema has undocumented gotchas confirmed by live testing:

  • A schema-valid minimal body (name, streamUrl, engineProfileId, roiContour) still throws a bare server-side error unless several other optional-looking fields are also filled — this tool fills them with sane defaults automatically (resolution 1920x1080, frameRate 25, empty schedule/plugins, etc.).

  • Creating the record is NOT enough for the camera to actually connect or be fully visible in the product UI: a separate activation step (allocating a processing resource and starting the stream) is required, which this tool performs automatically unless activate: false is passed.

  • A creation error can still partially create the camera server-side before failing. This tool checks for that by exact name after any error and reports created_despite_error with the real cameraId instead of a false failed, so you don't end up with a confusing orphaned duplicate.

Only name plus either streamUrl or ip are required per camera — everything else is optional and defaulted (engineProfileId defaults to the first engine profile found; roiContour defaults to a full-frame rectangle). Providing the exact streamUrl is much more reliable than ip alone: this tool can only guess a generic RTSP root path from ip/account/password, which often doesn't match a specific camera's actual manufacturer-specific stream path.

IMPORTANT: activation starting successfully does NOT mean the stream is actually connected — that can take anywhere from under a second to failing after 90+ seconds with no error at all (observed live), which usually indicates a network-reachability problem between the IvedaAI server and the camera, not a problem with this tool. Check back later with the returned jobId via the ivedaai_job tool (GET /api/jobs/{jobId}), or re-check the camera via ivedaai_camera (GET /api/cameras/{cameraId}) for a populated status field, to confirm it actually connected.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ainvrIdNoWhich ainvr/site to add cameras under. Defaults to the first ainvr found if omitted.
camerasYesCameras to add.
activateNoWhether to start each camera's connection after creation (default true).
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description reveals numerous non-obvious behaviors: schema-valid minimal bodies fail without internal defaults, a separate activation step exists and is auto-performed, partial creation can occur on errors and is handled, and successful activation doesn't guarantee connection. This goes far beyond the annotations (readOnlyHint=false, destructiveHint=false) and gives critical operational insight.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is long but information-dense, covering edge cases in a structured way with the main purpose front-loaded. Some repetition exists (defaults mentioned twice), but the length is justified by the tool's complexity and the critical gotchas that must be disclosed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema is present, so the description must explain return values. It mentions key outputs like jobId, cameraId, created_despite_error, and failed, and tells the agent how to verify success using sibling tools. This adequately rounds out the picture for a complex tool with side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds value by clarifying default behavior for engineProfileId and roiContour, emphasizing that streamUrl is more reliable than ip, and explaining how ip is used only as a fallback to guess an RTSP URL. This enriches the schema definitions with practical guidance.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with a specific verb and resource: 'Adds one or more cameras... and starts their connection.' This clearly distinguishes the tool from sibling tools like ivedaai_camera (which retrieves camera info) by focusing on creation with activation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides practical usage context: only name plus streamUrl or ip are required, defaults are applied, and activation is automatic unless disabled. It also directs the agent to use ivedaai_job and ivedaai_camera for follow-up verification, implying when this tool is the right choice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/WillORepO/ivedaAI-mcp-server'

If you have feedback or need assistance with the MCP directory API, please join our Discord server