Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, get in touch and we’ll put it right.

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

81 Trust /100

Last scanned (23 hours ago)

Scores higher than 84% of remote servers

Reachable. Last reached 4 Nov 2026.

Category Marketing and SEO

Trust breakdown (7 categories)

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
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
Changelog

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.

Diagnostics

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/
MCP tools · 10 exposed · ~3,126 tokens

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 →

Tool Tokens
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 ~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.

NameTypeReqDescription
argumentsobject–Optional: the run's inputs, by name, to price that exact run (a quote only; nothing runs).
endpoint_idsarray–With arguments: price the run on these providers only (endpoint ids from this answer).
exclude_endpoint_idsarray–With arguments: price the run without these providers.
idstringyesA task id or tool id from capability_search.
max_itemsnumber–With arguments: most rows to price for, 1-100. Default 10.
rowsarray–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_textstring–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_secondsnumber–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 ~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.

NameTypeReqDescription
execution_idstring–The id run_capability answered.
full_textboolean–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_rawboolean–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_itemsnumber–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.
offsetnumber–With results: the first row to answer (0-based), from next_offset when a long result did not fit in one answer. Default 0.
resultsboolean–With execution_id: include the rows.

No output schema declared.

No examples provided.

capability_search ~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.

NameTypeReqDescription
kindstring–Optional: only tasks or only provider tools.
limitnumber–How many results, 1-50. Default 10.
platformstring–Optional platform id (companies, google, image-gen): only its items; with no query, its whole shelf.
querystring–Words to match, or an exact task id (companies.enrich) or tool id.
statusstring–Optional: only items in this state.

No output schema declared.

No examples provided.

catalog_request ~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.

NameTypeReqDescription
example_input––Optional: one example input, as text or an object (a domain, a profile URL, a name).
max_price_usdnumber–Optional: the most you would pay for one call, in USD.
whatstringyesWhat you need done, in plain words: the job, not a provider name.

No output schema declared.

No examples provided.

feedback ~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.

NameTypeReqDescription
categorystring–With no id: quality (results), pricing (charges or prices), friction (using Ahel) or other.
idstring–To rate one: an execution id from run_capability, or a request id from catalog_request.
notestring–What was right or wrong, in a sentence or two. Required with no id.
ratingstring–With id: good or bad.

No output schema declared.

No examples provided.

get_started ~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 ~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.

NameTypeReqDescription
argumentsobject–With tool: the tool's arguments, matching the inputs the list shows.
toolstring–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 ~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.

NameTypeReqDescription
reasonstring–Optional: why, in a sentence or two, about the result.
run_idstringyesThe execution id run_capability answered.
usefulnessstringyesHow useful the result was.

No output schema declared.

No examples provided.

run_capability ~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.

NameTypeReqDescription
argumentsobject–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_idstring–Instead of id: a v2 capability id from capability_run_status (no execution_id).
confirmboolean–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_idsarray–Optional: run only on these providers, by the endpoint ids capability_inspect lists. Leave it out to let Ahel pick (the default).
exclude_endpoint_idsarray–Optional: never use these providers, by the endpoint ids capability_inspect lists. Ahel picks among the rest.
idstring–A task id or tool id from capability_search or capability_inspect.
idempotency_keystring–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_itemsnumber–Most rows to collect, 1-100. Default 10.
rowsarray–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_textstring–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_idstring–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.
tagstring–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_secondsnumber–Longest the run may take, 1-180 seconds. Default: the provider's own (60, more for slow sources).
wait_secondsnumber–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.

Install

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

# add to Claude Code
claude mcp add --transport http ai-ahel-ahel 'https://mcp.ahel.ai/'
Common questions

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.