{"name":"com.newscatcherapi/catchall","slug":"newscatcherapi-catchall","title":"CatchAll","description":"Web search API: find every relevant event across the open web, not just the top results.","url":"https://mcp.market/server/newscatcherapi-catchall","rating":null,"grade":"B","score":83,"certified":false,"status":"active","category":"search","tags":["search"],"presence":{"score":23,"stars":1,"forks":1,"downloads_week":null,"last_push_at":"2026-09-22T09:47:33.000Z","license":"MIT"},"uptime":{"percent":100,"checks":28,"ok":28,"last_checked_at":"2026-11-04T04:25:48.559Z","last_ok_at":"2026-11-04T04:25:48.559Z","latency_ms":816},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":"https://github.com/Newscatcher/catchall-mcp","website":null,"version":"1.6.5","remotes":[{"type":"streamable-http","url":"https://catchall-mcp.newscatcherapi.com/mcp","headers":[{"description":"CatchAll API key from platform.newscatcherapi.com","isRequired":true,"isSecret":true,"name":"x-api-key"}]}],"packages":[],"tools":[{"name":"add_dataset_entities","description":"Add existing entities to a dataset.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"dataset_id":{"type":"string","description":"The dataset ID to add entities to."},"entity_ids":{"items":{"type":"string"},"type":"array","description":"List of entity IDs to add (required)."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["dataset_id","entity_ids"],"additionalProperties":false}},{"name":"add_project_resources","description":"Add one or more resources to a project.\n\nWebhooks are first-class project resources: a webhook can belong to several\nprojects at the same time, and deleting a project only detaches its\nwebhooks — it never deletes them.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","description":"The project ID to add resources to."},"resources":{"anyOf":[{"items":{"additionalProperties":{"type":"string"},"type":"object"},"type":"array"},{"type":"string"}],"description":"A list of resource objects, each `{\"resource_type\": ..., \"resource_id\": ...}`.\n`resource_type` is one of: 'job', 'monitor', 'dataset', 'monitor_group', 'webhook'.\nMay also be passed as a JSON-string array for client compatibility."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["project_id","resources"],"additionalProperties":false}},{"name":"append_csv_to_dataset","description":"Append entities from a CSV file to an existing dataset.\n\nParses the CSV and appends its entities to the dataset. Each row must\nhave a `name` column; include a `domain` or `description` column (or both)\nfor meaningful enrichment. Duplicate rows (by name) are skipped. To create\na new dataset from a CSV, use `create_dataset_from_csv` instead.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"dataset_id":{"type":"string","description":"The dataset ID to append entities to (required)."},"file":{"type":"string","description":"CSV content (required) — raw CSV text or standard base64-encoded\nCSV, capped at 10 MB after decoding. Server-side file paths are\nnot accepted."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["dataset_id","file"],"additionalProperties":false}},{"name":"assign_webhook_resource","description":"Map a resource (job, monitor, or monitor_group) to a webhook.\n\nUse when:\n- You want a webhook to fire for a specific job or monitor's deliveries.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"webhook_id":{"type":"string","description":"The webhook ID to attach the resource to."},"resource_type":{"type":"string","description":"Resource type: 'job', 'monitor', or 'monitor_group'."},"resource_id":{"type":"string","description":"The ID of the job/monitor/monitor_group to map."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["webhook_id","resource_type","resource_id"],"additionalProperties":false}},{"name":"check_health","description":"Check API health status.\n\nThis tool maps to GET /health and does not require an API key.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"Optional CatchAll API key."}},"additionalProperties":false}},{"name":"continue_job","description":"Expand a job by processing more records beyond the initial limit.\n\nThis increases the number of records the system processes (which costs\nadditional credits). Only use this when the user wants MORE data processed.\n\nThis only applies to jobs originally submitted with `limit`.\nIf a job was submitted without `limit`, there is nothing to continue.\nThe new_limit must be greater than the previous limit when provided.\nIf omitted, API defaults to your plan maximum.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"type":"string","description":"The job ID to continue processing"},"new_limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Optional new record processing limit (must exceed the previous limit if provided)."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["job_id"],"additionalProperties":false}},{"name":"create_dataset","description":"Create a new dataset.\n\nDatasets are collections of entities (companies/people). Connect a dataset to\na job via `submit_query(connected_dataset_ids=[...])` to narrow retrieval scope.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable dataset name (required)."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"description":{"default":"","type":"string","description":"Optional dataset description."},"entity_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional list of existing entity IDs to seed the dataset with."},"project_id":{"default":"","type":"string","description":"Optional project ID to associate this dataset with."}},"required":["name"],"additionalProperties":false}},{"name":"create_dataset_from_csv","description":"Create a new dataset by uploading a CSV file.\n\nThe CSV must have at least a `name` column. For meaningful entity\nenrichment each row should also include a `domain` column or a\n`description` column (or both) — a row with only a name is accepted but\nproduces lower-quality enrichment. Additional columns are mapped to entity\nattributes. Max file size is plan-dependent. To add CSV rows to an\nexisting dataset, use `append_csv_to_dataset` instead.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable dataset name (required)."},"file":{"type":"string","description":"CSV content (required) — raw CSV text or standard base64-encoded\nCSV, capped at 10 MB after decoding. Server-side file paths are\nnot accepted."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"description":{"default":"","type":"string","description":"Optional dataset description."},"project_id":{"default":"","type":"string","description":"Optional project ID to associate this dataset with (new in 1.6.1)."}},"required":["name","file"],"additionalProperties":false}},{"name":"create_entities_batch","description":"Create multiple entities in one call.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"entities":{"anyOf":[{"items":{"additionalProperties":true,"type":"object"},"type":"array"},{"type":"string"}],"description":"A list of entity objects. Each object requires a ``name``\nplus one identifying field for good enrichment: either a top-level\n``\"description\"`` or ``\"additional_attributes\": {\"company_attributes\": {\"domain\": \"...\"}}``.\nAlso accepts optional ``entity_type`` ('company'/'person').\nMay also be passed as a JSON-string array."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["entities"],"additionalProperties":false}},{"name":"create_entity","description":"Create a single entity (a company or person).\n\n``name`` is required plus at least one identifying\nfield: either ``description`` or ``additional_attributes.company_attributes.domain``.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Entity name (required)."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"entity_type":{"default":"","type":"string","description":"Optional entity type: 'company' (default) or 'person'."},"description":{"default":"","type":"string","description":"Optional description of the entity."},"external_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional customer-supplied identifier linking this entity to\nan external system's record (new in 1.6.3)."},"additional_attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional structured attributes. For companies, use\n`{\"company_attributes\": {\"alternative_names\": [...], \"domain\": \"...\",\n\"key_persons\": [...], \"description\": \"...\"}}`."}},"required":["name"],"additionalProperties":false}},{"name":"create_monitor","description":"Create a recurring monitor from a completed job.\n\nMonitors re-run a job's query on a schedule. Use the explore -> refine -> automate\npattern: submit a job, refine until results match, then create a monitor.\n\nThe schedule is defined in natural language (e.g., 'every day at 9 AM EST').\nAlways include a timezone (in the schedule text or via the `timezone` arg).\nAPI-enforced constraints apply:\n- If `backfill=true`, reference job end_date must be within the last 7 days\n- If `backfill=false`, reference job age does not matter\n- Minimum schedule frequency depends on your plan\n\nWebhooks are now centralized: register them with `create_webhook`, then pass\ntheir IDs here via `webhook_ids` (there is no inline webhook config anymore).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"reference_job_id":{"type":"string","description":"ID of a completed job to use as the template"},"schedule":{"type":"string","description":"Natural language schedule (e.g., 'every day at 9 AM EST', 'every Monday at 8 AM UTC', 'every 48 hours')"},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"timezone":{"default":"","type":"string","description":"Optional IANA timezone for the schedule (e.g. 'America/New_York').\nDefaults to UTC. A timezone written into the schedule text overrides this."},"webhook_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional list of webhook IDs to notify on each run completion (max 5)."},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Optional max records per run (minimum 10). If omitted, API uses plan default."},"backfill":{"default":true,"type":"boolean","description":"Optional gap-fill toggle before first run (default true)."},"project_id":{"default":"","type":"string","description":"Optional project ID to associate this monitor with."}},"required":["reference_job_id","schedule"],"additionalProperties":false}},{"name":"create_project","description":"Create a new project.\n\nProjects group related resources (jobs, monitors, datasets, monitor_groups)\nso you can organize work and filter listings by `project_id`.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable project name (required)."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"description":{"default":"","type":"string","description":"Optional project description."}},"required":["name"],"additionalProperties":false}},{"name":"create_webhook","description":"Create a new webhook endpoint.\n\nUse when:\n- You want to register a URL to receive job or monitor result deliveries.\n- You need a webhook_id to attach to a monitor (via webhook_ids) or a job submission.\n- You want the webhook associated with a project from the start (pass `project_id`).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"name":{"type":"string","description":"Human-readable name for the webhook (required)."},"url":{"type":"string","description":"Target URL that will receive webhook deliveries (required)."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"type":{"default":"","type":"string","description":"Optional webhook target type: 'generic' (default), 'slack', 'teams', or 'custom'.\n'slack'/'teams' send pre-formatted payloads; 'generic'/'custom' send the raw result payload."},"method":{"default":"POST","type":"string","description":"HTTP method for delivery (default 'POST'). One of GET, POST, PUT, PATCH, DELETE."},"delivery_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional delivery mode: 'full' (default, whole result set in one call)\nor 'per_record' (one call per article)."},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"description":"Optional dict of custom HTTP headers to include in deliveries."},"params":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"description":"Optional dict of query string parameters appended to the webhook URL."},"auth":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional auth object forwarded with each delivery. One of:\n- {\"type\": \"bearer\", \"token\": \"...\"}\n- {\"type\": \"api_key\", \"header\": \"X-API-Key\", \"value\": \"...\"}\n- {\"type\": \"basic\", \"username\": \"...\", \"password\": \"...\"}"},"formatter_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional custom payload transformation config dict."},"project_id":{"default":"","type":"string","description":"Optional project ID to associate this webhook with immediately\nupon creation. A webhook can belong to several projects at once; use\n`add_project_resources` (resource_type 'webhook') to attach it to more."}},"required":["name","url"],"additionalProperties":false}},{"name":"delete_dataset","description":"Permanently delete a dataset.\n\nThe entities the dataset referenced are not deleted; only the dataset and its\nentity associations are removed.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"dataset_id":{"type":"string","description":"The dataset ID to delete."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["dataset_id"],"additionalProperties":false}},{"name":"delete_entity","description":"Permanently delete an entity.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"entity_id":{"type":"string","description":"The entity ID to delete."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["entity_id"],"additionalProperties":false}},{"name":"delete_job","description":"Permanently delete a job and its results.\n\nUse when:\n- You want to remove a job you no longer need from your account.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"type":"string","description":"The job ID to delete."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["job_id"],"additionalProperties":false}},{"name":"delete_monitor","description":"Permanently delete a monitor and stop its scheduled runs.\n\nUse when:\n- You want to remove a monitor entirely (use `disable_monitor` to only pause it).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"monitor_id":{"type":"string","description":"The monitor ID to delete."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["monitor_id"],"additionalProperties":false}},{"name":"delete_project","description":"Delete a project.\n\nBy default the project's resources (jobs, monitors, etc.) are detached but\nkept. Set `delete_resources=true` to also delete the contained jobs,\nmonitors, datasets, and monitor groups. Webhooks are the exception: they\nare never deleted by this operation — an attached webhook is only detached\nfrom the project and keeps working (it may belong to other projects or\nresources independently of this one).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","description":"The project ID to delete."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"delete_resources":{"default":false,"type":"boolean","description":"If true, also delete the project's resources except\nwebhooks, which are always detached rather than deleted (default false)."}},"required":["project_id"],"additionalProperties":false}},{"name":"delete_webhook","description":"Permanently delete a webhook endpoint.\n\nUse when:\n- You want to remove a webhook from your account.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"webhook_id":{"type":"string","description":"The webhook ID to delete."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["webhook_id"],"additionalProperties":false}},{"name":"disable_monitor","description":"Disable a monitor to stop its scheduled runs.\n\nThe monitor can be re-enabled later with enable_monitor.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"monitor_id":{"type":"string","description":"The monitor ID to disable"},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["monitor_id"],"additionalProperties":false}},{"name":"enable_monitor","description":"Enable a previously disabled monitor to resume its scheduled runs.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"monitor_id":{"type":"string","description":"The monitor ID to enable"},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"backfill":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Optional backfill behavior for resume."}},"required":["monitor_id"],"additionalProperties":false}},{"name":"get_dataset","description":"Get a single dataset's details.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"dataset_id":{"type":"string","description":"The dataset ID to retrieve."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["dataset_id"],"additionalProperties":false}},{"name":"get_dataset_status","description":"Get the status history of a dataset (e.g. its enrichment progress over time).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"dataset_id":{"type":"string","description":"The dataset ID to inspect."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["dataset_id"],"additionalProperties":false}},{"name":"get_entity","description":"Get a single entity's details.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"entity_id":{"type":"string","description":"The entity ID to retrieve."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["entity_id"],"additionalProperties":false}},{"name":"get_job_status","description":"Check the status of a submitted job.\n\nCall this after submit_query to see if your job is ready.\nStatus progression: submitted -> analyzing -> fetching -> clustering -> enriching -> completed/failed\n\nIMPORTANT: Jobs take several minutes to process.\nFirst check after ~1-2 minutes, then poll every 30-60 seconds.\nBroad searches can take 10-30+ minutes; for long jobs, poll every 60-120 seconds.\nDo NOT call this tool in a tight loop.\nStop polling when status is `completed` or `failed`.\nTreat `submitted`, `analyzing`, `fetching`, `clustering`, and `enriching`\nas active states and continue polling.\n\nYou don't need to wait for completion to pull results. Partial results are\navailable during `enriching` — call pull_results after ~2 minutes, then\npoll status every 30-60 seconds and pull again for fresher results.\nDo not stop pulling just because an intermediate pull is empty/unchanged.\nUse `progress_validated` vs `candidate_records` to track whether more\nresults may still appear (`progress_validated < candidate_records`).\nIf transport/session fails, resume using the same `job_id`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"type":"string","description":"The job ID returned from submit_query"},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["job_id"],"additionalProperties":false}},{"name":"get_monitor_status","description":"Get the status history of a monitor.\n\nUse when:\n- You want to see the timeline of a monitor's state changes (e.g. active,\n  disabled, errored) and any related details.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"monitor_id":{"type":"string","description":"The monitor ID to inspect."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["monitor_id"],"additionalProperties":false}},{"name":"get_project","description":"Get a single project's details.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","description":"The project ID to retrieve."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["project_id"],"additionalProperties":false}},{"name":"get_project_overview","description":"Get a project's resource overview (counts grouped by resource type and status).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","description":"The project ID to summarize."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["project_id"],"additionalProperties":false}},{"name":"get_user_limits","description":"Retrieve plan features and current usage limits for your API key.\n\nUse when:\n- You want to know how many records/jobs/monitors your plan allows.\n- You want to check current usage against plan limits before running a large job.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"additionalProperties":false}},{"name":"get_version","description":"Get current API version.\n\nThis tool maps to GET /version and does not require an API key.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"Optional CatchAll API key."}},"additionalProperties":false}},{"name":"get_webhook","description":"Retrieve the full configuration of a specific webhook.\n\nUse when:\n- You want to inspect a webhook's URL, method, headers, or status by its ID.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"webhook_id":{"type":"string","description":"The webhook ID to retrieve."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["webhook_id"],"additionalProperties":false}},{"name":"get_webhook_history","description":"Get webhook delivery history, either for a resource or for a webhook.\n\nQuery in exactly one of two modes:\n- By resource: pass `resource_type` + `resource_id` to see deliveries made\n  for a specific job/monitor/monitor_group.\n- By webhook: pass `webhook_id` to see every delivery made through one\n  webhook — including manual test deliveries (from `test_webhook`), which\n  are not tied to a job or monitor and only appear in this mode.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"resource_type":{"default":"","type":"string","description":"Resource type: 'job', 'monitor', or 'monitor_group'.\nRequired together with `resource_id` when `webhook_id` is not given."},"resource_id":{"default":"","type":"string","description":"The ID of the job/monitor/monitor_group."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":50,"type":"integer","description":"Number of results per page (default: 50, max: 500)."},"webhook_id":{"default":"","type":"string","description":"Webhook ID to fetch history for. Mutually exclusive with\n`resource_type`/`resource_id`."}},"additionalProperties":false}},{"name":"initialize_query","description":"Preview suggested validators, enrichments, and date ranges before submitting.\n\nUse when:\n- You want to inspect/edit auto-generated validators/enrichments before submitting.\n- You want to preview date adjustments via `date_modification_message`.\n\nDo not use when:\n- You want to start processing immediately with final inputs (use `submit_query`).\n\nKey behavior:\n- Preview-only endpoint: does not create a job and does not start processing.\n- Suggestions are LLM-generated and not deterministic across calls.\n- To reuse suggestions, pass them explicitly to `submit_query`.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Natural language query to preview (required). If you plan to attach a\ncompany dataset via `connected_dataset_ids` in the subsequent `submit_query`,\ndo NOT reference the company list here — entity filtering is applied\nautomatically by the dataset, not by the query text."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"context":{"default":"","type":"string","description":"Optional guidance on what to prioritize so suggested validators,\nenrichments, and dates align with your target data points. If a company\ndataset will be attached in `submit_query`, note that entity-relevance\nvalidators (e.g. `company_is_primary_subject`) will be auto-generated —\ndo not ask for them here. Do not mention things like \"company list will be attached\".\nFocus on the event or topic only."},"fetch_all_watchlist_news":{"default":false,"type":"boolean","description":"When `True`, signals that the subsequent job will\nretrieve all news for connected watchlist entities without topic filtering.\nPass this when you intend to use `fetch_all_watchlist_news=True` in\n`submit_query` so the previewed validators/enrichments are generated\naccordingly. Requires `connected_dataset_ids` to be set in `submit_query`.\nDefault: `False`."}},"required":["query"],"additionalProperties":false}},{"name":"list_dataset_entities","description":"List the entities contained in a dataset.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"dataset_id":{"type":"string","description":"The dataset ID whose entities you want."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100)."},"search":{"default":"","type":"string","description":"Optional text filter on entity name."},"status":{"default":"","type":"string","description":"Optional status filter: 'pending', 'enriching', 'ready', or 'failed'."},"entity_type":{"default":"","type":"string","description":"Optional type filter: 'company' or 'person'."},"sort_by":{"default":"","type":"string","description":"Optional sort field: 'created_at', 'name', or 'status'."},"sort_order":{"default":"","type":"string","description":"Optional sort direction: 'asc' or 'desc'."}},"required":["dataset_id"],"additionalProperties":false}},{"name":"list_datasets","description":"List your datasets.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 1000)."},"search":{"default":"","type":"string","description":"Optional text filter on the dataset name."},"latest_status":{"default":"","type":"string","description":"Optional status filter: 'pending', 'enriching', 'ready', or 'failed'."},"sort_by":{"default":"","type":"string","description":"Optional sort field: 'name', 'created_at', or 'status'."},"sort_order":{"default":"","type":"string","description":"Optional sort direction: 'asc' or 'desc'."},"ownership":{"default":"","type":"string","description":"Optional ownership filter: 'all', 'own', or 'shared'."},"project_id":{"default":"","type":"string","description":"Optional filter to datasets belonging to a specific project."}},"additionalProperties":false}},{"name":"list_entities","description":"List your entities.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 1000)."},"search":{"default":"","type":"string","description":"Optional text filter on entity name."},"status":{"default":"","type":"string","description":"Optional status filter: 'pending', 'enriching', 'ready', or 'failed'."},"entity_type":{"default":"","type":"string","description":"Optional type filter: 'company' or 'person'."},"sort_by":{"default":"","type":"string","description":"Optional sort field: 'created_at', 'name', or 'status'."},"sort_order":{"default":"","type":"string","description":"Optional sort direction: 'asc' or 'desc'."},"project_id":{"default":"","type":"string","description":"Optional filter to entities belonging to a specific project."}},"additionalProperties":false}},{"name":"list_monitor_jobs","description":"List all jobs spawned by a monitor.\n\nReturns the history of scheduled runs for a monitor.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"monitor_id":{"type":"string","description":"The monitor ID to list jobs for"},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"sort":{"default":"asc","type":"string","description":"Sort order by start_date: 'asc' (default) or 'desc'"}},"required":["monitor_id"],"additionalProperties":false}},{"name":"list_monitors","description":"List all your monitors.\n\nReturns all monitors with their schedule, status, reference query, and webhook config.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 1000)."},"search":{"default":"","type":"string","description":"Optional text filter on the monitor query."},"ownership":{"default":"","type":"string","description":"Optional ownership filter: 'all', 'own', or 'shared'."},"project_id":{"default":"","type":"string","description":"Optional filter to monitors belonging to a specific project."}},"additionalProperties":false}},{"name":"list_project_resources","description":"List the resources contained in a project.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","description":"The project ID whose resources you want."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"resource_type":{"default":"","type":"string","description":"Optional filter: 'job', 'monitor', 'dataset', 'monitor_group', or 'webhook'."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 1000)."}},"required":["project_id"],"additionalProperties":false}},{"name":"list_projects","description":"List your projects.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 1000)."},"search":{"default":"","type":"string","description":"Optional text filter on the project name."},"ownership":{"default":"","type":"string","description":"Optional ownership filter: 'all', 'own', or 'shared'."}},"additionalProperties":false}},{"name":"list_resource_webhooks","description":"List the webhooks mapped to a specific resource (job/monitor/monitor_group).\n\nUse when:\n- You have a job or monitor ID and want to know which webhooks will fire for it.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"resource_type":{"type":"string","description":"Resource type: 'job', 'monitor', or 'monitor_group'."},"resource_id":{"type":"string","description":"The ID of the job/monitor/monitor_group."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Optional filter — only active (true) or inactive (false) webhooks."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 1000)."}},"required":["resource_type","resource_id"],"additionalProperties":false}},{"name":"list_source_groups","description":"List source groups (named domain allowlists).\n\nUse when:\n- You want to discover reusable, named sets of source domains (public groups\n  plus any organization-visibility groups your organization can access).\n- You need a group's `slug` to attach to `submit_query` via `source_groups`\n  to scope fetching to that domain allowlist.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 500)."}},"additionalProperties":false}},{"name":"list_user_jobs","description":"List all jobs submitted by you.\n\nReturns your job history with IDs, queries, statuses, and timestamps.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)"},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 1000)"},"search":{"default":"","type":"string","description":"Optional text filter on the job query."},"ownership":{"default":"","type":"string","description":"Optional ownership filter: 'all', 'own', or 'shared'."},"project_id":{"default":"","type":"string","description":"Optional filter to jobs belonging to a specific project."},"mode":{"default":"","type":"string","description":"Optional filter by job processing mode: 'base' or 'lite'."}},"additionalProperties":false}},{"name":"list_webhook_resources","description":"List the resources mapped to a webhook.\n\nUse when:\n- You want to see which jobs/monitors a webhook is attached to.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"webhook_id":{"type":"string","description":"The webhook ID whose resource mappings you want."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"resource_type":{"default":"","type":"string","description":"Optional filter: 'job', 'monitor', or 'monitor_group'."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 1000)."}},"required":["webhook_id"],"additionalProperties":false}},{"name":"list_webhooks","description":"List all your webhooks.\n\nUse when:\n- You want to see all webhook endpoints configured in your account.\n- You need to find a webhook_id to pass to monitors (via webhook_ids) or jobs.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1)."},"page_size":{"default":100,"type":"integer","description":"Number of results per page (default: 100, max: 1000)."},"project_id":{"default":"","type":"string","description":"Optional filter to webhooks belonging to a specific project."}},"additionalProperties":false}},{"name":"pull_job_csv","description":"Download a job's results as a CSV file.\n\nUse when:\n- You want the full job output as a CSV for offline analysis or export.\n- Prefer this over `pull_results` when the consumer needs spreadsheet/CSV format.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"type":"string","description":"The job ID to download as CSV."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["job_id"],"additionalProperties":false}},{"name":"pull_monitor_csv","description":"Download the latest monitor run's results as a CSV file.\n\nUse when:\n- You want the most recent monitor run output as a CSV for offline analysis or export.\n- Prefer this over `pull_monitor_results` when the consumer needs spreadsheet/CSV format.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"monitor_id":{"type":"string","description":"The monitor ID to download results for."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["monitor_id"],"additionalProperties":false}},{"name":"pull_monitor_results","description":"Retrieve the latest results from a monitor.\n\nReturns the most recent run's results including run_info, records, and all_records.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"monitor_id":{"type":"string","description":"The monitor ID to pull results from"},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["monitor_id"],"additionalProperties":false}},{"name":"pull_results","description":"Retrieve the results of a job.\n\nCan be called before completion for partial results, or after completion\nfor the full set. Returns clustered, validated, and enriched web results.\nWhile job status is active, call this repeatedly (typically page=1) to\nrefresh partial output. When job reaches completed, iterate all pages.\nIf job fails, call once more to capture any partial output.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"job_id":{"type":"string","description":"The job ID returned from submit_query"},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"page":{"default":1,"type":"integer","description":"Page number for pagination (default: 1). Use total_pages from the response to iterate through all results."},"page_size":{"default":100,"type":"integer","description":"Number of records returned per page (default: 100, max: 1000)."}},"required":["job_id"],"additionalProperties":false}},{"name":"remove_dataset_entities","description":"Remove entities from a dataset (the entities themselves are not deleted).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"dataset_id":{"type":"string","description":"The dataset ID to remove entities from."},"entity_ids":{"items":{"type":"string"},"type":"array","description":"List of entity IDs to remove (required)."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["dataset_id","entity_ids"],"additionalProperties":false}},{"name":"remove_project_resource","description":"Remove a single resource from a project.\n\nThis detaches the resource from the project without deleting the resource\nitself (e.g. removing a webhook only ends its membership in this project;\nthe webhook keeps existing and stays attached to any other projects).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","description":"The project ID to remove the resource from."},"resource_type":{"type":"string","description":"Resource type: 'job', 'monitor', 'dataset', 'monitor_group', or 'webhook'."},"resource_id":{"type":"string","description":"The ID of the resource to remove."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["project_id","resource_type","resource_id"],"additionalProperties":false}},{"name":"remove_webhook_resource","description":"Unmap a resource from a webhook.\n\nUse when:\n- You want to stop a webhook from firing for a specific job or monitor.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"webhook_id":{"type":"string","description":"The webhook ID to detach the resource from."},"resource_type":{"type":"string","description":"Resource type: 'job', 'monitor', or 'monitor_group'."},"resource_id":{"type":"string","description":"The ID of the mapped job/monitor/monitor_group."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["webhook_id","resource_type","resource_id"],"additionalProperties":false}},{"name":"submit_query","description":"Create a new CatchAll processing job from a natural-language query.\n\nUse when:\n- You want to start a new CatchAll web research run from a user query.\n- You want the API to fetch/process sources and then return structured results.\n\nDo not use when:\n- You want status for an existing job (use `get_job_status`).\n- You want records for an existing job (use `pull_results`).\n\nKey rules:\n- `query` is required.\n- You can submit with only `query`; omitted optional fields (`validators`, `enrichments`, `start_date`, `end_date`) are auto-selected/generated by the API.\n- Optional fields are independent: you can pass any subset (for example, custom `validators` but no `enrichments`), and omitted fields are still auto-selected/generated.\n- When `connected_dataset_ids` is set, the `query` must describe the **topic or event type only**\n  (e.g. \"M&A activity\", \"regulatory filings\", \"executive changes\"). Do NOT write things like\n  \"for my companies\", \"for the selected list of companies\", or \"news about my watchlist\" — the\n  entity filtering is applied automatically by the connected dataset. Mentioning companies in\n  the query when a dataset is attached is redundant and degrades retrieval quality.\n- When `connected_dataset_ids` is set, entity-relevance validators (e.g.\n  `company_is_primary_subject`) are generated automatically by the API. Do NOT add them\n  manually to `validators` — they are redundant and may conflict with the auto-generated ones.\n  Only pass validators that describe the **event or topic**, not entity filtering.\n- `start_date` and `end_date` filter by web page discovery date, not event date.\n- Discovery dates and extracted event dates can differ. For event-time accuracy, use event-focused validators/enrichments and verify `event_date` in pulled results.\n- `end_date` must be after `start_date`.\n- Dates outside your plan lookback limits return API 400.\n- `limit` controls processed record count (cost-affecting). Omit it to retrieve everything\n  up to your plan's maximum. If provided, must be >= 10.\n- `validators` / `enrichments` may be passed either as arrays or as JSON-string arrays (for client compatibility).\n- `validators[].type` must be `boolean` (if omitted, it defaults to `boolean`).\n- `enrichments[].type` supported values: text, number, date, option, url, company.\n\nBasic examples:\n- validators:\n  `[{\"name\":\"is_acquisition_event\",\"description\":\"true if page describes an acquisition\",\"type\":\"boolean\"}]`\n- enrichments:\n  `[{\"name\":\"acquiring_company\",\"description\":\"Extract acquiring company\",\"type\":\"company\"},{\"name\":\"deal_value\",\"description\":\"Extract announced deal value\",\"type\":\"number\"}]`\n\nNext step:\n- Save the returned `job_id`.\n- Poll `get_job_status` and call `pull_results` (partial results can appear before completion).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"Plain text search intent (required)."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"context":{"default":"","type":"string","description":"Optional guidance on what to prioritize (for example, target entities,\nevent types, and specific data points you want captured in enrichments).\nIf a company dataset will be attached, note that entity-relevance\nvalidators (e.g. `company_is_primary_subject`) will be auto-generated —\ndo not ask for them here. Do not mention things like \"company list will be attached\"."},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Optional processing cap (minimum 10); affects cost. Omit to retrieve everything\nup to your plan's maximum."},"start_date":{"default":"","type":"string","description":"Optional ISO 8601 UTC start of search window."},"end_date":{"default":"","type":"string","description":"Optional ISO 8601 UTC end of search window."},"validators":{"anyOf":[{"items":{"description":"Schema for a custom validator.","properties":{"name":{"type":"string"},"description":{"type":"string"},"type":{"const":"boolean","type":"string"}},"required":["name","description","type"],"type":"object"},"type":"array"},{"type":"string"},{"type":"null"}],"default":null,"description":"Optional custom boolean validators (`name`, `description`, `type`), as array or JSON-string array.\nWhen `connected_dataset_ids` is set, do NOT include entity-relevance validators such as\n`company_is_primary_subject` — the API generates those automatically. Only add validators\nthat describe the event or topic (e.g. `is_acquisition_event`)."},"enrichments":{"anyOf":[{"items":{"description":"Schema for a custom enrichment.","properties":{"name":{"type":"string"},"description":{"type":"string"},"type":{"enum":["text","number","date","option","url","company"],"type":"string"}},"required":["name","description","type"],"type":"object"},"type":"array"},{"type":"string"},{"type":"null"}],"default":null,"description":"Optional custom enrichments (`name`, `description`, `type`), as array or JSON-string array."},"mode":{"default":"","type":"string","description":"Optional job processing mode: `\"lite\"` (faster, lower cost, less detail) or `\"base\"` (default,\nfull extraction). If omitted, the API defaults to `\"base\"`."},"project_id":{"default":"","type":"string","description":"Optional project ID to associate this job with."},"webhook_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional list of webhook IDs to notify when the job completes (max 5 per job).\nUse `list_webhooks` / `create_webhook` to get IDs."},"schema":{"default":"","type":"string","description":"Optional advanced custom JSON schema string that overrides the default extraction\nschema. Use `initialize_query` to discover a suitable schema."},"connected_dataset_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional list of dataset IDs whose entities narrow the retrieval\nscope. When set: (1) entity filtering is applied automatically — do NOT mention the\ncompany list or watchlist in `query`; (2) entity-relevance validators such as\n`company_is_primary_subject` are generated automatically — do NOT add them to\n`validators`. `ed_score_min` defaults to 2 if not provided."},"ed_score_min":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Optional minimum entity-domain relevance score (1-10). Only relevant when\n`connected_dataset_ids` is set."},"ed_association_type":{"default":"","type":"string","description":"Optional filter on how strongly a watchlist entity must appear in\neach event. Only relevant when `connected_dataset_ids` is set.\n- `\"event_associated\"`: keep only events where the entity is a **direct actor** (default when connected_dataset_ids is set).\n- `\"mention\"`: keep all even where the entity is **merely referenced**."},"fetch_all_watchlist_news":{"default":false,"type":"boolean","description":"When `True`, retrieves **all** news for connected watchlist\nentities without applying topic filtering from `query`. Requires\n`connected_dataset_ids` to be set. Default: `False`."}},"required":["query"],"additionalProperties":false}},{"name":"test_webhook","description":"Send a test delivery to a webhook endpoint.\n\nUse when:\n- You want to verify a webhook URL is reachable and correctly configured\n  before attaching it to a monitor or job.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"webhook_id":{"type":"string","description":"The webhook ID to test."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"payload":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional custom JSON object to send as the test body. If omitted,\nthe API sends a default sample payload."}},"required":["webhook_id"],"additionalProperties":false}},{"name":"trigger_webhook","description":"Manually trigger webhook delivery for a resource (job/monitor/monitor_group).\n\nUse when:\n- You want to (re-)send a webhook delivery on demand instead of waiting for\n  the automatic dispatch — e.g. to replay a missed or failed delivery.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"webhook_id":{"type":"string","description":"The webhook ID to deliver through."},"resource_type":{"type":"string","description":"Resource type: 'job', 'monitor', or 'monitor_group'."},"resource_id":{"type":"string","description":"The ID of the job/monitor/monitor_group to trigger delivery for."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"job_id":{"default":"","type":"string","description":"Optional job ID whose payload should be delivered (e.g. a specific\nmonitor run's job). If omitted, the API picks the resource's payload itself."}},"required":["webhook_id","resource_type","resource_id"],"additionalProperties":false}},{"name":"update_dataset","description":"Update a dataset's name and/or description.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"dataset_id":{"type":"string","description":"The dataset ID to update."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional new dataset name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional new dataset description."}},"required":["dataset_id"],"additionalProperties":false}},{"name":"update_entity","description":"Update an entity's name, description, external_entity_id, and/or attributes.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"entity_id":{"type":"string","description":"The entity ID to update."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional new entity name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional new description."},"external_entity_id":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional customer-supplied identifier linking this entity to\nan external system's record (new in 1.6.3)."},"additional_attributes":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Optional updated structured attributes\n(see `create_entity` for the company_attributes shape)."}},"required":["entity_id"],"additionalProperties":false}},{"name":"update_monitor","description":"Update a monitor's schedule, timezone, webhook assignments, and per-run limit.\n\nNote: reference_job_id cannot be modified through this endpoint.\nWebhooks are centralized — pass webhook IDs (from `create_webhook`/`list_webhooks`).","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"monitor_id":{"type":"string","description":"The monitor ID to update"},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"webhook_ids":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"default":null,"description":"Optional list of webhook IDs to assign to this monitor.\nPass an empty list `[]` to clear all webhook assignments."},"limit":{"anyOf":[{"type":"integer"},{"type":"null"}],"default":null,"description":"Optional updated maximum records per run (minimum 10)."},"schedule":{"default":"","type":"string","description":"Optional new natural-language schedule to replace the monitor's current\none (e.g. 'every day at 9 AM', 'every Monday at 6 PM EST'). Leave unset to keep\nthe current schedule. The scheduler picks up the new schedule on its next\nreload and the old schedule stops firing."},"timezone":{"default":"","type":"string","description":"Optional IANA timezone for the new schedule (e.g. 'America/New_York').\nDefaults to UTC. Overridden if the schedule text itself contains a timezone.\nIgnored if `schedule` is not set."}},"required":["monitor_id"],"additionalProperties":false}},{"name":"update_project","description":"Update a project's name and/or description.\n\nOnly the fields you provide are changed.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"project_id":{"type":"string","description":"The project ID to update."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional new project name."},"description":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Optional new project description."}},"required":["project_id"],"additionalProperties":false}},{"name":"update_webhook","description":"Update an existing webhook's configuration.\n\nUse when:\n- You want to change a webhook's URL, method, headers, or other settings.\n- You want to enable or disable a webhook (set `is_active`).\n- Only the fields you provide are updated; omitted fields remain unchanged.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"webhook_id":{"type":"string","description":"The webhook ID to update."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated webhook name."},"url":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated target URL."},"type":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated webhook type: 'generic', 'slack', 'teams', or 'custom'."},"method":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated HTTP method: one of GET, POST, PUT, PATCH, DELETE."},"delivery_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"Updated delivery mode: 'full' or 'per_record'."},"headers":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"description":"Updated dict of custom HTTP headers."},"params":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"default":null,"description":"Updated dict of query string parameters."},"auth":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Updated auth object. One of:\n- {\"type\": \"bearer\", \"token\": \"...\"}\n- {\"type\": \"api_key\", \"header\": \"X-API-Key\", \"value\": \"...\"}\n- {\"type\": \"basic\", \"username\": \"...\", \"password\": \"...\"}"},"formatter_config":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"default":null,"description":"Updated formatter configuration dict."},"is_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"Set to false to disable the webhook (stop deliveries), true to re-enable it."}},"required":["webhook_id"],"additionalProperties":false}},{"name":"validate_query","description":"Check the quality of a query before submitting a job (\"Check Query Quality\").\n\nUse when:\n- You want quick feedback on whether a query is well-formed for CatchAll\n  before spending credits on a job.\n- You want concrete suggestions to improve a vague or overly broad query.\n\nDo not use when:\n- You want to preview auto-generated validators/enrichments (use `initialize_query`).\n- You want to actually run a search (use `submit_query`).","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"query":{"type":"string","description":"The natural-language query to assess (required)."},"api_key":{"default":"","type":"string","description":"CatchAll API key. Optional if provided via x-api-key header or CATCHALL_API_KEY env var."}},"required":["query"],"additionalProperties":false}}],"scan":{"score":83,"grade":"B","scanned_at":"2026-09-25T21:46:23.326Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-25T21:46:23.286Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 1391ms"]},"poisoning":{"score":13,"max":15,"notes":["61 tool descriptions checked"]},"auth":{"score":8,"max":15,"notes":["API key sent as a header"]},"maintenance":{"score":15,"max":15,"notes":["last push 3 days ago"]},"identity":{"score":6,"max":10,"notes":["namespace and repository owner differ","GitHub account older than a year"]}},"findings":[{"id":"poison.long-description","severity":"low","component":"poisoning","title":"Unusually long tool description (over 2,000 characters)","evidence":"tool submit_query: …Create a new CatchAll processing job from a natural-language query. Use when: - You want to start a new CatchAll web research run from a user query. - You want the API to fetch/process sources and then return structured results. Do not use when: - You want status for an existing job (use `get_job_status`). - You want records for an existing job (use `pull_results`). Key rules: - `query` is required. - You can submit with only `query`; omitted optional fields (`validators`, `enrichments`, `start_date`, `end_date`) are auto-selected/generated by the API. - Optional fields are independent: you can pass any subset (for example, custom `validators` but no `enrichments`), and omitted fields are still auto-selected/generated. - When `connected_dataset_ids` is set, the `query` must describe the **topic or event type only** (e.g. \"M&A activity\", \"regulatory filings\", \"executive changes\"). Do NOT write things like \"for my companies\", \"for the selected list of companies\", or \"news about my watchlist\" — the entity filtering is applied automatically by the connected dataset. Mentioning companies in the query when a dataset is attached is redundant and degrades retrieval quality. - When `connected_dataset_ids` is set, entity-relevance validators (e.g. `company_is_primary_subject`) are generated automatically by the API. Do NOT add them manually to `validators` — they are redundant and may conflict with the auto-generated ones. Only pass validators that describe the **event or topic**, not entity filtering. - `start_date` and `end_date` filter by web page discovery date, not event date. - Discovery dates and extracted event dates can differ. For event-time accuracy, use event-focused validators/enrichments and verify `event_date` in pulled results. - `end_date` must be after `start_date`. - Dates outside your plan lookback limits return API 400. - `limit` controls processed record count (cost-affecting). Omit it to retrieve everything up to your plan's maximum. If provided, must be >= 10. - `validators` / `enrichments` may be passed either as arrays or as JSON-string arrays (for client compatibility). - `validators[].type` must be `boolean` (if omitted, it defaults to `boolean`). - `enrichments[].type` supported values: text, number, date, option, url, company. Basic examples: - validators: `[{\"name\":\"is_acquisition_event\",\"description\":\"true if page describes an acquisition\",\"type\":\"boolean\"}]` - enrichments: `[{\"name\":\"acquiring_company\",\"description\":\"Extract acquiring company\",\"type\":\"company\"},{\"name\":\"deal_value\",\"description\":\"Extract announced deal value\",\"type\":\"number\"}]` Next step: - Save the returned `job_id`. - Poll `get_job_status` and call `pull_results` (partial results can appear before completion).…"}],"inputs":{"probes":[{"url":"https://catchall-mcp.newscatcherapi.com/mcp","reachable":true,"authRequired":false,"latencyMs":1391,"serverInfo":{"name":"Newscatcher CatchAll API","version":"4.0.5"}}],"packages":[],"repo":{"found":true,"owner":"Newscatcher","repo":"catchall-mcp","archived":false,"pushedAt":"2026-09-22T09:47:33Z","stars":1,"forks":1,"openIssues":1,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/62792881?v=4","ownerCreatedAt":"2020-03-28T10:07:47Z","license":"MIT"},"icon":{"url":"https://cdn.prod.website-files.com/68836ccb0e22570e2e820207/695b93ae298ac33a29a971d8_Favicon-96.png","source":"site","width":96,"height":96},"presence":{"stars":1,"forks":1,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-09-22T09:47:33.000Z","score":23}}}},"grade_history":[],"reviews":[]}