playwright_post
Send HTTP POST requests with data payloads and headers using Playwright's browser automation capabilities for web interactions and testing.
Instructions
Perform an HTTP POST request
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | URL to perform POST operation | |
| value | Yes | Data to post in the body | |
| token | No | Bearer token for authorization | |
| headers | No | Additional headers to include in the request |
Implementation Reference
- src/tools/api/requests.ts:34-73 (handler)The PostRequestTool class containing the execute method that implements the core logic for performing HTTP POST requests using Playwright's APIRequestContext.export class PostRequestTool extends ApiToolBase { /** * Execute the POST request tool */ async execute(args: any, context: ToolContext): Promise<ToolResponse> { return this.safeExecute(context, async (apiContext) => { // Check if the value is valid JSON if it starts with { or [ if (args.value && typeof args.value === 'string' && (args.value.startsWith('{') || args.value.startsWith('['))) { try { JSON.parse(args.value); } catch (error) { return createErrorResponse(`Failed to parse request body: ${(error as Error).message}`); } } const response = await apiContext.post(args.url, { data: typeof args.value === 'string' ? JSON.parse(args.value) : args.value, headers: { 'Content-Type': 'application/json', ...(args.token ? { 'Authorization': `Bearer ${args.token}` } : {}), ...(args.headers || {}) } }); let responseText; try { responseText = await response.text(); } catch (error) { responseText = "Unable to get response text"; } return createSuccessResponse([ `POST request to ${args.url}`, `Status: ${response.status()} ${response.statusText()}`, `Response: ${responseText.substring(0, 1000)}${responseText.length > 1000 ? '...' : ''}` ]); }); } }
- src/tools.ts:254-271 (schema)Input schema definition for the playwright_post tool, specifying parameters like url, value, token, and headers.{ name: "playwright_post", description: "Perform an HTTP POST request", inputSchema: { type: "object", properties: { url: { type: "string", description: "URL to perform POST operation" }, value: { type: "string", description: "Data to post in the body" }, token: { type: "string", description: "Bearer token for authorization" }, headers: { type: "object", description: "Additional headers to include in the request", additionalProperties: { type: "string" } } }, required: ["url", "value"], }, },
- src/toolHandler.ts:523-538 (registration)Switch statement in handleToolCall function that registers and dispatches the playwright_post tool call to postRequestTool.execute.// API tools case "playwright_get": return await getRequestTool.execute(args, context); case "playwright_post": return await postRequestTool.execute(args, context); case "playwright_put": return await putRequestTool.execute(args, context); case "playwright_patch": return await patchRequestTool.execute(args, context); case "playwright_delete": return await deleteRequestTool.execute(args, context);
- src/tools.ts:476-482 (registration)API_TOOLS array listing playwright_post among API tools used for conditional context setup.export const API_TOOLS = [ "playwright_get", "playwright_post", "playwright_put", "playwright_delete", "playwright_patch" ];
- src/tools/index.ts:22-24 (schema)Re-export of API_TOOLS including playwright_post for tool categorization.export const API_TOOLS = [ "playwright_get", "playwright_post",