389 lines
9.5 KiB
JSON
389 lines
9.5 KiB
JSON
{
|
|
"schema_version": "2026-06-04",
|
|
"language": "python",
|
|
"name": "seleniumbase-website-scraper",
|
|
"description": "SeleniumBase-style browser agent that turns observed website traffic into OpenAPI specs, coverage reports, samples, and a replay client.",
|
|
"version": "0.3.0",
|
|
"entrypoint": {
|
|
"module": "agent",
|
|
"class_name": "BrowserToApiAgent",
|
|
"function": null,
|
|
"command": []
|
|
},
|
|
"skills": [
|
|
{
|
|
"name": "discover_api_from_browser",
|
|
"description": "Open a website in a browser, capture observable HTTP traffic, infer an OpenAPI 3.1 spec, and write a browsable API discovery report.",
|
|
"handler": "discover_api_from_browser",
|
|
"tags": [
|
|
"browser",
|
|
"seleniumbase",
|
|
"openapi",
|
|
"api-discovery"
|
|
],
|
|
"scopes": [],
|
|
"stream": false,
|
|
"policy": {
|
|
"timeout_seconds": 600.0,
|
|
"idempotent": false,
|
|
"max_retries": 0,
|
|
"cost_class": null,
|
|
"allow_scope_expansion": false,
|
|
"grant_mode": null,
|
|
"grant_allow_patterns": [],
|
|
"grant_deny_patterns": [],
|
|
"grant_outputs_prefix": null,
|
|
"grant_write_prefixes": [],
|
|
"grant_ttl_seconds": null,
|
|
"grant_run_timeout_seconds": null,
|
|
"grant_approval_timeout_seconds": null,
|
|
"grant_scope_approval_timeout_seconds": null
|
|
},
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"url": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"origins": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"include": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"exclude": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"wait_seconds": {
|
|
"type": "integer"
|
|
},
|
|
"max_clicks": {
|
|
"type": "integer"
|
|
},
|
|
"search_term": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"min_samples": {
|
|
"type": "integer"
|
|
},
|
|
"redact": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"browser_mode": {
|
|
"type": "string"
|
|
},
|
|
"captcha_policy": {
|
|
"type": "string"
|
|
},
|
|
"allowed_captcha_domains": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"ai_explore": {
|
|
"type": "boolean"
|
|
},
|
|
"ai_steps": {
|
|
"type": "integer"
|
|
},
|
|
"ai_goal": {
|
|
"anyOf": [
|
|
{
|
|
"type": "string"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"url"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"additionalProperties": true,
|
|
"type": "object"
|
|
}
|
|
},
|
|
{
|
|
"name": "discover_api_from_trace",
|
|
"description": "Replay request/response JSONL traffic into the same OpenAPI 3.1 discovery pipeline used by live browser capture.",
|
|
"handler": "discover_api_from_trace",
|
|
"tags": [
|
|
"trace",
|
|
"openapi",
|
|
"api-discovery"
|
|
],
|
|
"scopes": [],
|
|
"stream": false,
|
|
"policy": {
|
|
"timeout_seconds": 240.0,
|
|
"idempotent": false,
|
|
"max_retries": 0,
|
|
"cost_class": null,
|
|
"allow_scope_expansion": false,
|
|
"grant_mode": null,
|
|
"grant_allow_patterns": [],
|
|
"grant_deny_patterns": [],
|
|
"grant_outputs_prefix": null,
|
|
"grant_write_prefixes": [],
|
|
"grant_ttl_seconds": null,
|
|
"grant_run_timeout_seconds": null,
|
|
"grant_approval_timeout_seconds": null,
|
|
"grant_scope_approval_timeout_seconds": null
|
|
},
|
|
"input_schema": {
|
|
"type": "object",
|
|
"properties": {
|
|
"requests_jsonl": {
|
|
"type": "string"
|
|
},
|
|
"responses_jsonl": {
|
|
"type": "string"
|
|
},
|
|
"title": {
|
|
"type": "string"
|
|
},
|
|
"origins": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"include": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"exclude": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
},
|
|
"min_samples": {
|
|
"type": "integer"
|
|
},
|
|
"redact": {
|
|
"anyOf": [
|
|
{
|
|
"items": {
|
|
"type": "string"
|
|
},
|
|
"type": "array"
|
|
},
|
|
{
|
|
"type": "null"
|
|
}
|
|
]
|
|
}
|
|
},
|
|
"required": [
|
|
"requests_jsonl"
|
|
],
|
|
"additionalProperties": false
|
|
},
|
|
"output_schema": {
|
|
"additionalProperties": true,
|
|
"type": "object"
|
|
}
|
|
}
|
|
],
|
|
"capabilities": {
|
|
"browser_to_api": {
|
|
"capture": "Launches a browser, records XHR/fetch/document traffic with response bodies, then infers OpenAPI.",
|
|
"offline": "Can replay JSONL request/response captures into the same OpenAPI emitter.",
|
|
"outputs": [
|
|
"openapi.json",
|
|
"openapi.yaml",
|
|
"report.md",
|
|
"index.html",
|
|
"client.mjs",
|
|
"confidence.json",
|
|
"samples/*.json"
|
|
],
|
|
"noise_filtering": "Drops analytics, static assets, service workers, and obvious bot-defense plumbing by default.",
|
|
"schema_inference": "Infers request/response JSON schemas, query params, path params, GraphQL dispatches, and auth-shaped headers.",
|
|
"captcha_policy": "SeleniumBase solve_captcha is available only for a2acloud.io and subdomains.",
|
|
"llm_exploration": "Uses ctx.llm to choose bounded, non-destructive page actions after the page loads."
|
|
}
|
|
},
|
|
"input_modes": [
|
|
"application/json"
|
|
],
|
|
"output_modes": [
|
|
"application/json"
|
|
],
|
|
"required_secrets": [],
|
|
"required_env": [],
|
|
"consumer_setup": {
|
|
"fields": []
|
|
},
|
|
"runtime": {
|
|
"lifecycle": "ephemeral",
|
|
"availability": "on_demand",
|
|
"state": "none",
|
|
"sandbox": "microsandbox",
|
|
"resources": {
|
|
"cpu": "2000m",
|
|
"memory": "4Gi",
|
|
"gpu": 0,
|
|
"max_runtime_seconds": 900
|
|
},
|
|
"concurrency": 1,
|
|
"egress": {
|
|
"allow_hosts": [
|
|
"*"
|
|
],
|
|
"allow_internal_services": [],
|
|
"deny_internet_by_default": false
|
|
},
|
|
"tools_used": [
|
|
"seleniumbase",
|
|
"playwright",
|
|
"browser-to-api",
|
|
"openapi"
|
|
],
|
|
"llm_provisioning": "platform",
|
|
"pricing": {
|
|
"price_per_call_usd": 0.0,
|
|
"caller_pays_llm": false,
|
|
"notes": ""
|
|
},
|
|
"wants_cp_jwt": false,
|
|
"platform_resources": {
|
|
"memory": null,
|
|
"databases": []
|
|
},
|
|
"endpoints": [],
|
|
"apt_packages": []
|
|
},
|
|
"template_lineage": null,
|
|
"meta_agent_manifest": null,
|
|
"state_schema": null,
|
|
"workspace_access": {
|
|
"enabled": false,
|
|
"max_files": 0,
|
|
"allowed_modes": [],
|
|
"require_reason": true,
|
|
"deny_patterns": [],
|
|
"require_human_approval": false,
|
|
"max_total_size_bytes": 104857600
|
|
},
|
|
"config_schema": {
|
|
"properties": {},
|
|
"title": "BrowserToApiConfig",
|
|
"type": "object"
|
|
},
|
|
"auth": {
|
|
"model": "a2a_pack.auth.NoAuth",
|
|
"strategy": "public",
|
|
"principal_schema": {
|
|
"additionalProperties": false,
|
|
"description": "Public agent: no caller identity required.",
|
|
"properties": {},
|
|
"title": "NoAuth",
|
|
"type": "object"
|
|
},
|
|
"resolver": null,
|
|
"required": false
|
|
},
|
|
"metadata": {
|
|
"source": "python-a2a-pack",
|
|
"project_manifest": {
|
|
"name": "seleniumbase-website-scraper",
|
|
"version": "0.3.0",
|
|
"entrypoint": "agent:BrowserToApiAgent"
|
|
}
|
|
}
|
|
}
|