بيانات أساسية ونسب وقوائم مالية وأرباح — مع نتيجة توافق وفق آيوفي — من طلب REST واحد أو أداة MCP واحدة. كل رقم مدقّق عبر عدة مصادر مستقلة (SEC EDGAR وYahoo وFinnhub)، وأي رقم بأقل من مصدرين يُعلَّم كغير موثَّق. أسواق الخليج وأمريكا، بسبع لغات، ومصمّمة للوكلاء.
مجاناً لمدة 3 أشهر مع حساب مجاني — وصول كامل لكل فحص وأدوات الزكاة وواجهة API وخادم MCP. بدون بطاقة؛ تبدأ الخطط المدفوعة بعد فترة الإطلاق. تسميات الخطط في الجدول أدناه تُظهر التسعير المستقبلي؛ لا تُفرض أي رسوم خلال فترة الإطلاق.
البدء السريع — 3 خطوات
من الصفر إلى نتيجة توافق في دقيقتين.
١. احصل على مفتاحك
أنشئ حساباً
٢. استدعِ نقطة النهاية
٣. اقرأ الحكم
مثال طلب واستجابة
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..."
}
نصيحة: انقر مربع الشيفرة لتحديده ثم انسخه.
جرّبها مباشرة
أدخل رمزاً وشغّل فرزاً حقيقياً عبر نقطة النهاية العامة — بلا مفتاح ولا تسجيل. هذا هو نفس JSON الذي ستحصل عليه شيفرتك.
هذه نتيجة فرز آلي للبيانات المتاحة — وليست فتوى ولا حكماً بأن الشركة حلال. اقرأ status مع confidence، ومرّر دائماً حقل disclaimer.
حِزم SDK وأمثلة جاهزة للنسخ
عملاء رسميون بلا اعتماديات للغتي Python وJavaScript، مع استدعاء curl خام وإعداد MCP. اضبط مفتاحك مرة واحدة كـ HALALSTOCK_API_KEY (يبدأ بـ 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()
احصل على العملاء من المستودع: /sdk/python/halalstock.py و /sdk/javascript/halalstock.js. كلاهما يغلّف نفس نقاط REST أدناه.
لوكلاء الذكاء (MCP)
يوفّر «حلال ستوك» خادم Model Context Protocol. وجّه Claude Desktop أو Cursor أو أي عميل MCP إليه ثم اسأل ببساطة إن كان السهم حلالاً.
إعداد عميل 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"
}
}
}
}
الأدوات والاستخدام
# 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).
مرجع نقاط النهاية
معظم نقاط القراءة لا تحتاج مفتاحاً (محسوبة لكل IP)؛ بعضها يحتاج مفتاحاً، وقليل يحتاج خطة مدفوعة.
| نقطة النهاية | يُعيد | المصادقة |
|---|---|---|
GET /v1/stock/{symbol}/halal | حكم كامل لرمز واحد: الحالة، الدرجة، النسب، الثقة، الأسباب | مفتاح اختياري |
GET /v1/screen?symbols= | أحكام جماعية لما يصل إلى 25 رمزاً مفصولة بفواصل | مفتاح اختياري |
GET /v1/search?q= | ابحث في عالم الأسهم والصناديق بالاسم أو الرمز | مفتاح اختياري |
GET /v1/screener | ابحث عن أسماء من الفهرس المُفرز مسبقاً بالحالة والدولة والقطاع والدرجة | مفتاح اختياري |
GET /v1/top-halal | أعلى الأسهم الحلال بدرجة التوافق، اختيارياً حسب الدولة/القطاع | مفتاح اختياري |
GET /v1/stock/{symbol}/zakat | الزكاة المستحقة (2.5%) على حيازة؛ intent=investment|trading | مفتاح اختياري |
GET /v1/stock/{symbol}/purification | مبلغ تطهير الأرباح (حصة الدخل غير المسموح × الأرباح) | مفتاح اختياري |
GET /v1/stock/{symbol}/alternatives | أسهم حلال في نفس القطاع | مفتاح اختياري |
GET /v1/stock/{symbol}/history | حالة التوافق عبر الزمن (لقطات يومية) | مفتاح اختياري |
GET /v1/fundamentals/{symbol} | أساسيات مدقّقة عبر المصادر (القيمة السوقية، الدين، النقد، الإيرادات) مع مصادر لكل حقل | مفتاح اختياري |
GET /v1/ratios/{symbol} | نِسَب الفرز (الدين، النقد، الدخل غير المسموح) مع الحدود ونتيجة النجاح/الرسوب | مفتاح اختياري |
GET /v1/profile/{symbol} | ملف الشركة: الاسم، القطاع، الصناعة، ملخص النشاط، العملة، النوع | مفتاح اختياري |
GET /v1/dividends/{symbol} | أرقام تطهير الأرباح المشتقة (نسبة الدخل غير المسموح، % التطهير) مع الحكم المرفق | مفتاح اختياري |
GET /v1/financials/{symbol} | قوائم مالية لعدة فترات (الدخل، الميزانية، التدفقات النقدية) | خطة مدفوعة |
GET /v1/compliance-changes | أسهم تغيّر حكمها مؤخراً | مفتاح اختياري |
GET /v1/whale-watch | ما تحتفظ به الصناديق الإسلامية الكبرى — اتبع المال الذكي الحلال | مفتاح اختياري |
GET /v1/sectors | توزيع الحلال مقابل الإجمالي حسب القطاع عبر العالم | مفتاح اختياري |
GET /v1/methodology | معيار الفرز والحدود والمراحل المطبّقة | لا شيء |
GET /v1/markets | الأسواق المغطّاة ولواحق رموزها | لا شيء |
POST /v1/signup | أنشئ حسابك واحصل على مفتاح API | لا شيء |
GET /v1/portfolio · POST · DELETE | احفظ وافرز محفظة حيازات مرتبطة بمفتاحك | مفتاح مطلوب |
GET /v1/stock/{symbol}/multi-standard | التوافق وفق آيوفي مقابل DJIM مقابل أساس إجمالي الأصول | خطة مدفوعة |
GET /v1/stock/{symbol}/custom-screen | أعد الفرز بحدودك للدين/النقد/الدخل غير المسموح | خطة مدفوعة |
GET /v1/compare?symbols= | مقارنة توافق جنباً إلى جنب لما يصل إلى 4 رموز | خطة مدفوعة |
GET /v1/screen.csv?symbols= | تصدير CSV مجمّع للأحكام (symbol,name,status,score,as_of) لما يصل إلى 100 رمز | خطة Business |
GET /v1/portfolio.csv | تصدير CSV مجمّع لحالة التوافق لكل حيازة محفوظة | خطة Business |
GET/POST/DELETE /v1/webhook | سجّل عنوان دفع توافق واحد؛ نرسل POST بـ {symbol,old_status,new_status,score,as_of} عند تغيّر حكم سهم تتابعه/تملكه | خطة Business |
تغطية الأسواق: الأسهم المدرجة في الولايات المتحدة مدعومة بالكامل (SEC EDGAR + Yahoo + Finnhub). أسواق الخليج وغيرها دولياً بأفضل جهد، تُغطّى حيث تتوفّر بيانات موثوقة؛ وعند تعذّر تأكيد رقم نُعيد الحالة 'unknown' أو verified=false بدل التخمين.
حدود المعدّل والأخطاء
يوجد أيضاً حد دفقات لكل دقيقة فوق الحصة اليومية: Pro = 300 طلب/دقيقة، Business = 600 طلب/دقيقة. وزّع المهام الكبيرة — تجاوز حد الدقيقة يُعيد 429 يذكر نصّه "max N requests/minute on your plan" (مختلف عن 429 الحصة اليومية).
401
مفتاح API مفقود أو غير صالح في نقطة تتطلّب مفتاحاً.
402
ميزة مدفوعة فقط استُدعيت بمفتاح مجاني. ارتقِ بخطتك.
429
بلغت الحصة اليومية، أو تجاوزت حد الدفقات لكل دقيقة. يوضّح النص أيّهما. تمهّل أو احصل على مفتاح أو ارتقِ بخطتك.