# Hermes Skill Builder for Apify & APIs (`solutionssmart/hermes-skill-builder-for-apify-apis`) Actor

Generate Hermes-ready AI agent skill packages from Apify Actors, API docs, GitHub repositories, and OpenAPI specs.

- **URL**: https://apify.com/solutionssmart/hermes-skill-builder-for-apify-apis.md
- **Developed by:** [Solutions Smart](https://apify.com/solutionssmart) (community)
- **Categories:** AI, Developer tools, Automation
- **Stats:** 2 total users, 2 monthly users, 100.0% runs succeeded, NaN bookmarks
- **User rating**: No ratings yet

## Pricing

Pay per event

This Actor is paid per event. You are not charged for the Apify platform usage, but only a fixed price for specific events.

Learn more: https://docs.apify.com/platform/actors/running/actors-in-store#pay-per-event

## What's an Apify Actor?

Actors are a software tools running on the Apify platform, for all kinds of web data extraction and automation use cases.
In Batch mode, an Actor accepts a well-defined JSON input, performs an action which can take anything from a few seconds to a few hours,
and optionally produces a well-defined JSON output, datasets with results, or files in key-value store.
In Standby mode, an Actor provides a web server which can be used as a website, API, or an MCP server.
Actors are written with capital "A".

## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
The best way to integrate Actors is as follows.

In JavaScript/TypeScript projects, use official [JavaScript/TypeScript client](https://docs.apify.com/api/client/js.md):

```bash
npm install apify-client
```

In Python projects, use official [Python client library](https://docs.apify.com/api/client/python.md):

```bash
pip install apify-client
```

In shell scripts, use [Apify CLI](https://docs.apify.com/cli/docs.md):

````bash
# MacOS / Linux
curl -fsSL https://apify.com/install-cli.sh | bash
# Windows
irm https://apify.com/install-cli.ps1 | iex
```bash

In AI frameworks, you might use the [Apify MCP server](https://docs.apify.com/platform/integrations/mcp.md).

If your project is in a different language, use the [REST API](https://docs.apify.com/api/v2.md).

For usage examples, see the [API](#api) section below.

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).


# README

## Hermes Skill Builder for Apify & APIs

### What does Hermes Skill Builder for Apify & APIs do?

Hermes Skill Builder transforms any Apify Actor, public API documentation page, GitHub repository, or OpenAPI specification into a production-ready agent skill package compatible with Hermes Agent and similar AI agent systems.

Instead of creating generic documentation summaries, this Actor generates structured, executable skill files that agents can understand, validate, and integrate immediately.

Hermes Skill Builder can generate skill packages for:

- Apify Actors with verified input schemas and executable connectors
- Public APIs with OpenAPI/Swagger specifications
- GitHub repositories with comprehensive README documentation
- Generic API documentation pages
- Custom services with structured specifications

### Why use Hermes Skill Builder?

Modern AI agents need more than documentation - they need structured, validated interfaces to external tools. Converting Apify Actors and APIs into skill packages makes them discoverable, testable, and reusable across agent workflows.

Here are some of the ways you could use Hermes Skill Builder:

- Build portable skill libraries for Hermes Agent without manual documentation work
- Create executable connectors for Apify Actors with verified schemas and cost safety profiles
- Convert OpenAPI specs into agent-ready packages with validation guidance
- Generate test prompts and examples for agent integration testing
- Package APIs as skill bundles for distribution across teams and organizations
- Create agent-native interfaces for legacy or undocumented services

If you would like more inspiration on how skill packages could help your AI agent workflows, check out the [Hermes Agent documentation](https://docs.hermes.ai).

### What does Hermes Skill Builder generate?

For each run, the Actor produces a dataset item containing:

- **SKILL.md** - Human-readable skill documentation with capabilities, usage, and warnings
- **manifest.json** - Skill metadata, capabilities, and cost safety profile
- **input_schema.json** - Validated JSON Schema for skill inputs
- **tool_call_contract.json** - Executable connector with run endpoints, secrets, validation rules, and agent interaction policy
- **examples.md** - Real-world usage examples
- **test_prompts.md** - Agent test prompts for skill validation
- **integration_notes.md** - Technical notes for integration and troubleshooting
- **Optional ZIP package** - All files bundled and stored in the default Key-Value Store
- **Stable output links** - Direct URLs to each file and the summary

The output is designed for Hermes Agent skill workflows and is compatible with other agent systems that use markdown instructions, JSON schemas, and structured manifests.

### How to use Hermes Skill Builder

It's easy to turn any Apify Actor or API into a Hermes-ready skill package. Just follow these steps:

1. Click **Try for free**
2. Paste your source URL (Apify Actor page, GitHub repo, API docs, or OpenAPI spec)
3. Choose optional settings like ZIP export and test prompt generation
4. Click **Run**
5. When complete, download files from the Dataset tab or import the ZIP into your Hermes Agent skills directory

### Supported sources

**Apify Actors**

Paste any Apify Actor URL, such as `https://apify.com/solutionssmart/google-maps-lead-scraper`. The Actor fetches public metadata, input schemas, and documentation to generate an executable connector with verified inputs, cost safety guidance, and agent interaction rules.

**GitHub repositories**

Paste a GitHub repo URL. The Actor extracts README content and file structure to build a skill package with detected capabilities and usage examples.

**OpenAPI/Swagger specifications**

Paste a direct OpenAPI/Swagger JSON or YAML URL. The Actor validates the spec and generates schemas, examples, and connector guidance.

**Generic API documentation**

Paste any public API documentation URL. The Actor parses visible headings, tables, and code blocks to infer capabilities, inputs, and outputs.

### Example input

```json
{
  "sourceUrl": "https://apify.com/solutionssmart/fast-google-map-scraper",
  "sourceType": "auto",
  "skillName": "fast_google_maps_scraper",
  "includeExamples": true,
  "includeTestPrompts": true,
  "exportZip": true,
  "maxPages": 3,
  "useBrowser": false,
  "llmProvider": "none"
}
````

### Example output

```json
{
  "sourceUrl": "https://apify.com/solutionssmart/fast-google-map-scraper",
  "sourceType": "apify_actor",
  "skillName": "fast_google_maps_scraper",
  "title": "Fast Google Map Scraper",
  "summary": "Hermes-ready skill package generated from the source.",
  "confidence": 0.95,
  "detectedCapabilities": ["Extract leads from a source workflow"],
  "files": {
    "SKILL.md": "## Fast Google Map Scraper\n...",
    "manifest.json": "{...}",
    "input_schema.json": "{...}",
    "tool_call_contract.json": "{...}",
    "examples.md": "...",
    "test_prompts.md": "...",
    "integration_notes.md": "..."
  },
  "zipKeyValueStoreUrl": "key-value-store://default/fast_google_maps_scraper.zip",
  "schemaVerified": true,
  "schemaSource": "apify_actor_metadata",
  "readiness": {
    "level": "executable",
    "canRunDirectly": true
  },
  "costSafetyProfile": {
    "recommendedTestInput": {...},
    "safeModeDefaults": {...}
  }
}
```

### How it works

1. **Source detection** - The Actor analyzes your URL and identifies the source type (Apify Actor, GitHub, OpenAPI, or generic docs)

2. **Metadata extraction** - For Apify Actors, it fetches public Actor metadata and verified input schemas from the Apify API. For other sources, it parses HTML, README files, or specs

3. **Skill generation** - The Actor generates all required files: SKILL.md, manifest.json, input\_schema.json, and more

4. **For Apify Actors, enhanced output:**
   - Executable `tool_call_contract.json` with Actor slug, API ID, run endpoints, and APIFY\_TOKEN handling
   - Conditional input validation for mode-based Actors
   - Agent interaction policy (which fields to ask, which to hide, which need warnings)
   - Cost safety profile with recommended test inputs and safe defaults
   - Field classification into basic, advanced, internal, and high-cost categories
   - Readiness level assessment (executable, validated, or draft)

5. **Optional enhancements** - Generate examples, test prompts, and ZIP export

All generation is deterministic and doesn't require an LLM API key. The Actor completes quickly on HTTP-first sources and stays cost-effective.

### For Apify Actors: Executable connectors

When the source is an Apify Actor, Hermes Skill Builder produces an **executable agent-tool connector** rather than a generic documentation draft.

The generated files include:

- **Verified input schema** - Sourced from official Apify Actor metadata when available, marked with `schemaVerified: true` and `schemaSource: apify_actor_metadata`

- **Agent interaction policy** - Tells agents which fields to ask by default, which to hide, which are expert-only, and which should trigger cost warnings

- **Conditional input requirements** - Helps agents validate mode-specific inputs before making paid or long-running calls. For example, a Google Maps Actor might require `query` and `searchLocation` in search mode, but only `placeId` in place mode

- **Cost safety profile** - Lists which fields can increase run cost, provides safe test inputs, and recommends using run-sync or async endpoints based on expected duration

- **Field classification** - Categorizes inputs as basic user fields, advanced fields, internal/debug fields, or high-cost fields so agents don't overwhelm users with options

- **Default mode and conditional-only fields** - Keeps normal conversations focused. For example, default to search mode and only ask for place-specific fields when the user chooses place mode

Readiness levels are:

- **executable** - Actor slug, endpoints, and verified input schema are available. The skill can run directly.
- **validated** - Actor slug and meaningful metadata are available, but schema is not fully verified.
- **draft** - Only heuristic extraction was possible (fallback for unavailable metadata).

### How to integrate skills into Hermes Agent

1. Download the generated ZIP or copy individual files from the dataset
2. Create a folder named after `skillName` in your Hermes Agent skills directory
3. Place all generated files in that folder
4. Refresh the agent skill loader
5. Test with prompts from `test_prompts.md`

For Apify Actor skills, agents will automatically understand:

- How to call the Actor with proper input validation
- Which inputs are required vs. optional
- Which fields might increase costs
- How to extract and handle results
- How to handle errors and retries

### Tips for using Hermes Skill Builder

- **Use OpenAPI specs for the highest quality output** - OpenAPI/Swagger specs produce the most complete and validated schemas
- **Test the skill immediately** - Use the included test prompts to verify the skill works with your agent before deploying
- **Review cost warnings** - For Apify Actors with expensive operations, check the cost safety profile and adjust defaults if needed
- **Export ZIP for easy distribution** - ZIP packages are easy to share, version, and integrate across multiple Hermes instances
- **Check integration notes** - The integration\_notes.md file contains important technical details for your specific source
- **Use conditional requirements for complex Actors** - If your Actor has multiple modes or conditional inputs, review the tool\_call\_contract.json to understand how agents should validate inputs

### Is it legal to use Hermes Skill Builder?

Hermes Skill Builder creates skill packages from publicly available sources. However, be aware:

- **Respect API terms of service** - Check the terms of any API or Apify Actor you're packaging. Some may restrict programmatic access or agent-based usage
- **Personal data protection** - Personal data is protected by GDPR in the European Union and by other regulations worldwide. Do not scrape or expose personal data unless you have a legitimate reason and proper consent
- **Attribution** - Some APIs and open-source projects require attribution. Check license requirements before distributing generated skills
- **Commercial use** - If you plan to monetize skills or the data they retrieve, ensure compliance with the underlying API's commercial use policy

For more guidance, read our blog post on [web scraping legality and ethics](https://blog.apify.com/is-web-scraping-legal/).

### Limitations

- JavaScript-heavy documentation may be incomplete without future browser support (currently HTTP-first only)
- Generic API documentation is inferred from visible headings, tables, and code blocks (may miss complex behaviors)
- OpenAPI specs produce the highest-confidence schemas; HTML parsing is a fallback
- GitHub parsing focuses on README content in the MVP (full repo analysis coming later)
- Optional LLM enhancement is reserved for future improvements and not required for useful output

### What makes this useful?

Hermes Skill Builder bridges the gap between existing developer tools and modern AI agent workflows. It turns static documentation, APIs, and Apify Actors into executable, validated, reusable skill packages. The result is:

- **Faster integration** - Agents understand your tool immediately without manual schema work
- **Safer execution** - Cost warnings, conditional validation, and safety profiles prevent expensive mistakes
- **Better agent behavior** - Structured interaction policies guide agents to ask better questions
- **Easier distribution** - ZIP packages and stable URLs make sharing skills simple
- **Portable skills** - Generated files work with Hermes Agent and other compatible agent systems

# Actor input Schema

## `sourceUrl` (type: `string`):

Apify Actor page, GitHub repo, API documentation page, or OpenAPI spec URL

## `sourceType` (type: `string`):

How to interpret the source URL. Use auto for normal runs.

## `skillName` (type: `string`):

Optional custom skill name. If empty, generate from source.

## `targetFormat` (type: `string`):

Skill package format to generate.

## `includeExamples` (type: `boolean`):

Generate examples.md with user prompts and JSON examples.

## `includeTestPrompts` (type: `boolean`):

Generate test\_prompts.md with validation and edge-case prompts.

## `includeOpenApiStyleSchema` (type: `boolean`):

For OpenAPI sources, include operation-oriented schema fields.

## `exportZip` (type: `boolean`):

Store a ZIP package with generated skill files in Key-Value Store.

## `maxPages` (type: `integer`):

Maximum same-site pages to fetch for documentation analysis.

## `useBrowser` (type: `boolean`):

Only enable for JavaScript-heavy pages. Increases cost.

## `llmProvider` (type: `string`):

Optional provider for future wording enhancement. Deterministic generation is used by default.

## `llmApiKey` (type: `string`):

Optional API key for OpenAI-compatible enhancement.

## `llmBaseUrl` (type: `string`):

Optional base URL for an OpenAI-compatible API.

## `llmModel` (type: `string`):

Optional model name for future wording enhancement.

## Actor input object example

```json
{
  "sourceUrl": "https://apify.com/solutionssmart/fast-google-map-scraper",
  "sourceType": "auto",
  "skillName": "fast_google_maps_scraper",
  "targetFormat": "hermes",
  "includeExamples": true,
  "includeTestPrompts": true,
  "includeOpenApiStyleSchema": true,
  "exportZip": true,
  "maxPages": 3,
  "useBrowser": false,
  "llmProvider": "none",
  "llmModel": "gpt-4o-mini"
}
```

# Actor output Schema

## `datasetItems` (type: `string`):

Main structured dataset output containing source metadata, detected fields, generated files, warnings, and monetization events.

## `skillPackageZip` (type: `string`):

ZIP archive containing the generated Hermes-ready skill package files.

## `skillMarkdown` (type: `string`):

Primary Hermes-ready skill instructions.

## `manifestJson` (type: `string`):

Generated skill package manifest.

## `inputSchemaJson` (type: `string`):

Generated JSON input schema for the skill.

## `toolCallContractJson` (type: `string`):

Executable tool-call contract for invoking the generated skill source.

## `examplesMarkdown` (type: `string`):

Generated usage examples for the skill.

## `testPromptsMarkdown` (type: `string`):

Generated manual validation prompts.

## `integrationNotesMarkdown` (type: `string`):

Generated integration notes for Hermes Agent and other skill-style agents.

## `outputSummary` (type: `string`):

Compact JSON summary of the generated skill package.

# API

You can run this Actor programmatically using our API. Below are code examples in JavaScript, Python, and CLI, as well as the OpenAPI specification and MCP server setup.

## JavaScript example

```javascript
import { ApifyClient } from 'apify-client';

// Initialize the ApifyClient with your Apify API token
// Replace the '<YOUR_API_TOKEN>' with your token
const client = new ApifyClient({
    token: '<YOUR_API_TOKEN>',
});

// Prepare Actor input
const input = {
    "sourceUrl": "https://apify.com/solutionssmart/fast-google-map-scraper",
    "sourceType": "auto",
    "skillName": "fast_google_maps_scraper",
    "targetFormat": "hermes",
    "includeExamples": true,
    "includeTestPrompts": true,
    "includeOpenApiStyleSchema": true,
    "exportZip": true,
    "maxPages": 3,
    "useBrowser": false,
    "llmProvider": "none",
    "llmModel": "gpt-4o-mini"
};

// Run the Actor and wait for it to finish
const run = await client.actor("solutionssmart/hermes-skill-builder-for-apify-apis").call(input);

// Fetch and print Actor results from the run's dataset (if any)
console.log('Results from dataset');
console.log(`💾 Check your data here: https://console.apify.com/storage/datasets/${run.defaultDatasetId}`);
const { items } = await client.dataset(run.defaultDatasetId).listItems();
items.forEach((item) => {
    console.dir(item);
});

// 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/js/docs

```

## Python example

```python
from apify_client import ApifyClient

# Initialize the ApifyClient with your Apify API token
# Replace '<YOUR_API_TOKEN>' with your token.
client = ApifyClient("<YOUR_API_TOKEN>")

# Prepare the Actor input
run_input = {
    "sourceUrl": "https://apify.com/solutionssmart/fast-google-map-scraper",
    "sourceType": "auto",
    "skillName": "fast_google_maps_scraper",
    "targetFormat": "hermes",
    "includeExamples": True,
    "includeTestPrompts": True,
    "includeOpenApiStyleSchema": True,
    "exportZip": True,
    "maxPages": 3,
    "useBrowser": False,
    "llmProvider": "none",
    "llmModel": "gpt-4o-mini",
}

# Run the Actor and wait for it to finish
run = client.actor("solutionssmart/hermes-skill-builder-for-apify-apis").call(run_input=run_input)

# Fetch and print Actor results from the run's dataset (if there are any)
print("💾 Check your data here: https://console.apify.com/storage/datasets/" + run["defaultDatasetId"])
for item in client.dataset(run["defaultDatasetId"]).iterate_items():
    print(item)

# 📚 Want to learn more 📖? Go to → https://docs.apify.com/api/client/python/docs/quick-start

```

## CLI example

```bash
echo '{
  "sourceUrl": "https://apify.com/solutionssmart/fast-google-map-scraper",
  "sourceType": "auto",
  "skillName": "fast_google_maps_scraper",
  "targetFormat": "hermes",
  "includeExamples": true,
  "includeTestPrompts": true,
  "includeOpenApiStyleSchema": true,
  "exportZip": true,
  "maxPages": 3,
  "useBrowser": false,
  "llmProvider": "none",
  "llmModel": "gpt-4o-mini"
}' |
apify call solutionssmart/hermes-skill-builder-for-apify-apis --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "command": "npx",
            "args": [
                "mcp-remote",
                "https://mcp.apify.com/?tools=solutionssmart/hermes-skill-builder-for-apify-apis",
                "--header",
                "Authorization: Bearer <YOUR_API_TOKEN>"
            ]
        }
    }
}

