Ahel
REMOTE · MCP.AHEL.AI
Data and tools for your AI agent: company, people, SEO, social and EU register data. Pay per call.
Available components
Last scanned (23 hours ago)
Scores higher than 84% of remote servers
Reachable. Last reached 4 Nov 2026.
Category Marketing and SEO
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security100
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability74
- 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 3372 tokens (~306/item across 11 items; 10 tools + 1 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management0
- Stability check failed: schema churn in the 2 days we've observed: 2 tool removals, 0 breaking changes, 0 auth/transport breaks, 0 additions. See how to fix → Fail
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- We read all 10 captured tool definition(s), and no name or description among them implies an irreversible operation.Pass
- An AI judge read all 12 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 4 Nov 26 −1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “capability_inspect” rewrote its description, which is the text the model reads security
- Tool “feedback” rewrote its description, which is the text the model reads security
- Tool “my_tools” rewrote its description, which is the text the model reads security
- Tool “run_capability” rewrote its description, which is the text the model reads security
- Schema quality: 239 → 306 ▼ functional
- Schema quality: excellent → good functional
- “capability_inspect” added an optional parameter “rows” cosmetic
- “capability_inspect” added an optional parameter “rows_text” cosmetic
- “feedback” added an optional parameter “category” cosmetic
- “run_capability” added an optional parameter “confirm” cosmetic
- “run_capability” added an optional parameter “rows” cosmetic
- “run_capability” added an optional parameter “rows_text” cosmetic
- “run_capability” added an optional parameter “run_id” cosmetic
- “feedback” reworded the description of “id” cosmetic
- “feedback” reworded the description of “note” cosmetic
- “feedback” reworded the description of “rating” cosmetic
- “run_capability” reworded the description of “arguments” cosmetic
- “run_capability” reworded the description of “wait_seconds” cosmetic
- “feedback” made “id” optional cosmetic
- “feedback” made “rating” optional cosmetic
- “run_capability” made “arguments” optional cosmetic
- Tool “feedback” changed its title: Rate a run or request → Rate a run or report a problem cosmetic
- 3 Nov 26 0
- Stability: unverified → fail ▼ security
- A breaking change shipped without a version bump: still 1.0.0 ▼ security
- Tool “fetch” was removed ▼ security
- Tool “search” was removed ▼ security
- Tool “run_capability” rewrote its description, which is the text the model reads security
- Schema quality: 210 → 239 ▼ functional
- “capability_run_status” added an optional parameter “max_items” cosmetic
- “run_capability” added an optional parameter “tag” cosmetic
- 2 Nov 26 +42
- Transport: unverified → pass ▲ security
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Authorization: Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. security
- MCP protocol: unverified → pass ▲ functional
- Schema quality: unverified → 100 ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Schema quality: excellent functional
- First check of Destructive annotations: pass functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 100 functional
- 31 Oct 26 40
First indexed and scored.
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 4 Nov 2026 · Probed https://mcp.ahel.ai
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=ahel.ai | CN=WE1,O=Google Trust Services,C=US | 30 Oct 2026 | 28 Jan 2027 | ECDSA 256 | ECDSA-SHA256 | 80ea35a4cc39ad3d13a682b2a717d818 |
| SANs: ahel.ai, *.ahel.ai | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of mcp.ahel.ai. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| ai. | present | 1814, 3799 | 8, 8 | Verified |
| ahel.ai. | present | 2371 | 13 | Verified |
| mcp.ahel.ai. | Verified address RRset verified with the apex keys |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://mcp.ahel.ai/.well-known/oauth-protected-resource"
Bearer resource_metadata="https://mcp.ahel.ai/.well-known/oauth-protected-resource" | Header | Value |
|---|---|
| strict-transport-security | max-age=31536000; includeSubDomains |
| content-security-policy | default-src 'self'; script-src 'self' 'nonce-MmU5NTdiMDctMzNlMS00YjRmLTk2MGUtNzdlNmJkMzZlZTg0' 'strict-dynamic'; script-src-attr 'none'; style-src 'self' 'unsafe-inline'; img-src 'self' data: blob: https:; font-src 'self' data:; connect-src 'self' https://analytics.ahel.ai https://app.ahel.ai; media-src 'self' blob: https:; worker-src 'self' blob:; frame-src 'self'; object-src 'none'; base-uri 'self'; form-action 'self'; frame-ancestors 'none'; upgrade-insecure-requests |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(), microphone=(), geolocation=(), payment=() |
Protected resource metadata
| Document | https://mcp.ahel.ai/.well-known/oauth-protected-resource |
|---|---|
| Retrieved | Yes |
| Resource | https://mcp.ahel.ai |
| Authorisation server | https://glorious-elephant-19.authkit.app |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://mcp.ahel.ai | Verified | 200 | |
| http (plaintext) | http://mcp.ahel.ai | HTTPS enforced | 301 | https://mcp.ahel.ai/ |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
balance Read the prepaid balance ~94
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
capability_inspect Inspect and price a task or tool ~567
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.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | object | – | Optional: the run's inputs, by name, to price that exact run (a quote only; nothing runs). |
| endpoint_ids | array | – | With arguments: price the run on these providers only (endpoint ids from this answer). |
| exclude_endpoint_ids | array | – | With arguments: price the run without these providers. |
| id | string | yes | A task id or tool id from capability_search. |
| max_items | number | – | With arguments: most rows to price for, 1-100. Default 10. |
| rows | array | – | A list for people.email.find or companies.register.search or companies.emails.from_website: 1 to 100 rows, each run once as its own run with its own exact cost. One object per row, such as {"name": "… |
| rows_text | string | – | A list for people.email.find or companies.register.search or companies.emails.from_website: 1 to 100 rows, each run once as its own run with its own exact cost. Instead of rows: paste up to 100 rows… |
| timeout_seconds | number | – | With arguments: longest the run may take, 1-180 seconds. Default: the provider's own (60, more for slow sources). |
No output schema declared.
No examples provided.
capability_run_status Read a run's status and results ~334
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). 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.
| Name | Type | Req | Description |
|---|---|---|---|
| execution_id | string | – | The id run_capability answered. |
| full_text | boolean | – | With results: answer long text values whole. By default a result of several rows cuts each text value at 4000 characters and lists the cut fields in that row's truncated_fields. |
| include_raw | boolean | – | With results: also include the winning provider's own answer (raw) and the normalised output. Large and repeats the rows; leave it out unless the rows lack a field you need. |
| max_items | number | – | With results: the max_items the run was started with, so the answer can say when the rows stopped at that limit. run_capability's next names it. |
| offset | number | – | With results: the first row to answer (0-based), from next_offset when a long result did not fit in one answer. Default 0. |
| results | boolean | – | With execution_id: include the rows. |
No output schema declared.
No examples provided.
capability_search Search data tasks and provider tools ~304
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, needs_connection, 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.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | – | Optional: only tasks or only provider tools. |
| limit | number | – | How many results, 1-50. Default 10. |
| platform | string | – | Optional platform id (companies, google, image-gen): only its items; with no query, its whole shelf. |
| query | string | – | Words to match, or an exact task id (companies.enrich) or tool id. |
| status | string | – | Optional: only items in this state. |
No output schema declared.
No examples provided.
catalog_request Request a missing task or tool ~180
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.
| Name | Type | Req | Description |
|---|---|---|---|
| example_input | – | – | Optional: one example input, as text or an object (a domain, a profile URL, a name). |
| max_price_usd | number | – | Optional: the most you would pay for one call, in USD. |
| what | string | yes | What you need done, in plain words: the job, not a provider name. |
No output schema declared.
No examples provided.
feedback Rate a run or report a problem ~215
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.
| Name | Type | Req | Description |
|---|---|---|---|
| category | string | – | With no id: quality (results), pricing (charges or prices), friction (using Ahel) or other. |
| id | string | – | To rate one: an execution id from run_capability, or a request id from catalog_request. |
| note | string | – | What was right or wrong, in a sentence or two. Required with no id. |
| rating | string | – | With id: good or bad. |
No output schema declared.
No examples provided.
get_started Get started with Ahel ~94
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
my_tools List or call the team's own tools ~169
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.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | object | – | With tool: the tool's arguments, matching the inputs the list shows. |
| tool | string | – | Optional: "<key>/<tool name>" from the list, to call that tool. Omit to list the team's own tools. |
No output schema declared.
No examples provided.
review Review a run's usefulness ~163
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.
| Name | Type | Req | Description |
|---|---|---|---|
| reason | string | – | Optional: why, in a sentence or two, about the result. |
| run_id | string | yes | The execution id run_capability answered. |
| usefulness | string | yes | How useful the result was. |
No output schema declared.
No examples provided.
run_capability Run a paid data task ~1,006
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. 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 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.
| Name | Type | Req | Description |
|---|---|---|---|
| arguments | object | – | The capability's inputs, by name. Required unless rows, rows_text or run_id is given; with a list, {"verify": true} checks every found email. |
| capability_id | string | – | Instead of id: a v2 capability id from capability_run_status (no execution_id). |
| confirm | boolean | – | With rows or rows_text: true runs the list once the person agrees to its quote. Left out, the answer is the quote and nothing runs. |
| endpoint_ids | array | – | Optional: run only on these providers, by the endpoint ids capability_inspect lists. Leave it out to let Ahel pick (the default). |
| exclude_endpoint_ids | array | – | Optional: never use these providers, by the endpoint ids capability_inspect lists. Ahel picks among the rest. |
| id | string | – | A task id or tool id from capability_search or capability_inspect. |
| idempotency_key | string | – | Optional: your own key for this run, 8 to 200 letters, digits, dots, underscores, colons or hyphens. Sending the same call again with the same key answers the same run with no new charge; the same ke… |
| max_items | number | – | Most rows to collect, 1-100. Default 10. |
| rows | array | – | A list for people.email.find or companies.register.search or companies.emails.from_website: 1 to 100 rows, each run once as its own run with its own exact cost. One object per row, such as {"name": "… |
| rows_text | string | – | A list for people.email.find or companies.register.search or companies.emails.from_website: 1 to 100 rows, each run once as its own run with its own exact cost. Instead of rows: paste up to 100 rows… |
| run_id | string | – | With id: the run_id a list's receipt answered, to read its rows still running and start the rest. Rows already run are never run twice. |
| tag | string | – | Optional: a label for this run, such as the customer or project it is for: 1 to 64 lowercase letters, digits, dots, dashes or underscores. Activity shows runs and cost by tag. It stays in Ahel and is… |
| timeout_seconds | number | – | Longest the run may take, 1-180 seconds. Default: the provider's own (60, more for slow sources). |
| wait_seconds | number | – | Optional: how long to wait for the run to finish and answer its rows here, 0-50 seconds. Default 20; 0 answers the execution id at once. A list waits up to 45 s. |
No output schema declared.
No examples provided.
How do I install the Ahel MCP server?
Ahel is a hosted endpoint at https://mcp.ahel.ai/, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · mcp.ahel.ai
claude mcp add --transport http ai-ahel-ahel 'https://mcp.ahel.ai/'
What is the Ahel MCP server?
Ahel is an MCP server listed in the public MCP registry as ai.ahel/ahel. Data and tools for your AI agent: company, people, SEO, social and EU register data. Pay per call. This page covers its hosted endpoint (https://mcp.ahel.ai).
Is the Ahel MCP server safe to use?
Ahel scores 81 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Ahel MCP server expose?
Ahel exposes 10 tools: my_tools, capability_search, capability_inspect, run_capability, capability_run_status, and 5 more. Their descriptions and schemas cost roughly 3,126 tokens of context every time the server is loaded.
Does the Ahel MCP server require authentication?
Yes. Ahel asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the Ahel MCP server still maintained?
Ahel is still listed as active in the MCP registry. We last reached this channel on 4 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.