# Agent Commerce Store > Part of [Lightning Enable](https://lightningenable.com) — infrastructure for agent commerce over Lightning. base_url: https://agent-commerce.store l402_proxy_base: https://api.lightningenable.com/l402/proxy manifest: https://agent-commerce.store/.well-known/l402-manifest.json schemas: https://agent-commerce.store/llms-full.txt status: early_access payments: non_refundable test_free: https://agent-commerce.store/api/{endpoint_path} onboarding: npx lightning-enable-mcp → fund wallet → discover_api → access_l402_resource idempotency_header: X-Idempotency-Key (optional, prevents duplicate invoices on rapid/retried requests; same key within 5 min returns same 402 challenge) ## Envelope All /api/* responses: {"status":"ok|error","data":{...},"meta":{"token_estimate":int,"price_sats":int,"cached":bool,"timestamp":"ISO8601","path":"string","l402_url":"string|null","test_free_url":"string|null"}} meta.l402_url: the L402 paid endpoint URL for this same request (pay via Lightning) meta.test_free_url: the free test URL for this endpoint (validate params before paying) --- ## Weather Intel proxy_id: weather-intel-e0cf proxy_url: https://api.lightningenable.com/l402/proxy/weather-intel-e0cf source: National Weather Service (public domain) region: US only note: NWS returns transient 404s on /points endpoint; server retries 3x automatically. Use decimal coordinates. GET /forecast | 3 sats latitude: double, required, range[-90,90], decimal degrees longitude: double, required, range[-180,180], decimal degrees example: /forecast?latitude=40.7128&longitude=-74.0060 returns: location,timezone,periods[]{name,startTime,endTime,temperature,temperatureUnit,windSpeed,windDirection,shortForecast,detailedForecast,isDaytime,precipitationProbability,outdoorSuitable:bool,outdoorReason} GET /alerts | 2 sats state: string, required, format=2-letter US state code enum: AL,AK,AZ,AR,CA,CO,CT,DE,FL,GA,HI,ID,IL,IN,IA,KS,KY,LA,ME,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,OH,OK,OR,PA,RI,SC,SD,TN,TX,UT,VT,VA,WA,WV,WI,WY example: /alerts?state=TX returns: state,totalAlerts,alerts[]{id,event,severity,severityScore:int[0-100],urgency,certainty,headline,description,areaDescription,onset,expires} GET /conditions | 2 sats latitude: double, required, range[-90,90] longitude: double, required, range[-180,180] example: /conditions?latitude=40.7128&longitude=-74.0060 returns: station,observedAt,conditions{description,temperatureF,temperatureC,dewpointF,dewpointC,relativeHumidity,windSpeed,windDirection,barometricPressurePa,visibilityMeters,windChillF,heatIndexF} --- ## Smart Wikipedia proxy_id: smart-wikipedia-aaec proxy_url: https://api.lightningenable.com/l402/proxy/smart-wikipedia-aaec source: Wikipedia + Wikidata (CC BY-SA) region: global note: Parameter is "topic" not "query". Use exact article titles for best results. GET /summary | 2 sats topic: string, required, Wikipedia article title (e.g. "Bitcoin", "Albert Einstein") example: /summary?topic=Bitcoin returns: topic,title,summary,extract,keyFacts[],thumbnailUrl,wikipediaUrl,isDisambiguation:bool,hasControversy:bool GET /entity | 3 sats topic: string, required, topic to find Wikidata entity example: /entity?topic=Satoshi+Nakamoto returns: wikidataId,label,description,properties{},aliases[],wikipediaUrl,wikidataUrl GET /related | 2 sats topic: string, required example: /related?topic=Lightning+Network returns: related[]{title,description,wikipediaUrl},seeAlso[],categories[] --- ## Paper Scout proxy_id: paper-scout-247e proxy_url: https://api.lightningenable.com/l402/proxy/paper-scout-247e source: arXiv (open access) region: global GET /search | 3 sats query: string, required start: int, optional, default=0 maxResults: int, optional, default=10, max=50 example: /search?query=transformer+attention&maxResults=5 returns: totalResults,startIndex,itemsPerPage,papers[]{arxivId,title,summary,authors[],published,updated,categories[],primaryCategory,pdfUrl,abstractUrl,comment} GET /{arxivId} | 3 sats arxivId: string, required, arXiv paper ID (e.g. "1706.03762", "2301.00001") example: /2301.00001 returns: arxivId,title,summary,authors[],published,updated,categories[],primaryCategory,pdfUrl,abstractUrl,journalRef --- ## Census Query proxy_id: census-query-2a22 proxy_url: https://api.lightningenable.com/l402/proxy/census-query-2a22 source: US Census Bureau (public domain) region: US only note: Use "City, State" format with full state names for best results. Ambiguous names may resolve to unexpected places. GET /population | 3 sats place: string, required, format="City, State" (e.g. "Houston, Texas", "Austin, TX") example: /population?place=Houston%2C+Texas returns: place,resolvedName,fipsCode,state,population:int,source,dataYear GET /demographics | 5 sats place: string, required, format="City, State" example: /demographics?place=Austin%2C+Texas returns: place,resolvedName,fipsCode,state,totalPopulation,age{under18,age18To64,age65Plus,medianAge},race{white,blackOrAfricanAmerican,asian,hispanicOrLatino,...},housing{totalHousingUnits,occupiedUnits,vacantUnits,medianHomeValue,medianRent},source,dataYear --- ## SEC EDGAR proxy_id: sec-edgar-38a5 proxy_url: https://api.lightningenable.com/l402/proxy/sec-edgar-38a5 source: SEC EDGAR (public domain) region: US companies GET /search | 8 sats query: string, required, company name or ticker or filing text dateRange: string, optional, date range filter form: string, optional, enum: 10-K,10-Q,8-K,S-1,DEF 14A,4,... example: /search?query=Tesla&form=10-K returns: totalResults,filings[]{accessionNumber,formType,formTypeDescription,companyName,cik,filedDate,reportDate,documentUrl} GET /company/{cik} | 10 sats cik: string, required, numeric CIK (auto-padded to 10 digits, e.g. "320193" for Apple, "1318605" for Tesla) example: /company/320193 returns: cik,companyName,keyFacts[]{label,value,unit,period},recentFilings[]{accessionNumber,formType,formTypeDescription,filedDate,reportDate} GET /filing/{accessionNumber} | 10 sats accessionNumber: string, required, format="0000320193-24-000123" example: /filing/0001628280-24-002390 returns: accessionNumber,formType,formTypeDescription,companyName,cik,filedDate,reportDate,documentUrl --- ## OpenFDA Drug Safety proxy_id: openfda-drug-safety-781f proxy_url: https://api.lightningenable.com/l402/proxy/openfda-drug-safety-781f source: openFDA (public domain) region: US GET /adverse-events | 5 sats drug: string, required, drug name (e.g. "aspirin", "ibuprofen") limit: int, optional, default=10 example: /adverse-events?drug=aspirin&limit=5 returns: totalResults,reports[]{receiveDate,seriousness,severityScore,patient{age,sex,weight},reactions[],outcomes[]},reactionSummary{topReactions[]{reaction,count}} GET /recalls | 5 sats query: string, required, search term limit: int, optional, default=10 example: /recalls?query=insulin+pump returns: totalResults,recalls[]{recallNumber,classification,status,reason,description,recallingFirm,recallInitiationDate,productDescription,voluntaryMandated} GET /labels | 5 sats drug: string, required, drug name example: /labels?drug=ibuprofen returns: brandName,genericName,manufacturer,indications,warnings,dosage,contraindications,adverseReactions,drugInteractions,activeIngredients[],route --- ## PubMed Biomedical proxy_id: pubmed-biomedical-bc1e proxy_url: https://api.lightningenable.com/l402/proxy/pubmed-biomedical-bc1e source: NCBI PubMed (public domain) region: global GET /search | 6 sats query: string, required, biomedical search query limit: int, optional, default=10, max=50 example: /search?query=CRISPR+gene+therapy&limit=5 returns: totalResults,articles[]{pmid,title,abstract,structuredAbstract[]{label,text},authors[],journal,publishedDate,doi,meshTerms[]} GET /{pmid} | 7 sats pmid: string, required, PubMed ID (e.g. "38123456") example: /38123456 returns: pmid,title,abstract,structuredAbstract[]{label,text},authors[],journal,volume,issue,pages,publishedDate,doi,meshTerms[],keywords[],publicationTypes[],fullTextUrl --- ## FRED Economic Data proxy_id: fred-economic-data-bf5f proxy_url: https://api.lightningenable.com/l402/proxy/fred-economic-data-bf5f source: Federal Reserve Bank of St. Louis (public) region: US / global economic data note: Search first to discover series IDs. Common: GDP, UNRATE, CPIAUCSL, DFF, SP500, FEDFUNDS. GET /search | 4 sats query: string, required limit: int, optional, default=10 example: /search?query=unemployment+rate returns: totalResults,series[]{seriesId,title,frequency,units,seasonalAdjustment,lastUpdated,observationStart,observationEnd,popularity,notes} GET /series/{seriesId} | 5 sats seriesId: string, required, FRED series ID (e.g. "UNRATE", "GDP", "CPIAUCSL") example: /series/UNRATE returns: seriesId,title,frequency,units,seasonalAdjustment,lastUpdated,observations[]{date,value},stats{min,max,avg,latestChange} GET /series/{seriesId}/data | 5 sats seriesId: string, required start: string, optional, format=YYYY-MM-DD end: string, optional, format=YYYY-MM-DD example: /series/UNRATE/data?start=2023-01-01&end=2024-12-31 returns: seriesId,title,frequency,units,startDate,endDate,observations[]{date,value},stats{min,max,avg,latestChange} --- ## OpenAlex Scholarly proxy_id: openalex-scholarly-c9ff proxy_url: https://api.lightningenable.com/l402/proxy/openalex-scholarly-c9ff source: OpenAlex (CC0) region: global GET /search | 3 sats query: string, required limit: int, optional, default=10, max=50 example: /search?query=machine+learning+healthcare returns: totalResults,works[]{id,title,abstract,authors[]{name,institution},publicationYear,citedByCount,isOpenAccess,pdfUrl,journal,doi} GET /work/{id} | 5 sats id: string, required, OpenAlex work ID (e.g. "W2741809807") or DOI example: /work/W2741809807 returns: id,title,abstract,authors[]{name,institution,orcid},publicationYear,citedByCount,isOpenAccess,pdfUrl,journal,doi,volume,issue,pages,topics[]{name,score},referencedWorksCount GET /author/{id} | 3 sats id: string, required, OpenAlex author ID (e.g. "A5023888391") example: /author/A5023888391 returns: id,displayName,orcid,worksCount,citedByCount,hIndex,topics[]{name,count},institution{name,country,type},summaryStats{worksCount,citedByCount,hIndex,i10Index} --- ## Crossref DOI proxy_id: crossref-doi-ecfd proxy_url: https://api.lightningenable.com/l402/proxy/crossref-doi-ecfd source: Crossref (public) region: global GET /search | 2 sats query: string, required limit: int, optional, default=10 example: /search?query=climate+change+agriculture returns: totalResults,works[]{doi,title,authors[]{given,family,affiliation},publishedDate,journal,citation,isOpenAccess,licenseUrl,type,publisher} GET /doi/{doi} | 2 sats doi: string, required, full DOI with slashes (e.g. "10.1038/nature12373") example: /doi/10.1038/nature12373 returns: doi,title,authors[]{given,family,affiliation},publishedDate,journal,publisher,citation,isOpenAccess,licenseUrl,volume,issue,page,type,referencesCount,citedByCount,issn[],url --- ## Federal Register [TEMPORARILY UNAVAILABLE — upstream blocks cloud IPs] proxy_id: federal-register-5297 source: Federal Register (public domain) region: US status: disabled GET /search | 3 sats query: string, required type: string, optional, enum: rule,proposed_rule,notice,presidential_document limit: int, optional, default=10 GET /document/{number} | 5 sats number: string, required, Federal Register document number GET /recent | 3 sats agencies: string, optional, comma-separated agency slugs type: string, optional, enum: rule,proposed_rule,notice,presidential_document --- ## Currency Exchange proxy_id: currency-exchange-9b9c proxy_url: https://api.lightningenable.com/l402/proxy/currency-exchange-9b9c source: ECB via Frankfurter (public) region: global (~33 currencies) note: ECB data updates daily ~16:00 CET. No weekend/holiday updates. GET /latest | 1 sat base: string, optional, default="USD", ISO 4217 currency code symbols: string, optional, comma-separated ISO 4217 codes (e.g. "EUR,GBP,JPY") example: /latest?base=USD&symbols=EUR,GBP,JPY returns: base,date,rates[]{code,name,rate,inverseRate} GET /convert | 1 sat from: string, required, ISO 4217 code to: string, required, ISO 4217 code amount: decimal, optional, default=1 example: /convert?from=USD&to=EUR&amount=100 returns: from,to,amount,convertedAmount,rate,inverseRate,fromName,toName GET /historical | 2 sats base: string, required, ISO 4217 code start: string, required, format=YYYY-MM-DD end: string, required, format=YYYY-MM-DD example: /historical?base=USD&start=2024-01-01&end=2024-12-31 returns: base,startDate,endDate,rates[]{date,rates[]{code,rate}},summary{percentageChange,min,max,avg} --- ## Air Quality Index proxy_id: air-quality-index-e42f proxy_url: https://api.lightningenable.com/l402/proxy/air-quality-index-e42f source: EPA AirNow (public) region: US only note: Data updates hourly. GET /current | 2 sats latitude: double, required, range[-90,90] longitude: double, required, range[-180,180] example: /current?latitude=40.7128&longitude=-74.0060 returns: observations[]{pollutant,aqi:int,category,color,healthRecommendation,sensitiveGroupWarning},summary{overallAqi,category,dominantPollutant} GET /forecast | 2 sats latitude: double, required, range[-90,90] longitude: double, required, range[-180,180] example: /forecast?latitude=40.7128&longitude=-74.0060 returns: forecastDays[]{date,forecasts[]{pollutant,aqi,category,color},worstAqi,worstCategory},worstDay{date,aqi,pollutant} --- ## Nutrition Facts proxy_id: nutrition-facts-f147 proxy_url: https://api.lightningenable.com/l402/proxy/nutrition-facts-f147 source: USDA FoodData Central (public domain) region: US food database GET /search | 3 sats query: string, required, food name limit: int, optional, default=10 example: /search?query=chicken+breast returns: totalResults,foods[]{fdcId,description,brandOwner,dataType,nutrients{calories,protein,fat,carbs,fiber,sugar,sodium}} GET /{fdcId} | 3 sats fdcId: int, required, FoodData Central ID from search results example: /171477 returns: fdcId,description,dataType,servingSize,servingSizeUnit,nutrients[]{name,amount,unit,dailyValuePercent} --- ## Suite: Research | 10 sats proxy_id: research-suite-1088 proxy_url: https://api.lightningenable.com/l402/proxy/research-suite-1088 sources: arXiv, PubMed, OpenAlex, Crossref GET /comprehensive | 10 sats query: string, required limit: int, optional, default=5, per source example: /comprehensive?query=transformer+attention&limit=3 returns: arxiv{totalResults,papers[]},pubmed{totalResults,articles[]},openalex{totalResults,works[]},crossref{totalResults,works[]} partial_failure: failed sources return {error,message} instead of results ## Suite: Finance | 10 sats proxy_id: finance-suite-0bb1 proxy_url: https://api.lightningenable.com/l402/proxy/finance-suite-0bb1 sources: SEC EDGAR, FRED, Currency Exchange GET /overview | 10 sats query: string, required, company name or ticker or financial topic symbols: string, optional, comma-separated currency codes example: /overview?query=Tesla&symbols=EUR,GBP returns: edgar{company{cik,companyName},recentFilings[],keyFacts[]},fred{relevantSeries[]},currency{base,date,rates[]} partial_failure: failed sources return {error,message} ## Suite: Compliance | 8 sats proxy_id: compliance-suite-e352 proxy_url: https://api.lightningenable.com/l402/proxy/compliance-suite-e352 sources: OpenFDA, SEC EDGAR (Federal Register currently disabled) GET /search | 8 sats query: string, required type: string, optional, enum: regulation,safety,filing limit: int, optional, default=5, per source example: /search?query=artificial+intelligence+regulation returns: openfda{recalls[],adverseEvents[]},edgar{filings[]} partial_failure: failed sources return {error,message} ## Suite: Health | 10 sats proxy_id: health-suite-d898 proxy_url: https://api.lightningenable.com/l402/proxy/health-suite-d898 sources: PubMed, OpenFDA, USDA FoodData Central, EPA AirNow GET /overview | 10 sats query: string, required, health topic or drug name latitude: double, optional, range[-90,90], for air quality longitude: double, optional, range[-180,180], for air quality example: /overview?query=ibuprofen&latitude=40.71&longitude=-74.00 returns: pubmed{totalResults,articles[]},openfda{adverseEvents{},label{}},nutrition{},airQuality{summary{},healthRecommendation} partial_failure: failed sources return {error,message}