```

## OpenAPI specification

```json
{
    "openapi": "3.0.1",
    "info": {
        "title": "Hermes Skill Builder for Apify & APIs",
        "description": "Generate Hermes-ready AI agent skill packages from Apify Actors, API docs, GitHub repositories, and OpenAPI specs.",
        "version": "0.1",
        "x-build-id": "ryAZiLtfZp8fmm8cv"
    },
    "servers": [
        {
            "url": "https://api.apify.com/v2"
        }
    ],
    "paths": {
        "/acts/solutionssmart~hermes-skill-builder-for-apify-apis/run-sync-get-dataset-items": {
            "post": {
                "operationId": "run-sync-get-dataset-items-solutionssmart-hermes-skill-builder-for-apify-apis",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for its completion, and returns Actor's dataset items in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        },
        "/acts/solutionssmart~hermes-skill-builder-for-apify-apis/runs": {
            "post": {
                "operationId": "runs-sync-solutionssmart-hermes-skill-builder-for-apify-apis",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor and returns information about the initiated run in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK",
                        "content": {
                            "application/json": {
                                "schema": {
                                    "$ref": "#/components/schemas/runsResponseSchema"
                                }
                            }
                        }
                    }
                }
            }
        },
        "/acts/solutionssmart~hermes-skill-builder-for-apify-apis/run-sync": {
            "post": {
                "operationId": "run-sync-solutionssmart-hermes-skill-builder-for-apify-apis",
                "x-openai-isConsequential": false,
                "summary": "Executes an Actor, waits for completion, and returns the OUTPUT from Key-value store in response.",
                "tags": [
                    "Run Actor"
                ],
                "requestBody": {
                    "required": true,
                    "content": {
                        "application/json": {
                            "schema": {
                                "$ref": "#/components/schemas/inputSchema"
                            }
                        }
                    }
                },
                "parameters": [
                    {
                        "name": "token",
                        "in": "query",
                        "required": true,
                        "schema": {
                            "type": "string"
                        },
                        "description": "Enter your Apify token here"
                    }
                ],
                "responses": {
                    "200": {
                        "description": "OK"
                    }
                }
            }
        }
    },
    "components": {
        "schemas": {
            "inputSchema": {
                "type": "object",
                "required": [
                    "sourceUrl"
                ],
                "properties": {
                    "sourceUrl": {
                        "title": "Source URL",
                        "type": "string",
                        "description": "Apify Actor page, GitHub repo, API documentation page, or OpenAPI spec URL"
                    },
                    "sourceType": {
                        "title": "Source type",
                        "enum": [
                            "auto",
                            "apify_actor",
                            "github_repo",
                            "api_docs",
                            "openapi"
                        ],
                        "type": "string",
                        "description": "How to interpret the source URL. Use auto for normal runs.",
                        "default": "auto"
                    },
                    "skillName": {
                        "title": "Skill name",
                        "type": "string",
                        "description": "Optional custom skill name. If empty, generate from source."
                    },
                    "targetFormat": {
                        "title": "Target format",
                        "enum": [
                            "hermes",
                            "generic_agentskill"
                        ],
                        "type": "string",
                        "description": "Skill package format to generate.",
                        "default": "hermes"
                    },
                    "includeExamples": {
                        "title": "Include examples",
                        "type": "boolean",
                        "description": "Generate examples.md with user prompts and JSON examples.",
                        "default": true
                    },
                    "includeTestPrompts": {
                        "title": "Include test prompts",
                        "type": "boolean",
                        "description": "Generate test_prompts.md with validation and edge-case prompts.",
                        "default": true
                    },
                    "includeOpenApiStyleSchema": {
                        "title": "Include OpenAPI-style schema",
                        "type": "boolean",
                        "description": "For OpenAPI sources, include operation-oriented schema fields.",
                        "default": true
                    },
                    "exportZip": {
                        "title": "Export ZIP package",
                        "type": "boolean",
                        "description": "Store a ZIP package with generated skill files in Key-Value Store.",
                        "default": true
                    },
                    "maxPages": {
                        "title": "Max pages to analyze",
                        "minimum": 1,
                        "maximum": 10,
                        "type": "integer",
                        "description": "Maximum same-site pages to fetch for documentation analysis.",
                        "default": 3
                    },
                    "useBrowser": {
                        "title": "Use browser rendering",
                        "type": "boolean",
                        "description": "Only enable for JavaScript-heavy pages. Increases cost.",
                        "default": false
                    },
                    "llmProvider": {
                        "title": "Optional LLM provider",
                        "enum": [
                            "none",
                            "openai_compatible"
                        ],
                        "type": "string",
                        "description": "Optional provider for future wording enhancement. Deterministic generation is used by default.",
                        "default": "none"
                    },
                    "llmApiKey": {
                        "title": "Optional LLM API key",
                        "type": "string",
                        "description": "Optional API key for OpenAI-compatible enhancement."
                    },
                    "llmBaseUrl": {
                        "title": "Optional OpenAI-compatible base URL",
                        "type": "string",
                        "description": "Optional base URL for an OpenAI-compatible API."
                    },
                    "llmModel": {
                        "title": "Optional LLM model",
                        "type": "string",
                        "description": "Optional model name for future wording enhancement.",
                        "default": "gpt-4o-mini"
                    }
                }
            },
            "runsResponseSchema": {
                "type": "object",
                "properties": {
                    "data": {
                        "type": "object",
                        "properties": {
                            "id": {
                                "type": "string"
                            },
                            "actId": {
                                "type": "string"
                            },
                            "userId": {
                                "type": "string"
                            },
                            "startedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "finishedAt": {
                                "type": "string",
                                "format": "date-time",
                                "example": "2025-01-08T00:00:00.000Z"
                            },
                            "status": {
                                "type": "string",
                                "example": "READY"
                            },
                            "meta": {
                                "type": "object",
                                "properties": {
                                    "origin": {
                                        "type": "string",
                                        "example": "API"
                                    },
                                    "userAgent": {
                                        "type": "string"
                                    }
                                }
                            },
                            "stats": {
                                "type": "object",
                                "properties": {
                                    "inputBodyLen": {
                                        "type": "integer",
                                        "example": 2000
                                    },
                                    "rebootCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "restartCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "resurrectCount": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "computeUnits": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "options": {
                                "type": "object",
                                "properties": {
                                    "build": {
                                        "type": "string",
                                        "example": "latest"
                                    },
                                    "timeoutSecs": {
                                        "type": "integer",
                                        "example": 300
                                    },
                                    "memoryMbytes": {
                                        "type": "integer",
                                        "example": 1024
                                    },
                                    "diskMbytes": {
                                        "type": "integer",
                                        "example": 2048
                                    }
                                }
                            },
                            "buildId": {
                                "type": "string"
                            },
                            "defaultKeyValueStoreId": {
                                "type": "string"
                            },
                            "defaultDatasetId": {
                                "type": "string"
                            },
                            "defaultRequestQueueId": {
                                "type": "string"
                            },
                            "buildNumber": {
                                "type": "string",
                                "example": "1.0.0"
                            },
                            "containerUrl": {
                                "type": "string"
                            },
                            "usage": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "integer",
                                        "example": 1
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            },
                            "usageTotalUsd": {
                                "type": "number",
                                "example": 0.00005
                            },
                            "usageUsd": {
                                "type": "object",
                                "properties": {
                                    "ACTOR_COMPUTE_UNITS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATASET_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "KEY_VALUE_STORE_WRITES": {
                                        "type": "number",
                                        "example": 0.00005
                                    },
                                    "KEY_VALUE_STORE_LISTS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_READS": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "REQUEST_QUEUE_WRITES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_INTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "DATA_TRANSFER_EXTERNAL_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_RESIDENTIAL_TRANSFER_GBYTES": {
                                        "type": "integer",
                                        "example": 0
                                    },
                                    "PROXY_SERPS": {
                                        "type": "integer",
                                        "example": 0
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}
```
