agentql
The agentql server provides tools to extract structured data from webpages, manage browser sessions, and monitor API usage.
Extract structured data from webpages (
query_webpage_data): Query live URLs or raw HTML using AgentQL query syntax or natural language prompts, with support for dynamic content loading, proxy routing, screenshots, lazy-load scrolling, and configurable browser profiles (light, stealth, tf-browser).Monitor API usage (
get_usage): Retrieve current API key usage statistics and subscription/quota details for the authenticated account.Create browser sessions (
create_browser_session): Spin up a new Tetra browser session with customizable user agent, browser profile, proxy settings, and lifecycle/shutdown behavior (idle timeout or on-disconnect).List browser session usage (
list_session_usage): Retrieve a paginated, filterable history of Tetra browser session usage records, with filters for session ID, sub-user, status (running/ended), and time range.
AgentQL MCP Server
Base URL: https://api.agentql.com
Category | Developer Tools |
Tools | 3 |
Auth | API Key |
Install
Quick Start (recommended)
API_KEY=YOUR_API_KEY \
uvx mcparmory-agentqlWith pip
pip install mcparmory-agentql
API_KEY=YOUR_API_KEY \
mcparmory-agentqlMCP Client Configuration
Add to your MCP client config (e.g. Claude Desktop, Cursor, Codex):
{
"mcpServers": {
"agentql": {
"command": "uvx",
"args": ["mcparmory-agentql"],
"env": {
"API_KEY": "YOUR_API_KEY"
}
}
}
}Related MCP server: Hyperbrowser MCP Server
Credentials
Set the following environment variables (via MCP client env config, shell export, or .env file):
API_KEY— API Key Authentication (X-API-Key)
Do not commit credentials to version control.
Run Locally
First, configure your credentials in .env (see Credentials above).
pip install -r requirements.txt
python server.pyConnect MCP Client
Edit .mcp.json and replace <SERVER_DIR> with the absolute path to this directory, then add to your MCP client configuration.
Example (if server is at /home/user/mcp-servers/agentql):
{
"mcpServers": {
"agentql": {
"command": "python",
"args": ["/home/user/mcp-servers/agentql/server.py"]
}
}
}Docker
Pre-built image (recommended)
docker run -p 8000:8000 \
-e API_KEY=YOUR_API_KEY \
ghcr.io/mcparmory/agentql:latestBuild from source
First, configure your credentials in .env (see Credentials above).
docker build -t agentql .
docker run -p 8000:8000 --env-file .env agentqlBefore running, make sure ports 8000 are free.### MCP client config (Docker)
For Docker, use SSE transport in your MCP client config:
{
"mcpServers": {
"agentql": {
"type": "sse",
"url": "http://localhost:8000/sse"
}
}
}Files
.env- Credentials and server configuration.mcp.json- MCP client config templateDockerfile- Container buildLICENSE- MIT license for this generated coderequirements.txt- Python dependenciesREADME.md- This fileserver.py- MCP server entry point_auth.py- Authentication handlers_models.py- Request/response models_validators.py- Input validation
Note: Files starting with . are hidden by default on macOS/Linux. Use ls -a in terminal or enable "Show hidden files" in your file manager to see .env and .mcp.json.
Available Tools
4 toolscreate_browser_sessionA
Creates a new Tetra browser session with configurable user agent, profile, proxy, and lifecycle settings. Returns session details needed to connect and interact with the browser.
| Name | Required | Description | Default |
|---|---|---|---|
| browser_ua_preset | No | The operating system user agent preset the browser will identify as, affecting how websites perceive the client environment. | |
| browser_profile | No | The browser profile determining capability and detection resistance: 'light' prioritizes speed with minimal overhead, 'stealth' enables full anti-detection features, and 'tf-browser' uses a custom TF Browser configuration. | |
| shutdown_mode | No | Controls session teardown behavior on disconnect: 'on_disconnect' immediately stops the session when all connections close, while 'on_inactivity_timeout' keeps the session alive to allow reconnection until the inactivity timeout elapses. | |
| inactivity_timeout_seconds | No | How long the session remains alive without active connections before being shut down, applicable when shutdown_mode is 'on_inactivity_timeout'. Accepts values between 5 seconds and 86400 seconds (24 hours). | |
| proxy | No | Proxy server configuration to route browser traffic through for this session, such as host, port, protocol, and credentials. | |
| sub_user_id | No | An optional identifier used to associate this session with a specific sub-user within your account, useful for tracking and auditing sessions across multiple users. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description carries full burden. It mentions configurable lifecycle settings and return of session details but lacks disclosure of side effects, destruction behavior, or authentication requirements. Basic transparency but not deep.
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 concise sentences, front-loaded with action and resource, no redundant information. Every word adds value.
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?
With 6 parameters (all described), no output schema, and no annotations, the description is brief. It does not detail return values or side effects, which would be helpful for a creation tool that returns connection details. Adequate but leaves 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 100%, so parameters are well-documented in schema. The description adds a high-level summary of configurable aspects but does not provide additional meaning beyond what schema already offers.
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 tool creates a new Tetra browser session, lists configurable aspects (user agent, profile, proxy, lifecycle), and mentions return value. It distinguishes from sibling tools which are about usage and data querying.
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?
No explicit guidance on when to use this tool vs alternatives or when not to use it. The description only explains what it does without any usage context or exclusion criteria.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_usageA
Retrieves current API key usage statistics and subscription details for the authenticated account. Useful for monitoring consumption limits and understanding remaining quota.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must stand alone. It states it retrieves data but omits whether it's read-only, rate limits, or response structure. Basic but not comprehensive.
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 action, no wasted words. Efficient and clear.
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?
No output schema, so description should detail return values; it does not specify what 'usage statistics' includes. Also missing idempotency and auth details beyond 'authenticated account'.
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?
No parameters exist, schema coverage is 100%. Baseline 3 per guidelines since schema covers all; description adds nothing beyond what schema already conveys.
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 it retrieves API key usage statistics and subscription details, with a specific verb and resource. The sibling tools (browser sessions, webpage data) are distinct, so no confusion.
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?
Explicitly says 'useful for monitoring consumption limits and understanding remaining quota', giving clear context. Does not mention when not to use, but siblings are unrelated, so no conflict.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_session_usageA
Retrieve a paginated list of Tetra browser session usage records for the authenticated user, with optional filtering by user, session, time range, and status.
| Name | Required | Description | Default |
|---|---|---|---|
| sub_user_id | No | Filter results to only include sessions belonging to a specific sub-user under the authenticated account. | |
| session_id | No | Filter results to a specific browser session by its unique session identifier. | |
| start_after | No | Return only sessions that started after this timestamp, specified in ISO 8601 date-time format. | |
| end_before | No | Return only sessions that ended before this timestamp, specified in ISO 8601 date-time format. | |
| status | No | Filter sessions by their current lifecycle status; use 'running' for active sessions or 'ended' for completed sessions. | |
| limit | No | Maximum number of session records to return per page; must be between 1 and 1000. | |
| page | No | Page number to retrieve for paginated results; must be 1 or greater. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It correctly identifies a paginated read operation with optional filtering, but lacks details on pagination behavior (e.g., default limit, total count) or any rate limits. Adequate but not comprehensive.
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?
The description is a single sentence with no redundancy. It front-loads the key action and resource, and efficiently lists the optional filters.
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?
With no output schema, the description should explain what each session usage record contains, but it does not. It also omits pagination details like how to iterate or interpret paginated responses. The tool is adequately described for its input, but incomplete for expected output.
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 baseline is 3. The description adds little beyond the schema, simply summarizing the filter categories (user, session, time range, status) that are already in the parameter descriptions.
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 tool retrieves a paginated list of session usage records for the authenticated user, with optional filters. It distinguishes from siblings like create_browser_session (creates sessions) and query_webpage_data (queries page data).
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 mentions the tool is for the authenticated user and lists optional filters, but does not explicitly state when to use it over alternatives or provide when-not scenarios. The context signals help, but more explicit guidance is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
query_webpage_dataB
Extracts structured data from a webpage using an AgentQL query or a natural language prompt. Accepts either a live URL or raw HTML as the data source.
| Name | Required | Description | Default |
|---|---|---|---|
| content-type | Yes | MIME type of the request body, required to correctly parse the payload. | |
| query | No | An AgentQL (AQL) query string specifying the exact data fields to extract from the page. If omitted, a query will be auto-generated from the prompt. | |
| prompt | No | A natural language description of the data to extract, used to auto-generate an AgentQL query when no explicit query is provided. | |
| url | No | The fully qualified URL of the webpage to load and query. Either url or html must be provided as the data source. | |
| html | No | Raw HTML content of the webpage to query, used as an alternative to providing a live URL. | |
| mode | No | Controls the response generation strategy: 'fast' prioritizes speed, 'standard' prioritizes accuracy and completeness. | |
| wait_for | No | Number of seconds to wait for dynamic page content to load before capturing the snapshot. Maximum allowed wait time is 10 seconds. | |
| is_scroll_to_bottom_enabled | No | When enabled, the browser scrolls to the bottom of the page before capturing the snapshot, useful for triggering lazy-loaded content. | |
| is_screenshot_enabled | No | When enabled, a screenshot of the page is captured during the query session, which may be useful for debugging or visual verification. | |
| browser_profile | No | Determines the browser profile used for the session: 'light' uses a fast headless browser, 'stealth' applies anti-detection techniques for bot-protected pages. | |
| proxy | No | Optional proxy configuration to route the browser session through a specific proxy server, useful for geo-restricted or access-controlled pages. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It fails to disclose critical behaviors such as whether the tool is read-only, rate limits, authentication needs, or error handling. Important details like what happens if both url and html are given are omitted.
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?
The description is a single 19-word sentence that packs the core purpose and data source options. Every word earns its place; no redundancy.
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?
With 11 parameters, no output schema, and no annotations, the description is too minimal. It omits what the output looks like, error scenarios, and behavioral nuances. A more comprehensive description is needed for this complex tool.
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%, and the description adds minimal extra meaning beyond the schema (e.g., 'AgentQL query or natural language prompt' is already in schema). Baseline 3 is appropriate as the description does not compensate for any missing schema detail.
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 'Extracts structured data from a webpage' using a query or prompt, and specifies data sources (URL or raw HTML). This is a specific verb+resource that distinguishes it from sibling tools like create_browser_session.
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 usage for data extraction but does not explicitly compare with siblings or give when-not-to-use guidance. It mentions query vs prompt options, which helps, but lacks exclusions or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Each tool targets a distinct functionality: browser session creation, API usage statistics, session usage records, and webpage data extraction. No overlap in purposes.
All tool names follow a consistent verb_noun snake_case pattern (create_browser_session, get_usage, list_session_usage, query_webpage_data).
4 tools is slightly below average but reasonable for the focused domain of browser automation and data extraction. Could benefit from additional lifecycle management tools.
Missing session deletion/closure (only create is provided) and session updating. Usage tracking is well covered, and webpage querying is present, but lifecycle is incomplete.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
AI-powered browser automation — navigate, click, fill forms, and extract data from any website.
Automate cloud browsers to navigate websites, interact with elements, and extract structured data.…
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
AI-powered web automation. Navigate websites using AI agents for one page or a thousand
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceProvides browser automation and web scraping capabilities including page navigation, form filling, data extraction, and intelligent conversion of web pages to Markdown format.1
- AlicenseNot gradedqualityNot gradedmaintenanceProvides tools to scrape, extract structured data, and crawl webpages, with access to browser automation agents like OpenAI's CUA, Anthropic's Claude Computer Use, and Browser Use for complex web tasks.
- AlicenseNot gradedqualityDmaintenanceProvides browser automation capabilities using Playwright, enabling users to navigate websites, extract content, take screenshots, and interact with web pages through natural language prompts.15MIT
- AlicenseNot gradedqualityDmaintenanceEnables browser automation and web scraping with multi-session management, supporting page navigation, element interaction, network request capture, and content extraction across multiple concurrent browser instances.14MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mcparmory/registry'
If you have feedback or need assistance with the MCP directory API, please join our Discord server