Link Extractor for AI Agents
此 MCP 可以做什么
Extracts links, anchors, relationship flags, and link classifications from web pages.
工具
输入模式
{'type': 'object', 'required': ['runId'], 'properties': {'runId': {'type': 'string', 'minLength': 1, 'description': 'The ID of the Actor run to abort.'}, 'gracefully': {'type': 'boolean', 'description': 'If true, the Actor run will abort gracefully with a 30-second timeout.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['runId', 'actorId', 'status', 'storages', 'summary', 'nextStep'], 'properties': {'runId': {'type': 'string', 'description': 'Actor run ID'}, 'stats': {'type': 'object', 'properties': {'memMaxBytes': {'type': 'number'}, 'runTimeSecs': {'type': 'number'}, 'computeUnits': {'type': 'number'}}, 'description': 'Run statistics'}, 'status': {'type': 'string', 'description': 'Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED'}, 'actorId': {'type': 'string', 'description': 'Stable Apify Actor ID from the run record'}, 'summary': {'type': 'string', 'description': 'Past-tense summary of the run state'}, 'exitCode': {'type': 'number', 'description': 'Actor process exit code; populated for terminal states (especially FAILED)'}, 'nextStep': {'type': 'string', 'description': 'One primary follow-up action with identifiers interpolated'}, 'storages': {'type': 'object', 'properties': {'datasets': {'type': 'object', 'required': ['default'], 'properties': {'default': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Dataset ID'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Dataset field paths in dot notation (e.g. ["metadata.url"])'}, 'itemCount': {'type': 'number'}, 'inflatedBytes': {'type': 'number', 'description': 'Approximate uncompressed byte size of the dataset. Use with itemCount to pick limit/fields before fetching.'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the dataset; present only for Console sessions'}}}}, 'description': 'Map of dataset alias â\x86\x92 metadata. Key "default" is always the run\'s primary dataset.', 'additionalProperties': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Dataset ID'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Dataset field paths in dot notation (e.g. ["metadata.url"])'}, 'itemCount': {'type': 'number'}, 'inflatedBytes': {'type': 'number', 'description': 'Approximate uncompressed byte size of the dataset. Use with itemCount to pick limit/fields before fetching.'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the dataset; present only for Console sessions'}}}}, 'keyValueStores': {'type': 'object', 'required': ['default'], 'properties': {'default': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Key-value store ID'}, 'keys': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 50 key names'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'keyCount': {'type': 'number', 'description': 'Total number of keys (omitted when truncated)'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the store; present only for Console sessions'}}}}, 'description': 'Map of key-value store alias â\x86\x92 metadata. Key "default" is always the run\'s primary store.', 'additionalProperties': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Key-value store ID'}, 'keys': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 50 key names'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'keyCount': {'type': 'number', 'description': 'Total number of keys (omitted when truncated)'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the store; present only for Console sessions'}}}}}, 'description': 'Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry.'}, 'actorName': {'type': 'string', 'description': '"username/actor-name"'}, 'startedAt': {'type': 'string', 'description': 'ISO timestamp when the run started'}, 'finishedAt': {'type': 'string', 'description': 'ISO timestamp when the run finished (terminal states only)'}, 'statusMessage': {'type': 'string', 'description': 'Pass-through from Apify run.statusMessage'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the run; present only for Console sessions'}}}, {'type': 'object', 'required': ['x402Version', 'accepts'], 'properties': {'error': {'type': 'string'}, 'accepts': {'type': 'array', 'items': {'type': 'object'}}, 'resource': {'type': 'object'}, 'x402Version': {'type': 'number'}}}]}
输入模式
{'type': 'object', 'required': ['runId'], 'properties': {'runId': {'type': 'string', 'minLength': 1, 'description': 'The ID of the Actor run.'}, 'waitSecs': {'type': 'integer', 'default': 30, 'maximum': 45, 'minimum': 0, 'description': 'Maximum seconds to wait for the run to reach a terminal state (SUCCEEDED, FAILED, ABORTED, TIMED-OUT).\n0 returns immediately with the current status. Cap: 45. Default: 30.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['runId', 'actorId', 'status', 'storages', 'summary', 'nextStep'], 'properties': {'runId': {'type': 'string', 'description': 'Actor run ID'}, 'stats': {'type': 'object', 'properties': {'memMaxBytes': {'type': 'number'}, 'runTimeSecs': {'type': 'number'}, 'computeUnits': {'type': 'number'}}, 'description': 'Run statistics'}, 'status': {'type': 'string', 'description': 'Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED'}, 'actorId': {'type': 'string', 'description': 'Stable Apify Actor ID from the run record'}, 'summary': {'type': 'string', 'description': 'Past-tense summary of the run state'}, 'exitCode': {'type': 'number', 'description': 'Actor process exit code; populated for terminal states (especially FAILED)'}, 'nextStep': {'type': 'string', 'description': 'One primary follow-up action with identifiers interpolated'}, 'storages': {'type': 'object', 'properties': {'datasets': {'type': 'object', 'required': ['default'], 'properties': {'default': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Dataset ID'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Dataset field paths in dot notation (e.g. ["metadata.url"])'}, 'itemCount': {'type': 'number'}, 'inflatedBytes': {'type': 'number', 'description': 'Approximate uncompressed byte size of the dataset. Use with itemCount to pick limit/fields before fetching.'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the dataset; present only for Console sessions'}}}}, 'description': 'Map of dataset alias â\x86\x92 metadata. Key "default" is always the run\'s primary dataset.', 'additionalProperties': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Dataset ID'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Dataset field paths in dot notation (e.g. ["metadata.url"])'}, 'itemCount': {'type': 'number'}, 'inflatedBytes': {'type': 'number', 'description': 'Approximate uncompressed byte size of the dataset. Use with itemCount to pick limit/fields before fetching.'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the dataset; present only for Console sessions'}}}}, 'keyValueStores': {'type': 'object', 'required': ['default'], 'properties': {'default': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Key-value store ID'}, 'keys': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 50 key names'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'keyCount': {'type': 'number', 'description': 'Total number of keys (omitted when truncated)'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the store; present only for Console sessions'}}}}, 'description': 'Map of key-value store alias â\x86\x92 metadata. Key "default" is always the run\'s primary store.', 'additionalProperties': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Key-value store ID'}, 'keys': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 50 key names'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'keyCount': {'type': 'number', 'description': 'Total number of keys (omitted when truncated)'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the store; present only for Console sessions'}}}}}, 'description': 'Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry.'}, 'actorName': {'type': 'string', 'description': '"username/actor-name"'}, 'startedAt': {'type': 'string', 'description': 'ISO timestamp when the run started'}, 'finishedAt': {'type': 'string', 'description': 'ISO timestamp when the run finished (terminal states only)'}, 'statusMessage': {'type': 'string', 'description': 'Pass-through from Apify run.statusMessage'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the run; present only for Console sessions'}}}, {'type': 'object', 'required': ['x402Version', 'accepts'], 'properties': {'error': {'type': 'string'}, 'accepts': {'type': 'array', 'items': {'type': 'object'}}, 'resource': {'type': 'object'}, 'x402Version': {'type': 'number'}}}]}
输入模式
{'type': 'object', 'required': ['datasetId'], 'properties': {'desc': {'type': 'boolean', 'description': 'If true, results are returned in reverse order (newest to oldest).'}, 'omit': {'type': 'string', 'description': 'Comma-separated list of fields to exclude from results.'}, 'clean': {'type': 'boolean', 'description': 'If true, returns only non-empty items and skips hidden fields (starting with #). Shortcut for skipHidden=true and skipEmpty=true.'}, 'limit': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 1, 'description': 'Maximum number of items to return. Default is 20.'}, 'fields': {'type': 'string', 'description': 'Comma-separated list of fields to include in results. Fields in output are sorted as specified. Use dot notation for nested objects (e.g. "metadata.url"); the server auto-flattens parent prefixes.'}, 'offset': {'type': 'number', 'description': 'Number of items to skip at the start. Default is 0.'}, 'flatten': {'type': 'string', 'description': 'Comma-separated list of fields to flatten (e.g. flatten="metadata" turns {"metadata":{"url":"x"}} into {"metadata.url":"x"}). Normally derived automatically from dot-notation in `fields`; specify only as a diagnostic override.'}, 'datasetId': {'type': 'string', 'minLength': 1, 'description': 'Dataset ID or username~dataset-name.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['datasetId', 'items', 'itemCount', 'totalItemCount', 'offset', 'limit', 'summary', 'nextStep'], 'properties': {'items': {'type': 'array', 'items': {'type': 'object'}, 'description': 'Dataset items'}, 'limit': {'type': 'number', 'description': 'Limit used for pagination'}, 'offset': {'type': 'number', 'description': 'Offset used for pagination'}, 'summary': {'type': 'string', 'description': 'Summary of the result'}, 'nextStep': {'type': 'string', 'description': 'One follow-up action with tool name'}, 'datasetId': {'type': 'string', 'description': 'Dataset ID'}, 'itemCount': {'type': 'number', 'description': 'Number of items returned'}, 'totalItemCount': {'type': 'number', 'description': 'Total items in dataset'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the dataset; present only for Console sessions'}}}, {'type': 'object', 'required': ['x402Version', 'accepts'], 'properties': {'error': {'type': 'string'}, 'accepts': {'type': 'array', 'items': {'type': 'object'}}, 'resource': {'type': 'object'}, 'x402Version': {'type': 'number'}}}]}
输入模式
{'type': 'object', 'required': ['keyValueStoreId', 'recordKey'], 'properties': {'recordKey': {'type': 'string', 'minLength': 1, 'description': 'Key of the record to retrieve.'}, 'keyValueStoreId': {'type': 'string', 'minLength': 1, 'description': 'Key-value store ID or username~store-name.'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['keyValueStoreId', 'key', 'value', 'summary'], 'properties': {'key': {'type': 'string', 'description': 'Record key'}, 'value': {'description': 'The stored value (JSON, text, or binary)'}, 'summary': {'type': 'string', 'description': 'Summary of the result'}, 'contentType': {'type': 'string', 'description': 'MIME type of the stored value'}, 'keyValueStoreId': {'type': 'string', 'description': 'Key-value store ID'}}}, {'type': 'object', 'required': ['x402Version', 'accepts'], 'properties': {'error': {'type': 'string'}, 'accepts': {'type': 'array', 'items': {'type': 'object'}}, 'resource': {'type': 'object'}, 'x402Version': {'type': 'number'}}}]}
输入模式
{'$id': 'https://apify.com/mcp/industrial_platform--link-intelligence/schema.json', 'type': 'object', 'title': 'Link Intelligence input', 'required': ['urls'], 'properties': {'urls': {'type': 'array', 'items': {'type': 'string', 'maxLength': 2048}, 'title': 'URLs', 'prefill': ['https://example.com/'], 'examples': ['https://example.com/'], 'description': '**REQUIRED** Public HTTP/HTTPS pages to inspect. Up to 100 unique URLs per run.\nExample values: ["https://example.com/"]'}, 'waitSecs': {'type': 'integer', 'default': 30, 'maximum': 45, 'minimum': 0, 'description': 'Max seconds (0â\x80\x9345, default 30) to cap the wait for the Actor run to reach terminal state. For long-running Actors the response returns at the cap with the current run status; follow `nextStep` to poll via get-actor-run. Set to 0 to fire-and-forget.'}, 'concurrency': {'type': 'integer', 'title': 'Concurrency', 'default': 10, 'examples': [10], 'description': 'Maximum number of pages fetched concurrently.\nExample values: 10'}, 'deduplicate': {'type': 'boolean', 'title': 'Deduplicate target URLs', 'default': False, 'description': 'Return only the first occurrence of each normalized target URL.'}, 'timeout_seconds': {'type': 'integer', 'title': 'Per-URL timeout', 'default': 30, 'examples': [30], 'description': 'Maximum time allowed for each individual page fetch.\nExample values: 30'}, 'include_non_http': {'type': 'boolean', 'title': 'Include non-HTTP links', 'default': False, 'description': 'Include mailto:, tel:, javascript:, and other non-HTTP href values.'}, 'include_fragments': {'type': 'boolean', 'title': 'Keep URL fragments', 'default': False, 'description': 'Keep #fragment components in normalized HTTP/HTTPS URLs.'}, 'max_links_per_page': {'type': 'integer', 'title': 'Maximum returned links per page', 'default': 1000, 'examples': [1000], 'description': 'Maximum number of structured link records returned for each page.\nExample values: 1000'}}, 'additionalProperties': False}
输出模式
{'type': 'object', 'anyOf': [{'type': 'object', 'required': ['runId', 'actorId', 'status', 'storages', 'summary', 'nextStep'], 'properties': {'runId': {'type': 'string', 'description': 'Actor run ID'}, 'stats': {'type': 'object', 'properties': {'memMaxBytes': {'type': 'number'}, 'runTimeSecs': {'type': 'number'}, 'computeUnits': {'type': 'number'}}, 'description': 'Run statistics'}, 'status': {'type': 'string', 'description': 'Run status: READY | RUNNING | TIMING-OUT | TIMED-OUT | ABORTING | ABORTED | SUCCEEDED | FAILED'}, 'actorId': {'type': 'string', 'description': 'Stable Apify Actor ID from the run record'}, 'summary': {'type': 'string', 'description': 'Past-tense summary of the run state'}, 'exitCode': {'type': 'number', 'description': 'Actor process exit code; populated for terminal states (especially FAILED)'}, 'nextStep': {'type': 'string', 'description': 'One primary follow-up action with identifiers interpolated'}, 'storages': {'type': 'object', 'properties': {'datasets': {'type': 'object', 'required': ['default'], 'properties': {'default': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Dataset ID'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Dataset field paths in dot notation (e.g. ["metadata.url"])'}, 'itemCount': {'type': 'number'}, 'itemsSchema': {'type': 'object', 'properties': {'url': {'type': 'string'}, 'links': {'type': 'array', 'items': {'type': 'object', 'properties': {'rel': {'type': 'array', 'items': {}}, 'ugc': {'type': 'boolean'}, 'url': {'type': 'string'}, 'href': {'type': 'string'}, 'text': {'type': 'string'}, 'target': {'type': 'string'}, 'internal': {'type': 'boolean'}, 'location': {'type': 'string'}, 'nofollow': {'type': 'boolean'}, 'protocol': {'type': 'string'}, 'sponsored': {'type': 'boolean'}}}}, 'status': {'type': 'string'}, 'final_url': {'type': 'string'}, 'truncated': {'type': 'boolean'}, 'fetched_at': {'type': 'string'}, 'latency_ms': {'type': 'number'}, 'http_status': {'type': 'number'}, 'total_links': {'type': 'number'}, 'content_type': {'type': 'string'}, 'unique_links': {'type': 'number'}, 'eligible_links': {'type': 'number'}, 'external_links': {'type': 'number'}, 'internal_links': {'type': 'number'}, 'non_http_links': {'type': 'number'}, 'response_bytes': {'type': 'number'}, 'returned_links': {'type': 'number'}}, 'description': "JSON Schema for rows in the dataset at `storages.datasets.default.id` â\x80\x94 describes row shape only; the rows themselves are NOT returned inline in this response. Inferred from this Actor's historical successful runs. To fetch actual rows, call `get-dataset-items` with the dataset id and a `fields` projection drawn from this schema."}, 'inflatedBytes': {'type': 'number', 'description': 'Approximate uncompressed byte size of the dataset. Use with itemCount to pick limit/fields before fetching.'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the dataset; present only for Console sessions'}}}}, 'description': 'Map of dataset alias â\x86\x92 metadata. Key "default" is always the run\'s primary dataset.', 'additionalProperties': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Dataset ID'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Dataset field paths in dot notation (e.g. ["metadata.url"])'}, 'itemCount': {'type': 'number'}, 'inflatedBytes': {'type': 'number', 'description': 'Approximate uncompressed byte size of the dataset. Use with itemCount to pick limit/fields before fetching.'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the dataset; present only for Console sessions'}}}}, 'keyValueStores': {'type': 'object', 'required': ['default'], 'properties': {'default': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Key-value store ID'}, 'keys': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 50 key names'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'keyCount': {'type': 'number', 'description': 'Total number of keys (omitted when truncated)'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the store; present only for Console sessions'}}}}, 'description': 'Map of key-value store alias â\x86\x92 metadata. Key "default" is always the run\'s primary store.', 'additionalProperties': {'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Key-value store ID'}, 'keys': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Up to 50 key names'}, 'name': {'type': 'string'}, 'title': {'type': 'string'}, 'keyCount': {'type': 'number', 'description': 'Total number of keys (omitted when truncated)'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the store; present only for Console sessions'}}}}}, 'description': 'Dataset and key-value store metadata, keyed by alias. "default" is always the primary entry.'}, 'actorName': {'type': 'string', 'description': '"username/actor-name"'}, 'startedAt': {'type': 'string', 'description': 'ISO timestamp when the run started'}, 'finishedAt': {'type': 'string', 'description': 'ISO timestamp when the run finished (terminal states only)'}, 'statusMessage': {'type': 'string', 'description': 'Pass-through from Apify run.statusMessage'}, 'apifyConsoleUrl': {'type': 'string', 'description': 'Personalized Apify Console link to the run; present only for Console sessions'}}}, {'type': 'object', 'required': ['x402Version', 'accepts'], 'properties': {'error': {'type': 'string'}, 'accepts': {'type': 'array', 'items': {'type': 'object'}}, 'resource': {'type': 'object'}, 'x402Version': {'type': 'number'}}}]}
近期工具变更
类似的 MCP 服务器
TinyFn
Offers deterministic utility functions for mathematics, conversions, validation, hashing, encoding, arrays, dates, colors, and pa…
hyperion
Acts as a paid MCP tool marketplace and utility gateway with server discovery, HTTP and JavaScript tools, research, data conversi…
Andreax
Offers pay-per-call AI services for inference, agent and workflow design, OCR and transcription, code generation and review, clas…
Vee3
Manages Clerk authentication infrastructure, including users, organizations, domains, sessions, tokens, OAuth, SSO, machines, per…
Courier
Provides notification delivery infrastructure for users, tenants, lists, templates, preferences, journeys, automations, brands, a…
GripForge
Generates, rigs, animates, analyzes, and packages game characters, weapons, armor, effects, environments, and engine-ready assets.
IA-QA — 130+ QA & Dev Tools for AI Agents
Provides deterministic QA, evaluation, testing, code analysis, prompt and RAG checks, model comparison, and web security diagnost…
apis-io
Provides catalog search, comparison, scoring, enrichment, lists, and dataset exports for APIs, providers, specifications, workflo…