Données financières Recoupé API REST Serveur MCP Norme AAOIFI 21 Pensé pour les agents

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.

Créez votre compte gratuit Fichier Agent Skill

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}/halalVerdict complet pour un symbole : statut, score, ratios, confiance, raisonsClé facultative
GET /v1/screen?symbols=Verdicts en lot pour jusqu'à 25 tickers séparés par des virgulesClé facultative
GET /v1/search?q=Recherchez l'univers d'actions + ETF par nom ou tickerClé facultative
GET /v1/screenerTrouvez des noms dans l'index pré-filtré par statut, pays, secteur, scoreClé facultative
GET /v1/top-halalMeilleures actions halal par score, en option par pays/secteurClé facultative
GET /v1/stock/{symbol}/zakatZakat dû (2,5 %) sur une position ; intent=investment|tradingClé facultative
GET /v1/stock/{symbol}/purificationMontant de purification des dividendes (part de revenu impur × dividendes)Clé facultative
GET /v1/stock/{symbol}/alternativesActions halal du même secteurClé facultative
GET /v1/stock/{symbol}/historyStatut 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 champClé facultative
GET /v1/ratios/{symbol}Ratios de filtrage (dette, trésorerie, revenu impur) avec seuils et réussite/échecClé facultative
GET /v1/profile/{symbol}Profil de l'entreprise : nom, secteur, industrie, résumé d'activité, devise, typeClé facultative
GET /v1/dividends/{symbol}Chiffres de purification de dividendes dérivés (ratio impur, % à purifier) + verdict jointClé facultative
GET /v1/financials/{symbol}États financiers multi-périodes (résultat, bilan, flux de trésorerie)Forfait payant
GET /v1/compliance-changesActions ayant récemment changé de statut halalClé facultative
GET /v1/whale-watchCe que détiennent les grands fonds islamiques — suivez l'argent halalClé facultative
GET /v1/sectorsRépartition halal/total par secteur dans tout l'universClé facultative
GET /v1/methodologyLa norme de filtrage, les seuils et les étapes appliquésAucune
GET /v1/marketsMarchés couverts, avec leurs suffixes de tickerAucune
POST /v1/signupCréez votre compte et recevez une clé APIAucune
GET /v1/portfolio · POST · DELETEEnregistrez et filtrez un portefeuille lié à votre cléClé requise
GET /v1/stock/{symbol}/multi-standardConformité selon AAOIFI vs DJIM vs base actif totalForfait payant
GET /v1/stock/{symbol}/custom-screenRe-filtrez avec vos propres seuils dette/trésorerie/impurForfait payant
GET /v1/compare?symbols=Comparaison de conformité côte à côte de jusqu'à 4 tickersForfait payant
GET /v1/screen.csv?symbols=Export CSV en masse des verdicts (symbol,name,status,score,as_of) jusqu'à 100 tickersForfait Business
GET /v1/portfolio.csvExport CSV en masse du statut de conformité de chaque position enregistréeForfait Business
GET/POST/DELETE /v1/webhookEnregistrez UNE URL de push de conformité ; nous POST {symbol,old_status,new_status,score,as_of} quand une action suivie/détenue change de statutForfait 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.

Obtenez votre clé API Voir les tarifs