Negotiated 2025-11-25. The bar is 2025-06-18 or newer.
Pass
HTTPS
The endpoint URL is https.
Performance
Not measured
Fast (p50)
Median latency 291 ms over 2 samples in 7 days. The bar is 1000 ms. Need at least 5 samples.
Not measured
Consistent (p95)
95th percentile 331 ms over 2 samples in 7 days. The bar is 3000 ms. Need at least 20 samples.
Not measured
Reliable (uptime)
2 of 2 attempts returned a tool list in 30 days (100%). The bar is 99%. Need at least 30 samples.
Pass
Stable tool list
No tool was removed and no required parameter was added in the last 30 days.
Access
Pass
Open access
tools/list succeeded with no credential, and the record declares none.
Not measured
Standard auth
Auth is not required, so the OAuth metadata check does not apply.
Not measured
Free tier cited
No publisher quote has been checked.
Tools
Pass
Tools described
Every tool description is at least 20 characters.
Pass
Valid input schemas
Every inputSchema is a JSON Schema object.
Pass
Parameters documented
52 of 52 parameters have a description (100%). The bar is 80%.
Pass
Safety hints
Every tool sets readOnlyHint or destructiveHint.
Publisher
Pass
Verified namespace
Listed in the Official MCP Registry.
Pass
Website matches publisher
The website host matches the reverse-domain namespace.
Pass
Source repo linked
A repository URL is on file.
Not measured
Repo owner matches
This namespace is not an io.github login, so the owner comparison does not apply.
Pass
Recently updated
Updated 2026-11-02T12:35:56.972375Z, within 180 days.
Fail
Open-source licence
GitHub does not report an OSI licence.
Start using Ahel
Connect to this server
Choose your client, copy the configuration, then enable the server in your client’s MCP settings.
Run this command in your terminal, then restart Claude Code.
Claude Code
claude mcp add --transport http ahel https://mcp.ahel.ai
Capabilities
Tools 11
balance
The workspace's prepaid balance in USD, what runs in flight hold, what settled runs used today and this month (shown to the Owner), any daily spend cap on the team API key this connection uses, and where to top up. Check it when a run is refused for funds, or before a job that will make many runs. Free; changes nothing. NOT for: the price of one run, which is capability_inspect.
Discovered capability_inspect
Read one task or provider tool from Ahel's catalog by its id: its exact inputs (Ahel's own contract, or the published reference input when Ahel has none), its status and exact reason, Ahel's price per provider (Unknown when Ahel has no rate), for a temporarily unavailable item the market prices seen elsewhere, for comparison, and the exact run_capability call when it can run. With arguments it also prices that exact run before anything runs: Ahel's quote, the most it may cost, the amount a run would reserve and whether the balance covers it; nothing is reserved, charged or started. With rows or rows_text (up to 100, for people.email.find or companies.register.search or companies.emails.from_website) it quotes a whole list instead: rows, rows that can run, each row's price and the most one row and the list may cost, the balance against it, and what each row that cannot run is missing. Free; changes nothing. NOT for: finding ids, which is capability_search, or running it, which is run_capability.
Discovered capability_run_status
Without execution_id: the paid data capabilities this workspace can run, each with its providers and exact prices. With execution_id: that run's state, attempts and exact cost, settled once in the ledger when final; with results true, its rows and provenance (include_raw true adds the provider's own answer), and, when it has rows, results_page and csv_url: give the person those links instead of writing the rows out again. Generated images and audio come as a signed link (media_url, valid for days) with their type and size; a small one is also attached as an image or audio block. A long result answers as many rows as fit and says the offset that reads the rest. NOT for: finding a task or tool to run, which is capability_search.
Discovered capability_search
Search Ahel's catalog of data tasks and provider tools by words, a task id or a tool id: company and people enrichment, SEO, social, ads, e-commerce, reviews, AI generation, market and public data. Each result has its genuine task id or tool id, its platform, its status (ready, coming_soon meaning temporarily unavailable because Ahel has no provider for it yet, or unavailable while the run service is down) with the exact reason; a temporarily unavailable result may carry a market price seen elsewhere, for comparison. The same catalog, ids and statuses as the Catalog page on ahel.ai. Describe the job in plain words; results are ranked by how well they fit. When nothing fits it answers verdict none with the three nearest items: then call catalog_request. Free; changes nothing. NOT for: one item's exact inputs and prices, which is capability_inspect, or the team's own tools, which is my_tools.
Discovered catalog_request
Ask Ahel to add a data task or provider tool the catalog does not have yet: call it when capability_search answers verdict none and none of its nearest items fits. Give what you need in plain words, an example input, and the most you would pay for one call. Answers a request id; asking again for the same thing adds to that request instead of making a new one. Free; runs nothing and charges nothing. NOT for: finding what already exists, which is capability_search.
Discovered feedback
Rate one run or one catalog request of this workspace good or bad, or, with no id, report anything about Ahel: confusing results or charges, unclear instructions, unhelpful errors, a workaround you needed. Report small annoyances too, even when the task succeeded, each issue once. Ahel reads every note to fix providers and the catalog. Leave out private information, keys and raw responses. Free; changes nothing else. NOT for: reading a run's state or rows, which is capability_run_status, or asking for a missing task, which is catalog_request.
Discovered get_started
How to start with Ahel: call this when the person asks what Ahel is, what it can do or how to begin. Returns what Ahel is, how the prepaid balance works, the three steps to find, price and run any data task or provider tool, and ready example prompts. Reads only; changes nothing. NOT for: finding a data task or provider tool for a specific ask, which is capability_search.
Discovered my_tools
This team's own tools: the APIs and MCP servers the team added at ahel.ai/app/tools. Without tool, lists each one with its tools, their inputs and the exact call. With tool ("<key>/<tool name>" from that list) and arguments, calls it with the team's saved credentials, which never enter the chat. NOT for: Ahel's catalog of data tasks and provider tools, which is capability_search. If the transport times out, do not resubmit the work: call again with the same ids and poll.
Discovered review
Rate how useful one finished run of this workspace was, after you have used its result: useful, partly, not_useful, or not_sure when you cannot tell, with an optional reason about the result (missing rows, wrong data, stale). One review per run; reviewing it again replaces the earlier one. Ahel reads every review to rank and fix providers. Leave out private information, keys and raw rows. Free; changes nothing else. NOT for: a catalog request, or reporting something confusing or broken, which is feedback.
Discovered run_batch
Run one task over many inputs in one call: for repeated runs of the same task, one round trip rather than one per run. Priced the same per item as a single run, with no fee for batching: each item is quoted, reserved and charged on its own, and only a delivered result is charged. Give id and items, 1 to 100 objects of the task's inputs. Every item is checked first: a bad item is refused alone and the others run. Identical items run once and the answer maps back to each position. At most 5 run at once. max_cost_usd caps the whole batch: no item starts if what is charged, plus what is held, plus its own quote could pass it, and items left over answer not_started with nothing charged. A provider that is temporarily unavailable stops only the items it would serve. The answer comes within about 45 seconds: each item in input order has its position, state, rows, charged_usd, error and execution_id, then the totals. Items still going, and rows that did not fit, are read with capability_run_status. An item with rows also has results_page and csv_url: give the person those links instead of writing the rows out again. Sending the same call again the same UTC day answers the same runs with no new charge and starts what did not start; a new idempotency_key runs the items again. A task that is unknown or not ready refuses the whole call, free. NOT for: one run alone, which is run_capability.
Discovered run_capability
Run one paid data capability (company data, people and contact data and the like) through Ahel's provider execution: it is quoted, the exact price is reserved from the workspace balance, and the run starts. Give id, a task id or tool id from capability_search: it runs only through the v2 capability Ahel's task map binds to it, and an item that is not ready is refused with its exact reason before anything is quoted. It then waits up to wait_seconds (default 20, at most 50; 0 answers at once): when the run finishes in that time, this same answer has its state, exact cost and rows, and generated images and audio as links; otherwise it answers the execution id, and capability_run_status reads the run. An answer with rows also has results_page and csv_url: give the person those links instead of writing the rows out again. Data collection only: a capability that writes or has a side effect is refused. Ahel picks the provider unless endpoint_ids pins one; exclude_endpoint_ids leaves providers out. Give max_cost_usd to hold the price: a run that would cost more is refused with nothing run or charged. Give idempotency_key so a retry after a lost answer is safe: the same key answers the same run, with no new charge. Give tag (such as a customer name) to see usage and cost by tag in Activity. A list: for people.email.find or companies.register.search or companies.emails.from_website, give rows (objects) or rows_text (paste up to 100 rows as text) instead of arguments: without confirm it answers the list's quote and runs nothing; with confirm true it runs every row once and answers the receipt (found, not found, failed, the exact total, the rows and a CSV link) and its run_id; run_id continues a run whose rows were still going. NOT for: the team's own tools, which is my_tools.