Computer-Use Agents API
Server Details
Run and manage H Company's Computer-Use Agents from any MCP client.
- Status
- Healthy
- Uptime
- 100.0% over 74 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- Repository
- hcompai/hai-agents-python
- GitHub Stars
- 31
TDQS
Scored across 9 tools
Each tool has a clearly distinct resource/action: agent discovery, session start/wait/message/cancel/share, and file list/read/write. The only near-overlap is run_agent returning a session handle and wait_for_session polling it, but their descriptions make the boundary clear.
All nine tools follow a consistent snake_case verb_noun pattern: cancel_session, list_agents, list_files, read_file, run_agent, send_message, share_session, wait_for_session, write_file. There are no mixed conventions or vague names.
Nine tools is well-scoped for a computer-use agents API covering agent discovery, session lifecycle, messaging, sharing, and basic file access. No tool appears redundant or unnecessary.
Core lifecycle is covered: list agents, run/wait/message/cancel sessions, share sessions, and list/read/write files. Minor gaps remain, such as no list_sessions/get_session, no unshare_session, and no delete_file, but agents can work around most of these via session handles and returned snapshots.
Available Tools
9 toolscancel_sessionCancel SessionAInspect
Cancel a session; a no-op if it does not exist or already finished.
| Name | Required | Description | Default |
|---|---|---|---|
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It usefully discloses idempotency ('a no-op if it does not exist or already finished'), but says nothing about whether cancellation is graceful or immediate, what happens to in-flight work, or any auth requirements.
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?
A single compact sentence with the core action front-loaded and the idempotency caveat attached. Nothing is wasted and nothing is buried.
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 described, and the description covers purpose plus idempotent behavior. For a one-parameter tool this is nearly complete, with only the mechanics of cancellation and the parameter meaning left unstated.
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 0% and the description never explains session_id, leaving the parameter undocumented in both places. The meaning is inferable from context (the session to cancel), but nothing beyond that is added.
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?
States a specific verb and resource ('Cancel a session'), so an agent immediately knows the operation. However, it offers no differentiation from siblings such as wait_for_session or share_session, though none of them overlap with cancellation.
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?
Usage is only implied: the tool is for cancelling a session, and the idempotency clause hints at when calling is harmless. There is no explicit when-to-use, prerequisite, or alternative-tool guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_agentsList AgentsBInspect
List agents the caller can run: their org's agents plus the public h/ ones.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | ||
| size | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It does disclose a meaningful behavioral trait: results are permission-scoped to what the caller can run, plus public h/ agents. However, it says nothing about pagination behavior (the page/size params imply paged results) or read-only semantics beyond what "List" implies.
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?
A single front-loaded sentence with no filler; the scope qualifier follows the object it modifies. Appropriately sized, though it is arguably too terse to cover pagination.
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 described. For a simple read-only listing tool this is close to adequate, but with no annotations and no pagination guidance, an agent can't tell how to page through results.
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 0% and both parameters (page, size) are undocumented in the schema. The description adds nothing about paging or result limits, so it fails to compensate for the coverage gap.
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 ("List agents") and scopes it precisely: agents the caller can run, including the org's own plus public h/ ones. That scope nuance is genuinely informative. It doesn't differentiate from siblings, but the sibling set (session/file/session controls) doesn't overlap, so no confusion arises.
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?
There is no when-to-use or when-not-to-use guidance and no named alternative. The phrase "agents the caller can run" vaguely implies you call this to discover runnable agents before using run_agent, but that inference is left entirely to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_filesList FilesAInspect
List files on a session's machine, newest first; by default its environment's own, such as a browser's downloads.
session_id is the id run_agent returns, or an env-manager session id.
When a listing is truncated, page on the last entry's modified_at (ISO-8601) and name, passed as modified_before and name_after. Send both: modification times are not unique, and a timestamp alone skips the rest of a tied group.
| Name | Required | Description | Default |
|---|---|---|---|
| path | No | ||
| name_after | No | ||
| session_id | Yes | ||
| max_entries | No | ||
| modified_before | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does well: it discloses ordering (newest first), default scope (environment's own files), truncation behavior, and the subtle tie-breaking requirement when paging on modified_at and name. It does not explicitly state that the operation is read-only/safe or describe error behavior, leaving some gaps.
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?
Front-loaded with purpose and ordered sensibly: what it lists, session_id provenance, then pagination. The pagination paragraph is dense but every sentence adds necessary operational detail, and there is no filler.
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?
The output schema exists, so return values need not be explained. But with five parameters at 0% schema description coverage and no annotations, the description should say more about max_entries, path semantics, and the read-only nature of the operation. It covers the trickiest pagination behavior well but is not fully complete.
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 0%, so the description must compensate. It explains session_id provenance and the pagination parameters (modified_before, name_after) with important ISO-8601 and tie-breaking detail, and implies the default for path. However, max_entries is never mentioned and path is only indirectly referenced, leaving two of five parameters underserved.
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?
States a specific verb and resource ('List files on a session's machine'), plus ordering ('newest first') and default scope ('its environment's own, such as a browser's downloads'). The purpose is unmistakable and implicitly distinguishes listing from reading/writing siblings, but no sibling tool is named explicitly for contrast.
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?
Gives useful context for what the default listing covers and detailed instructions for paginating truncated results, but never states when to use this tool versus alternatives like read_file or when a path should be supplied. Usage is implied rather than explicitly guided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
read_fileRead FileAInspect
Read a file from a session's machine; returns base64 content and metadata.
session_id is the id run_agent returns, or an env-manager session id.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry the behavioral burden. It does disclose the return encoding (base64) and that metadata accompanies the content, and 'Read' implies a non-mutating operation, but it says nothing about size limits, binary vs text handling, path resolution rules, or what happens on a missing file or inactive session.
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?
Two sentences, front-loaded with the action and the return format, with the parameter clarification second. Nothing is wasted or repeated.
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 spelled out. However, for a two-parameter file-access tool the description leaves the meaning of 'path' and the failure modes unaddressed, which is a meaningful gap for an agent that must call it correctly on the first try.
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 0%, so both parameters need the description to compensate. It usefully explains session_id's provenance (the id run_agent returns, or an env-manager session id), but 'path' is left completely unqualified — no indication of absolute vs relative paths, sandbox root, or whether directories are accepted.
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?
States a specific verb and resource plus a scope qualifier ('Read a file from a session's machine') and even the return encoding (base64 content and metadata). The read/write/list trio among siblings is unambiguous from the verb alone.
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 second sentence clarifies where session_id comes from, which is useful prerequisite context, but it never says when to prefer this over list_files or write_file, nor any preconditions such as the session being live or the path needing to exist. Usage is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_agentRun AgentAInspect
Start an agent on a task; return the answer or a session handle to wait on.
agent is a name from list_agents, which runs its latest revision, or name:N to run revision N.
| Name | Required | Description | Default |
|---|---|---|---|
| task | Yes | ||
| agent | Yes | ||
| max_steps | No | ||
| max_time_s | No | ||
| idempotency_key | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden, and it does disclose one important trait: the operation may be asynchronous, yielding a session handle to be waited on. It says nothing about side effects, permissions, cost, or whether repeated runs are safe (the idempotency_key hints at this, but the description never mentions it), so the burden is only partly met.
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?
Two short sentences, front-loaded with the purpose and return behavior before the parameter detail. No filler, every clause adds information.
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 five-parameter tool with zero annotation coverage, the description leaves substantial gaps: budget parameters (max_steps, max_time_s), idempotency semantics, and side effects/cost are all unexplained. The output schema excuses it from describing return values, but not from the missing input semantics.
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 0% and the description only explains one of five parameters, `agent`, though it does so well (name from list_agents, name:N revision syntax). The required `task` and the optional max_steps, max_time_s, and idempotency_key are undocumented everywhere, leaving the agent to guess their meaning and units.
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?
States a specific verb+resource ('Start an agent on a task') and immediately characterizes the outcome ('return the answer or a session handle to wait on'), which also separates it from the sibling wait_for_session. The revision syntax (name vs name:N) further pins down exactly what starting an agent means here.
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?
Tells the agent where the `agent` value comes from (list_agents) and that the default is the latest revision, which is real routing context. It stops short of explicit when-not-to-use guidance or naming wait_for_session / cancel_session as follow-up alternatives for the session-handle path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_messageSend MessageBInspect
Send a follow-up message to a running session.
| Name | Required | Description | Default |
|---|---|---|---|
| message | Yes | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. Beyond noting the target must be a 'running session', it says nothing about whether the call blocks, whether it queues behind an in-flight turn, permission requirements, or failure modes for a non-running session.
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?
A single front-loaded sentence with no filler and the key scope qualifier ('running session') placed where it matters. It is efficient, though arguably too terse for the information the agent needs.
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 here. For a two-parameter tool that is nearly acceptable, but the absence of any parameter documentation and of routing guidance relative to run_agent/wait_for_session leaves real gaps.
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 0% for both parameters, so the description should compensate but does not. It never clarifies what 'message' should contain (role, format, whether it is delivered mid-turn) or what form 'session_id' takes or where it comes from.
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 ('Send a follow-up message') and scopes it to 'a running session', which separates it from siblings like run_agent (which starts a session) and wait_for_session. It does not explicitly name those siblings, so differentiation is inferential 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?
'Follow-up' implies this is for continuing an already-running session rather than creating one, which is useful implicit guidance. However, it gives no explicit when-to-use versus run_agent, no prerequisites (e.g., that the session must be awaiting input), and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
wait_for_sessionWait For SessionAInspect
Poll a session: with wait long-poll for the answer, else return the current snapshot.
| Name | Required | Description | Default |
|---|---|---|---|
| wait | No | ||
| session_id | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the key trait: this is a polling/long-poll operation that blocks when `wait` is true. It stops short of timeout duration, what happens on timeout, or error behavior, which matters for a blocking call.
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?
A single tight sentence with the mode split front-loaded after the verb; no filler and no repetition of schema or title.
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 two operational modes are covered. The gap is blocking semantics: how long the long-poll waits and what it returns on expiry is exactly what an agent needs for a blocking call and is absent.
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 coverage is 0%, so the description must compensate, and it does for the non-obvious parameter: `wait` is explained as long-poll vs. current snapshot, which the bare boolean in the schema cannot convey. `session_id` is left unaddressed but is self-evident by name.
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?
States a specific verb (poll) and resource (a session), and splits behavior by the `wait` flag, so an agent knows this retrieves session state. It does not name or contrast any sibling (e.g., why not send_message or run_agent), which keeps it out of 5 territory.
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 implies when each mode applies (long-poll for the answer vs. grab the snapshot), which is genuinely useful routing guidance. However, it gives no explicit when-to-use/when-not-to-use context relative to siblings, and never states prerequisites such as the session needing to be running.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
write_fileWrite FileBInspect
Write base64-encoded content to a file on a session's machine.
session_id is the id run_agent returns, or an env-manager session id.
| Name | Required | Description | Default |
|---|---|---|---|
| path | Yes | ||
| session_id | Yes | ||
| content_base64 | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the full behavioral burden for a mutation tool. It never says whether an existing file is overwritten, whether parent directories are created, what permissions are required, or what happens on failure — the base64 requirement is the only behavioral fact disclosed, and that is already implied by the parameter name.
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?
Two short sentences, zero filler, with the core action and content format front-loaded before the parameter clarification. Every sentence adds information an agent can act on.
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 described, and the description covers the essentials for a three-parameter call. The gap is on the mutation side: overwrite semantics, size limits, and path resolution are absent, which matters for a write tool with no annotations.
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 coverage is 0%, so the description must compensate for all three parameters. It usefully explains session_id's provenance (run_agent return value or env-manager session id) and confirms content_base64's encoding, but `path` — the parameter most likely to cause an error (absolute vs relative, directory creation) — gets no explanation at all.
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?
States a specific verb (write), resource (a file), target (a session's machine), and content format (base64-encoded), which cleanly separates it from read_file and list_files. It stops short of naming a sibling explicitly, so it lands just below the top band.
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?
Usage is only implied: the tool is obviously for placing file content on a remote session, and the note that session_id comes from run_agent is a helpful prerequisite. There is no statement of when to prefer this over alternatives, no guidance on overwrite behavior, and no note about which session types are valid.
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
list_files3 fields changed- added
Input schema / properties / path / anyOfAdded value: +[ + { + "type": "string" + }, + { + "type": "null" + } +] - changed
Input schema / properties / path / defaultPrevious value: -"~/Downloads"New value: +null - removed
Input schema / properties / path / typeRemoved value: -"string"
9 tool updates
- Changed
cancel_session1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_agents1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
list_files1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
read_file1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
run_agent1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
send_message1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
share_session1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
wait_for_session1 field changed- added
Input schema / additionalPropertiesAdded value: +false
- Changed
write_file1 field changed- added
Input schema / additionalPropertiesAdded value: +false
3 tool updates
- Added
list_files - Added
read_file - Added
write_file
6 tool updates
- First observed
cancel_session - First observed
list_agents - First observed
run_agent - First observed
send_message - First observed
share_session - First observed
wait_for_session
Related MCP Connectors
Start and manage Reason cloud coding agents, projects and sessions from any MCP client.
Remote MCP utilities for agents: structured data, commerce checks, and x402 paid API discovery.
Publish and manage existing HTML presentations from an MCP-capable Agent.
Agent-first web hosting: deploy sites, apps, databases and domains over MCP.
Related MCP Servers
- AlicenseAqualityCmaintenanceEnables MCP clients to start and steer persistent terminals and coding agents, run commands and edit files on local or remote machines, and arrange the Herdr desktop window.25MIT
- AlicenseNot gradedqualityBmaintenanceEnables MCP-capable AI assistants to control a Windows computer through GUI automation, file and process operations, PowerShell commands, durable background jobs, and binary file transfer with downloadable exports.MIT
- AlicenseNot gradedqualityAmaintenanceEnables remote control of a Windows desktop via MCP, including screenshots, mouse and keyboard, window management, PowerShell, files, services, registry, scheduled tasks, event log, and network checks.02MIT
- AlicenseNot gradedqualityBmaintenanceEnables agent clients to safely connect to tools and execution resources through MCP with authorization, approvals, audit, chat-context isolation, SSH/Docker access, and long-running command session tracking.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.