Skip to main content
Glama

MCP Macaco Playwright

Official
by macacoai
openapi.json20.5 kB
{ "openapi": "3.0.3", "info": { "title": "MCP Playwright Browser Automation API", "description": "Enhanced Playwright Tools for Model Context Protocol (MCP) with CDP Support. Provides browser automation capabilities including navigation, interaction, extraction, and testing.", "version": "0.0.34", "contact": { "name": "Gaston Zarate", "email": "gaston@macaco.ai", "url": "https://github.com/macacoai/mcp-playwright" }, "license": { "name": "MIT", "url": "https://opensource.org/licenses/MIT" } }, "servers": [ { "url": "https://macaco.ai", "description": "Qa Playwright Server" }, { "url": "http://localhost:8931", "description": "Local Development Server" } ], "paths": { "/mcp/browser_navigate": { "post": { "summary": "Navigate to URL", "description": "Navigate to a URL", "operationId": "browser_navigate", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "url": { "type": "string", "description": "The URL to navigate to" } }, "required": ["url"] } } } }, "responses": { "200": { "description": "Navigation successful", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_snapshot": { "post": { "summary": "Page snapshot", "description": "Capture accessibility snapshot of the current page, this is better than screenshot", "operationId": "browser_snapshot", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "Snapshot captured successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_click": { "post": { "summary": "Click", "description": "Perform click on a web page", "operationId": "browser_click", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "element": { "type": "string", "description": "Human-readable element description used to obtain permission to interact with the element" }, "ref": { "type": "string", "description": "Exact target element reference from the page snapshot" }, "doubleClick": { "type": "boolean", "description": "Whether to perform a double click instead of a single click" }, "button": { "type": "string", "enum": ["left", "right", "middle"], "description": "Button to click, defaults to left" } }, "required": ["element", "ref"] } } } }, "responses": { "200": { "description": "Click performed successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_type": { "post": { "summary": "Type text", "description": "Type text into editable element", "operationId": "browser_type", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "element": { "type": "string", "description": "Human-readable element description used to obtain permission to interact with the element" }, "ref": { "type": "string", "description": "Exact target element reference from the page snapshot" }, "text": { "type": "string", "description": "Text to type into the element" }, "slowly": { "type": "boolean", "description": "Whether to type one character at a time. Useful for triggering key handlers in the page. By default entire text is filled in at once." }, "submit": { "type": "boolean", "description": "Whether to submit entered text (press Enter after)" } }, "required": ["element", "ref", "text"] } } } }, "responses": { "200": { "description": "Text typed successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_press_key": { "post": { "summary": "Press key", "description": "Press a key on the keyboard", "operationId": "browser_press_key", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "key": { "type": "string", "description": "Name of the key to press or a character to generate, such as `ArrowLeft` or `a`" } }, "required": ["key"] } } } }, "responses": { "200": { "description": "Key pressed successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_select_option": { "post": { "summary": "Select option", "description": "Select an option in a dropdown", "operationId": "browser_select_option", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "element": { "type": "string", "description": "Human-readable element description used to obtain permission to interact with the element" }, "ref": { "type": "string", "description": "Exact target element reference from the page snapshot" }, "values": { "type": "array", "items": { "type": "string" }, "description": "Array of values to select in the dropdown. This can be a single value or multiple values." } }, "required": ["element", "ref", "values"] } } } }, "responses": { "200": { "description": "Option selected successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_wait_for": { "post": { "summary": "Wait for condition", "description": "Wait for text to appear or disappear or a specified time to pass", "operationId": "browser_wait_for", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "text": { "type": "string", "description": "The text to wait for" }, "textGone": { "type": "string", "description": "The text to wait for to disappear" }, "time": { "type": "number", "description": "The time to wait in seconds" } } } } } }, "responses": { "200": { "description": "Wait condition met", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_take_screenshot": { "post": { "summary": "Take screenshot", "description": "Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.", "operationId": "browser_take_screenshot", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "element": { "type": "string", "description": "Human-readable element description used to obtain permission to screenshot the element. If not provided, the screenshot will be taken of viewport. If element is provided, ref must be provided too." }, "ref": { "type": "string", "description": "Exact target element reference from the page snapshot. If not provided, the screenshot will be taken of viewport. If ref is provided, element must be provided too." }, "filename": { "type": "string", "description": "File name to save the screenshot to. Defaults to `page-{timestamp}.{png|jpeg}` if not specified." }, "fullPage": { "type": "boolean", "description": "When true, takes a screenshot of the full scrollable page, instead of the currently visible viewport. Cannot be used with element screenshots." }, "raw": { "type": "boolean", "description": "Whether to return without compression (in PNG format). Default is false, which returns a JPEG image." } } } } } }, "responses": { "200": { "description": "Screenshot taken successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_get_text": { "post": { "summary": "Get text content", "description": "Get text content or attribute value from a specific element on the page", "operationId": "browser_get_text", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "element": { "type": "string", "description": "Human-readable element description used to obtain permission to interact with the element" }, "ref": { "type": "string", "description": "Exact target element reference from the page snapshot" }, "attribute": { "type": "string", "description": "Optional attribute to get instead of text content (e.g., \"href\", \"src\", \"value\")" } }, "required": ["element", "ref"] } } } }, "responses": { "200": { "description": "Text content retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_console_messages": { "post": { "summary": "Get console messages", "description": "Returns all console messages", "operationId": "browser_console_messages", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "Console messages retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_network_requests": { "post": { "summary": "List network requests", "description": "Returns all network requests since loading the page", "operationId": "browser_network_requests", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "Network requests retrieved successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_tab_list": { "post": { "summary": "List tabs", "description": "List browser tabs", "operationId": "browser_tab_list", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": {} } } } }, "responses": { "200": { "description": "Tabs listed successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_tab_new": { "post": { "summary": "Open new tab", "description": "Open a new tab", "operationId": "browser_tab_new", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "url": { "type": "string", "description": "The URL to navigate to in the new tab. If not provided, the new tab will be blank." } } } } } }, "responses": { "200": { "description": "New tab opened successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_tab_close": { "post": { "summary": "Close tab", "description": "Close a tab", "operationId": "browser_tab_close", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "index": { "type": "number", "description": "The index of the tab to close. Closes current tab if not provided." } } } } } }, "responses": { "200": { "description": "Tab closed successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } }, "/mcp/browser_tab_select": { "post": { "summary": "Select tab", "description": "Select a tab by index", "operationId": "browser_tab_select", "requestBody": { "required": true, "content": { "application/json": { "schema": { "type": "object", "properties": { "index": { "type": "number", "description": "The index of the tab to select" } }, "required": ["index"] } } } }, "responses": { "200": { "description": "Tab selected successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ToolResponse" } } } } } } } }, "components": { "schemas": { "ToolResponse": { "type": "object", "properties": { "content": { "type": "array", "items": { "oneOf": [ { "$ref": "#/components/schemas/TextContent" }, { "$ref": "#/components/schemas/ImageContent" } ] }, "description": "The response content" }, "isError": { "type": "boolean", "description": "Whether this is an error response" } }, "required": ["content"] }, "TextContent": { "type": "object", "properties": { "type": { "type": "string", "enum": ["text"] }, "text": { "type": "string" } }, "required": ["type", "text"] }, "ImageContent": { "type": "object", "properties": { "type": { "type": "string", "enum": ["image"] }, "data": { "type": "string", "description": "Base64 encoded image data" }, "mimeType": { "type": "string", "description": "MIME type of the image" } }, "required": ["type", "data", "mimeType"] } }, "securitySchemes": { "bearerAuth": { "type": "http", "scheme": "bearer" } } }, "security": [ { "bearerAuth": [] } ] }

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/macacoai/mcp-playwright'

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