Fondamentaux, ratios, états financiers et dividendes — plus un verdict de conformité AAOIFI — depuis un appel REST ou un outil MCP. Chaque chiffre est recoupé entre plusieurs sources indépendantes (SEC EDGAR, Yahoo, Finnhub) ; tout chiffre issu de moins de deux sources est signalé non vérifié. Marchés du Golfe et des États-Unis, 7 langues, pensée pour les agents.
Gratuit pendant 3 mois avec un compte gratuit — accès complet à chaque vérification, aux outils de Zakat et à l'API + serveur MCP. Sans carte ; les forfaits payants arrivent après la période de lancement. Les étiquettes de forfait du tableau ci-dessous indiquent la tarification future ; rien n'est facturé pendant la période de lancement.
Démarrage rapide — 3 étapes
De zéro à un verdict de conformité en quelques minutes.
1. Obtenez votre clé API
Créer un compte
2. Appelez le point de terminaison
3. Lisez le verdict
Exemple de requête et réponse
curl https://halalstock.net/v1/stock/2222.SR/halal?profile=standard \
-H "Authorization: Bearer thl_your_key"
{
"symbol": "2222.SR",
"name": "Saudi Arabian Oil Company",
"status": "halal",
"compliance_score": 82,
"confidence": "likely",
"corroborated_by": [], // Sharia-screened funds that also hold it (independent scholar check) — not data sources
"ratios": [
{"name": "debt_ratio", "value": 0.09, "threshold": 0.30, "passed": true},
{"name": "cash_ratio", "value": 0.04, "threshold": 0.30, "passed": true},
{"name": "impure_income_ratio", "value": null, "threshold": 0.05, "passed": null}
],
"risk_level": "safe",
"purification_pct": null,
"reasons": ["Business is permissible and all computable financial ratios pass."],
"explanation": {"en": "...", "ar": "..."},
"disclaimer": "Screening analysis for information only — not a fatwa..."
}
Astuce : cliquez sur le bloc de code pour le sélectionner, puis copiez.
Essayez en direct
Saisissez un ticker et lancez un vrai filtrage sur le point public — sans clé ni inscription. C'est le même JSON que votre code recevra.
C'est un résultat de filtrage automatisé des données disponibles — pas une fatwa ni un verdict qu'une société est halal. Lisez status avec confidence, et transmettez toujours le champ disclaimer.
SDK et exemples prêts à copier
Clients officiels sans dépendance pour Python et JavaScript, plus un appel curl brut et la config MCP. Définissez votre clé une fois comme HALALSTOCK_API_KEY (elle commence par thl_).
import os
from halalstock import HalalStock, HalalStockError
# key from your account (starts with thl_); keyless works too but is IP-metered
hs = HalalStock(api_key=os.environ.get("HALALSTOCK_API_KEY"))
try:
v = hs.check("AAPL") # GET /v1/stock/AAPL/halal
# status is a screening result, not a fatwa — read it with confidence
print(v["status"], v["compliance_score"], v["confidence"])
print(v["disclaimer"]) # always relay this to the user
res = hs.screen(["AAPL", "TSLA", "2222.SR"]) # batch, up to 25
print(res["count"], "screened")
except HalalStockError as e:
print("error", e.status, e.message)
import { HalalStock, HalalStockError } from "./halalstock.js";
// key from your account (starts with thl_); keyless works too but is IP-metered
const hs = new HalalStock(process.env.HALALSTOCK_API_KEY);
try {
const v = await hs.check("AAPL"); // GET /v1/stock/AAPL/halal
// status is a screening result, not a fatwa — read it with confidence
console.log(v.status, v.compliance_score, v.confidence);
console.log(v.disclaimer); // always relay this to the user
const res = await hs.screen(["AAPL", "TSLA", "2222.SR"]); // batch, up to 25
console.log(res.count, "screened");
} catch (e) {
if (e instanceof HalalStockError) console.error(e.status, e.detail);
}
# public — no key needed (metered per IP)
curl "https://halalstock.net/v1/stock/AAPL/halal?profile=standard"
# with your key (starts with thl_) for a higher quota
curl "https://halalstock.net/v1/stock/2222.SR/halal" \
-H "Authorization: Bearer $HALALSTOCK_API_KEY"
# batch screen up to 25 tickers
curl "https://halalstock.net/v1/screen?symbols=AAPL,TSLA,2222.SR" \
-H "Authorization: Bearer $HALALSTOCK_API_KEY"
# add to your MCP client config (e.g. Claude Desktop)
{
"mcpServers": {
"halalstock": {
"command": "python",
"args": ["-m", "tahleel.mcp_server"],
"env": {
"HALALSTOCK_API_URL": "https://halalstock.net",
"HALALSTOCK_API_KEY": "thl_your_key"
}
}
}
}
# then just ask: "Is Aramco (2222.SR) halal?" — the agent calls check_halal()
Récupérez les clients depuis le dépôt : /sdk/python/halalstock.py et /sdk/javascript/halalstock.js. Tous deux encapsulent les mêmes points REST ci-dessous.
Pour les agents IA (MCP)
HalalStock fournit un serveur Model Context Protocol. Pointez Claude Desktop, Cursor ou tout client MCP dessus et demandez simplement si une action est halal.
Configuration du client MCP
# add to your MCP client config (e.g. Claude Desktop)
{
"mcpServers": {
"halalstock": {
"command": "python",
"args": ["-m", "tahleel.mcp_server"],
"env": {
"HALALSTOCK_API_URL": "https://halalstock.net",
"HALALSTOCK_API_KEY": "thl_your_key"
}
}
}
}
Outils et utilisation
# the server exposes two tools:
# check_halal(symbol, profile="standard")
# screen_portfolio(symbols, profile="standard")
# then just ask the agent:
"Is Aramco (2222.SR) halal?"
"Screen AAPL, TSLA and JPM for Sharia compliance."
# With HALALSTOCK_API_URL + HALALSTOCK_API_KEY set, calls
# go to the hosted, metered API. Without them, the server
# screens locally with no API key (best-effort, via Yahoo —
# US names degrade gracefully; still needs a network connection).
Référence des points de terminaison
La plupart des points de lecture ne nécessitent pas de clé (mesurés par IP) ; certains nécessitent une clé, quelques-uns un forfait payant.
| Point de terminaison | Renvoie | Auth |
|---|---|---|
GET /v1/stock/{symbol}/halal | Verdict complet pour un symbole : statut, score, ratios, confiance, raisons | Clé facultative |
GET /v1/screen?symbols= | Verdicts en lot pour jusqu'à 25 tickers séparés par des virgules | Clé facultative |
GET /v1/search?q= | Recherchez l'univers d'actions + ETF par nom ou ticker | Clé facultative |
GET /v1/screener | Trouvez des noms dans l'index pré-filtré par statut, pays, secteur, score | Clé facultative |
GET /v1/top-halal | Meilleures actions halal par score, en option par pays/secteur | Clé facultative |
GET /v1/stock/{symbol}/zakat | Zakat dû (2,5 %) sur une position ; intent=investment|trading | Clé facultative |
GET /v1/stock/{symbol}/purification | Montant de purification des dividendes (part de revenu impur × dividendes) | Clé facultative |
GET /v1/stock/{symbol}/alternatives | Actions halal du même secteur | Clé facultative |
GET /v1/stock/{symbol}/history | Statut de conformité dans le temps (instantanés quotidiens) | Clé facultative |
GET /v1/fundamentals/{symbol} | Fondamentaux recoupés (capitalisation, dette, trésorerie, revenus) avec sources par champ | Clé facultative |
GET /v1/ratios/{symbol} | Ratios de filtrage (dette, trésorerie, revenu impur) avec seuils et réussite/échec | Clé facultative |
GET /v1/profile/{symbol} | Profil de l'entreprise : nom, secteur, industrie, résumé d'activité, devise, type | Clé facultative |
GET /v1/dividends/{symbol} | Chiffres de purification de dividendes dérivés (ratio impur, % à purifier) + verdict joint | Clé facultative |
GET /v1/financials/{symbol} | États financiers multi-périodes (résultat, bilan, flux de trésorerie) | Forfait payant |
GET /v1/compliance-changes | Actions ayant récemment changé de statut halal | Clé facultative |
GET /v1/whale-watch | Ce que détiennent les grands fonds islamiques — suivez l'argent halal | Clé facultative |
GET /v1/sectors | Répartition halal/total par secteur dans tout l'univers | Clé facultative |
GET /v1/methodology | La norme de filtrage, les seuils et les étapes appliqués | Aucune |
GET /v1/markets | Marchés couverts, avec leurs suffixes de ticker | Aucune |
POST /v1/signup | Créez votre compte et recevez une clé API | Aucune |
GET /v1/portfolio · POST · DELETE | Enregistrez et filtrez un portefeuille lié à votre clé | Clé requise |
GET /v1/stock/{symbol}/multi-standard | Conformité selon AAOIFI vs DJIM vs base actif total | Forfait payant |
GET /v1/stock/{symbol}/custom-screen | Re-filtrez avec vos propres seuils dette/trésorerie/impur | Forfait payant |
GET /v1/compare?symbols= | Comparaison de conformité côte à côte de jusqu'à 4 tickers | Forfait payant |
GET /v1/screen.csv?symbols= | Export CSV en masse des verdicts (symbol,name,status,score,as_of) jusqu'à 100 tickers | Forfait Business |
GET /v1/portfolio.csv | Export CSV en masse du statut de conformité de chaque position enregistrée | Forfait Business |
GET/POST/DELETE /v1/webhook | Enregistrez UNE URL de push de conformité ; nous POST {symbol,old_status,new_status,score,as_of} quand une action suivie/détenue change de statut | Forfait Business |
Couverture des marchés : les actions cotées aux États-Unis sont entièrement prises en charge (SEC EDGAR + Yahoo + Finnhub). Les marchés du Golfe et internationaux sont au mieux, couverts là où des données fiables existent ; quand un chiffre ne peut être confirmé, nous renvoyons le statut 'unknown' ou verified=false plutôt que de deviner.
Limites de débit et erreurs
Il existe aussi un plafond de rafale par minute au-dessus du quota quotidien : Pro = 300 requêtes/min, Business = 600 requêtes/min. Étalez les gros traitements — un dépassement par minute renvoie un 429 dont le corps indique "max N requests/minute on your plan" (distinct du 429 de quota quotidien).
401
Clé API manquante ou invalide sur un point qui en exige une.
402
Fonction payante appelée avec une clé gratuite. Améliorez votre forfait.
429
Quota quotidien atteint, ou plafond de rafale par minute dépassé. Le corps indique lequel. Patientez, obtenez une clé ou améliorez votre forfait.