Files
seleniumbase-website-scraper/.a2a/agent.dsl.json
a2a-platform dba211c8ed deploy
2026-06-27 23:49:33 +00:00

381 lines
9.4 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"
},
"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.",
"target_scope": "Public browser capture is restricted to a2acloud.io and subdomains.",
"captcha_policy": "SeleniumBase solve_captcha is fixed to 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": [
"a2acloud.io",
"www.a2acloud.io",
"blog.a2acloud.io",
"docs.a2acloud.io",
"api.a2acloud.io"
],
"allow_internal_services": [],
"deny_internet_by_default": true
},
"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"
}
}
}