AI Web Research & Research Brief Agent
What this MCP does
Performs cited, multi-source web research and returns synthesized research briefs.
Tools
Input schema
{'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}
Output schema
{'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'}}}]}
Input schema
{'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}
Output schema
{'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'}}}]}
Input schema
{'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}
Output schema
{'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'}}}]}
Input schema
{'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}
Output schema
{'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'}}}]}
Input schema
{'$id': 'https://apify.com/mcp/industrial_platform--research-brief-agent/schema.json', 'type': 'object', 'title': 'Research Brief Agent', 'required': ['research_question'], 'properties': {'context': {'type': 'string', 'title': 'Context', 'description': 'Optional decision context, constraints, audience, or background that should shape the research.'}, '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.'}, 'requirements': {'type': 'string', 'title': 'Additional requirements', 'description': 'Optional output and evidence requirements such as comparison criteria, source preferences, tables, calculations, citations, or unresolved-fact handling.'}, 'research_question': {'type': 'string', 'title': 'Research question', 'prefill': 'What are the current official Model Context Protocol transport options in the latest specification?', 'examples': ['What are the current official Model Context Protocol transport options in the latest specification?'], 'description': '**REQUIRED** REQUIRED. The current multi-source research question to investigate. Use a specific question that needs web research, comparison, verification, citations, or synthesis.\nExample values: "What are the current official Model Context Protocol transport options in the latest specification?"'}}, 'description': 'Generate a current, source-backed research brief from a question, optional context, and custom requirements.', 'additionalProperties': False}
Output schema
{'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': {'qa': {'type': 'object', 'properties': {'score': {'type': 'number'}, 'issues': {'type': 'array', 'items': {}}, 'revised': {'type': 'boolean'}, 'summary': {'type': 'string'}, 'verdict': {'type': 'string'}}}, 'brief': {'type': 'string'}, 'usage': {'type': 'object', 'properties': {'requests': {'type': 'number'}, 'input_tokens': {'type': 'number'}, 'total_tokens': {'type': 'number'}, 'output_tokens': {'type': 'number'}}}, 'status': {'type': 'string'}, 'research': {'type': 'object', 'properties': {'evidence_count': {'type': 'number'}, 'unresolved_questions': {'type': 'array', 'items': {}}}}, 'research_date': {'type': 'string'}, 'research_question': {'type': 'string'}}, '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'}}}]}
Recent tool changes
Similar MCP servers
osint-terminal
Provides keyless OSINT and reconnaissance tools for domains, DNS, IPs, breach exposure, threat intelligence, and related lookups.
LiveDataLink
Exposes public-data tools covering economics, labor, banking, transport, books, legal opinions, carriers, environmental data, and…
The Stall
Provides pay-per-call tools for YouTube keyword research and research on stocks, crypto, DeFi, options, and macroeconomic data.
Social Fetch
Retrieves public content and metadata from social networks, music services, Facebook Marketplace, events, profiles, posts, commen…
Stratalize Healthcare
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Governance
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Oracle
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…
Stratalize Real Estate
Retired Stratalize server exposing benchmark, market intelligence, compliance, financial, healthcare, legal, real estate, and eco…