# Capability Contract Repair Bridge (`skilled_glee/echoempire-machine-foundry-1`) Actor

One of 22 EchoEmpire Machine Foundry Actors (catalog: foundry.echoempire.org). This one is a publisher tool: it repairs Apify Actor contracts. It is not a scraper. Repairs incomplete contracts into validated schemas, JSON Patch operations, capability cards, blockers, REST/Python/MCP metadata.

- **URL**: https://apify.com/skilled_glee/echoempire-machine-foundry-1.md
- **Developed by:** [EchoEmpire Machine Foundry (EchoEmpire LLC)](https://apify.com/skilled_glee) (community)
- **Security:** Limited permissions
- **Stats:** 2 total users, 1 monthly users, 100.0% runs succeeded, 0 bookmarks
- **User rating**: No ratings yet

## Pricing

$1.00 / 1,000 repair bundle produceds

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/actors/running/actors-in-store.md#pay-per-event

## What's an Apify Actor?

An Actor is a serverless cloud program that runs on the Apify platform. It has two run modes.
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.

Apify vocabulary and the platform model are defined once, in the agent quickstart at https://apify.com/agents.md.

## 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.

Do not guess an integration path. Every one of them is in the agent quickstart at https://apify.com/agents.md: the Apify MCP server, Agent Skills with the Apify CLI, the JavaScript and Python clients, the REST API, and the account-free path for an agent with no human to sign in. It also carries the rule on stating cost before the first paid run.

For examples already wired to this Actor's own input schema, see the [API](#api) section below.

Each client library has reference documentation the quickstart does not restate: [JavaScript/TypeScript](https://docs.apify.com/api/client/js/docs.md) (`npm install apify-client`) and [Python](https://docs.apify.com/api/client/python/docs.md) (`pip install apify-client`).

# README

## Capability Contract Repair Bridge

Give this Actor one to 25 incomplete Apify Actor capability contracts plus reviewed repair hints, and it returns deterministic repair bundles ready for human review.

Each bundle can contain a repaired input contract, output contract, dataset schema and overview view, capability card, RFC 6902 JSON Patch operations, private public-task drafts, REST/Python/hosted-MCP metadata, remaining blockers, and a stable SHA-256 digest.

### Why use it

- Repair missing structural contracts without an AI dependency.
- Convert output field hints into strict JSON Schema and an Apify dataset view.
- Convert reviewed capability terms into a machine-discoverable capability card.
- Validate public example inputs against the repaired input schema.
- Reject secret fields in public-task drafts.
- Keep one malformed contract from destroying a useful batch.
- Hand patches to CI, agents, or a repository review workflow as predictable JSON.

### Safety and authority

This Actor never edits source repositories, changes live Actors, publishes tasks, or claims live availability. It will not invent output fields, capabilities, or public use cases. Missing business semantics remain explicit blockers. Every bundle sets `humanReviewRequired: true`, and every generated task draft sets `isPublic: false`.

### Input

Submit `contracts`, an array of one to 25 objects. Each contract identifies an Actor and may include existing `inputSchema`, `outputContract`, `datasetSchema`, `provides`, and `useCases`. Use `repairHints` for reviewed `inputProperties`, `outputProperties`, required fields, capability terms, and use cases.

### Output

The default dataset stores one isolated result per submitted contract. `READY_FOR_REVIEW` means all required structural contracts were assembled and validated; it does not mean the repair was applied or published. `NEEDS_INPUT` identifies exact missing hints. `REJECTED` indicates malformed or unsafe input.

The `SUMMARY` key-value-store record reports submitted, ready, blocked, failed, repair, stored, and billed counts plus the batch digest.

### Billing

The custom `repair-bundle-produced` event is charged only after a valid repair bundle is stored. Rejected inputs are not charged. There is no Actor-start or default-dataset-item fee.

### Privacy and responsible use

Do not submit secrets. Contract data is written to the run's private Apify dataset and summary store under the permissions of the caller. Review every proposed patch before applying it to source or a public listing.

### API and agents

Run through the Apify API, `apify-client` for Python, or Apify's hosted MCP server. The strict output and stable digest are intended for CI gates, code-review agents, marketplace release automation, and contract registries.

Published by EchoEmpire Machine Foundry: Apify Actors for AI agents. Catalog: https://foundry.echoempire.org · Publisher: https://apify.com/skilled_glee

# Actor input Schema

## `contracts` (type: `array`):

One to 25 incomplete Actor contracts plus reviewed repair hints. Missing business semantics are returned as blockers rather than invented.

## Actor input object example

```json
{
  "contracts": [
    {
      "actorId": "example-actor-id",
      "ownerUsername": "example_owner",
      "slug": "page-metadata-extractor",
      "name": "Page Metadata Extractor",
      "description": "Turn public webpage URLs into structured metadata records.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "urls"
        ],
        "additionalProperties": false
      },
      "outputContract": null,
      "datasetSchema": null,
      "provides": [],
      "useCases": [],
      "repairHints": {
        "outputProperties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "requiredOutputs": [
          "url",
          "status"
        ],
        "capabilities": [
          "web-metadata-extraction"
        ],
        "useCases": [
          {
            "slug": "extract-page-metadata",
            "title": "Extract metadata from a webpage",
            "description": "Extract structured metadata from a public webpage.",
            "seoTitle": "Extract Webpage Metadata as JSON",
            "seoDescription": "Turn public webpage URLs into structured metadata records for APIs and AI agents.",
            "searchIntents": [
              "extract webpage metadata"
            ],
            "exampleInput": {
              "urls": [
                "https://example.com"
              ]
            },
            "visibleInputFields": [
              "urls"
            ],
            "datasetView": "overview"
          }
        ]
      }
    }
  ]
}
```

# Actor output Schema

## `bundles` (type: `string`):

No description

## `summary` (type: `string`):

No description

# 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 = {
    "contracts": [
        {
            "actorId": "example-actor-id",
            "ownerUsername": "example_owner",
            "slug": "page-metadata-extractor",
            "name": "Page Metadata Extractor",
            "description": "Turn public webpage URLs into structured metadata records.",
            "inputSchema": {
                "type": "object",
                "properties": {
                    "urls": {
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    }
                },
                "required": [
                    "urls"
                ],
                "additionalProperties": false
            },
            "outputContract": null,
            "datasetSchema": null,
            "provides": [],
            "useCases": [],
            "repairHints": {
                "outputProperties": {
                    "url": {
                        "type": "string",
                        "format": "uri"
                    },
                    "title": {
                        "type": "string"
                    },
                    "status": {
                        "type": "string"
                    }
                },
                "requiredOutputs": [
                    "url",
                    "status"
                ],
                "capabilities": [
                    "web-metadata-extraction"
                ],
                "useCases": [
                    {
                        "slug": "extract-page-metadata",
                        "title": "Extract metadata from a webpage",
                        "description": "Extract structured metadata from a public webpage.",
                        "seoTitle": "Extract Webpage Metadata as JSON",
                        "seoDescription": "Turn public webpage URLs into structured metadata records for APIs and AI agents.",
                        "searchIntents": [
                            "extract webpage metadata"
                        ],
                        "exampleInput": {
                            "urls": [
                                "https://example.com"
                            ]
                        },
                        "visibleInputFields": [
                            "urls"
                        ],
                        "datasetView": "overview"
                    }
                ]
            }
        }
    ]
};

// Run the Actor and wait for it to finish
const run = await client.actor("skilled_glee/echoempire-machine-foundry-1").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 = { "contracts": [{
            "actorId": "example-actor-id",
            "ownerUsername": "example_owner",
            "slug": "page-metadata-extractor",
            "name": "Page Metadata Extractor",
            "description": "Turn public webpage URLs into structured metadata records.",
            "inputSchema": {
                "type": "object",
                "properties": { "urls": {
                        "type": "array",
                        "items": { "type": "string" },
                    } },
                "required": ["urls"],
                "additionalProperties": False,
            },
            "outputContract": None,
            "datasetSchema": None,
            "provides": [],
            "useCases": [],
            "repairHints": {
                "outputProperties": {
                    "url": {
                        "type": "string",
                        "format": "uri",
                    },
                    "title": { "type": "string" },
                    "status": { "type": "string" },
                },
                "requiredOutputs": [
                    "url",
                    "status",
                ],
                "capabilities": ["web-metadata-extraction"],
                "useCases": [{
                        "slug": "extract-page-metadata",
                        "title": "Extract metadata from a webpage",
                        "description": "Extract structured metadata from a public webpage.",
                        "seoTitle": "Extract Webpage Metadata as JSON",
                        "seoDescription": "Turn public webpage URLs into structured metadata records for APIs and AI agents.",
                        "searchIntents": ["extract webpage metadata"],
                        "exampleInput": { "urls": ["https://example.com"] },
                        "visibleInputFields": ["urls"],
                        "datasetView": "overview",
                    }],
            },
        }] }

# Run the Actor and wait for it to finish
run = client.actor("skilled_glee/echoempire-machine-foundry-1").call(run_input=run_input)

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

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

```

## CLI example

```bash
echo '{
  "contracts": [
    {
      "actorId": "example-actor-id",
      "ownerUsername": "example_owner",
      "slug": "page-metadata-extractor",
      "name": "Page Metadata Extractor",
      "description": "Turn public webpage URLs into structured metadata records.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "urls": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "urls"
        ],
        "additionalProperties": false
      },
      "outputContract": null,
      "datasetSchema": null,
      "provides": [],
      "useCases": [],
      "repairHints": {
        "outputProperties": {
          "url": {
            "type": "string",
            "format": "uri"
          },
          "title": {
            "type": "string"
          },
          "status": {
            "type": "string"
          }
        },
        "requiredOutputs": [
          "url",
          "status"
        ],
        "capabilities": [
          "web-metadata-extraction"
        ],
        "useCases": [
          {
            "slug": "extract-page-metadata",
            "title": "Extract metadata from a webpage",
            "description": "Extract structured metadata from a public webpage.",
            "seoTitle": "Extract Webpage Metadata as JSON",
            "seoDescription": "Turn public webpage URLs into structured metadata records for APIs and AI agents.",
            "searchIntents": [
              "extract webpage metadata"
            ],
            "exampleInput": {
              "urls": [
                "https://example.com"
              ]
            },
            "visibleInputFields": [
              "urls"
            ],
            "datasetView": "overview"
          }
        ]
      }
    }
  ]
}' |
apify call skilled_glee/echoempire-machine-foundry-1 --silent --output-dataset

```

## MCP server setup

```json
{
    "mcpServers": {
        "apify": {
            "type": "http",
            "url": "https://mcp.apify.com/?tools=fetch-actor-details,skilled_glee/echoempire-machine-foundry-1"
        }
    }
}
```

The hosted server signs you in with OAuth on first connect, so no API token belongs in this config. Clients without OAuth support can send an `Authorization: Bearer <APIFY_API_TOKEN>` header instead, using a token from API & Integrations in Apify Console (https://console.apify.com/settings/integrations).

## OpenAPI specification

Download the OpenAPI definition: https://api.apify.com/v2/actors/PA71ChlJAGKBNfi3S/builds/dPQsmOWW84zbtgSnB/openapi.json
