# 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 proxy_url: https://api.lightningenable.com/l402/proxy/weather-intel 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 proxy_url: https://api.lightningenable.com/l402/proxy/smart-wikipedia 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 proxy_url: https://api.lightningenable.com/l402/proxy/paper-scout 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 proxy_url: https://api.lightningenable.com/l402/proxy/census-query 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 proxy_url: https://api.lightningenable.com/l402/proxy/sec-edgar 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 proxy_url: https://api.lightningenable.com/l402/proxy/openfda-drug-safety 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 proxy_url: https://api.lightningenable.com/l402/proxy/pubmed-biomedical 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 proxy_url: https://api.lightningenable.com/l402/proxy/fred-economic-data 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 proxy_url: https://api.lightningenable.com/l402/proxy/openalex-scholarly 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 proxy_url: https://api.lightningenable.com/l402/proxy/crossref-doi 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 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 proxy_url: https://api.lightningenable.com/l402/proxy/currency-exchange 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 proxy_url: https://api.lightningenable.com/l402/proxy/air-quality-index 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 proxy_url: https://api.lightningenable.com/l402/proxy/nutrition-facts 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} --- ## YouTube Transcript proxy_id: youtube-transcript proxy_url: https://api.lightningenable.com/l402/proxy/youtube-transcript source: YouTube (YoutubeExplode) region: global note: Not all videos have captions. Use metadata endpoint to check first. Accepts full URLs or bare video IDs. GET /transcript | 5 sats videoId: string, required, YouTube video ID or full URL format: string, optional, "full" (default) or "segments" for timestamped chunks maxTokens: int, optional, truncate transcript to fit token budget example: /transcript?videoId=dQw4w9WgXcQ&format=segments&maxTokens=1000 returns: videoId,title,channelName,duration,estimatedTokens,fullText|segments[]{text,startTime,endTime},truncated:bool GET /metadata | 2 sats videoId: string, required example: /metadata?videoId=dQw4w9WgXcQ returns: videoId,title,channelName,duration,hasTranscript:bool,estimatedTokens,thumbnailUrl GET /search | 3 sats videoId: string, required query: string, required limit: int, optional, default=10, max=50 example: /search?videoId=dQw4w9WgXcQ&query=never+gonna&limit=5 returns: videoId,title,query,totalMatches,matches[]{text,startTime,endTime,context} --- ## GitHub Repo Intel proxy_id: github-repo-intel proxy_url: https://api.lightningenable.com/l402/proxy/github-repo-intel source: GitHub REST API v3 (unauthenticated, 60 req/hr) region: global GET /repo | 5 sats owner: string, required, repository owner repo: string, required, repository name example: /repo?owner=bitcoin&repo=bitcoin returns: name,fullName,description,stars,forks,openIssues,language,topics[],createdAt,updatedAt,license,languages{},topContributors[]{login,contributions,profileUrl},recentCommits[]{sha,message,author,date} GET /repo/contributors | 3 sats owner: string, required repo: string, required limit: int, optional, default=10, max=100 example: /repo/contributors?owner=bitcoin&repo=bitcoin&limit=5 returns: owner,repo,contributors[]{login,contributions,profileUrl,avatarUrl} GET /repo/activity | 3 sats owner: string, required repo: string, required limit: int, optional, default=10, max=100 example: /repo/activity?owner=bitcoin&repo=bitcoin&limit=5 returns: owner,repo,commits[]{sha,message,author,date,url} --- ## DNS & WHOIS proxy_id: dns-and-whois proxy_url: https://api.lightningenable.com/l402/proxy/dns-and-whois source: DnsClient.NET + RDAP Bootstrap (IANA) region: global GET /lookup | 2 sats domain: string, required, domain name example: /lookup?domain=bitcoin.org returns: domain,records{a[],aaaa[],mx[]{host,preference},ns[],txt[],cname[]} GET /whois | 2 sats domain: string, required example: /whois?domain=bitcoin.org returns: domain,registrar,registrarUrl,creationDate,expirationDate,updatedDate,nameservers[],status[],dnssec GET /full | 3 sats domain: string, required example: /full?domain=bitcoin.org returns: domain,dns{a[],aaaa[],mx[],ns[],txt[],cname[]},whois{registrar,creationDate,expirationDate,nameservers[],status[]} --- ## Geocoding proxy_id: geocoding proxy_url: https://api.lightningenable.com/l402/proxy/geocoding source: Nominatim / OpenStreetMap (CC BY-SA) region: global GET /forward | 2 sats address: string, required, address or place name limit: int, optional, default=5, max=20 example: /forward?address=1600+Pennsylvania+Ave+Washington+DC&limit=3 returns: results[]{latitude,longitude,displayName,type,importance,address{road,city,state,country,postalCode,countryCode}} GET /reverse | 2 sats latitude: double, required, range[-90,90] longitude: double, required, range[-180,180] example: /reverse?latitude=38.8977&longitude=-77.0365 returns: latitude,longitude,result{latitude,longitude,displayName,type,importance,address{road,city,state,country,postalCode,countryCode}} --- ## Stock Quote proxy_id: stock-quote proxy_url: https://api.lightningenable.com/l402/proxy/stock-quote source: Yahoo Finance (unofficial, ~15 min delay) region: US exchanges (NYSE, NASDAQ) note: Pre/post-market prices not included. Range param auto-selects intervals. GET /quote | 3 sats symbol: string, required, stock ticker (e.g. AAPL, MSFT, TSLA) example: /quote?symbol=AAPL returns: symbol,name,price,change,changePercent,previousClose,open,dayHigh,dayLow,fiftyTwoWeekHigh,fiftyTwoWeekLow,volume,marketCap,currency GET /history | 3 sats symbol: string, required range: string, optional, enum: 1d,5d,1mo,3mo,6mo,1y,5y, default=1mo example: /history?symbol=TSLA&range=3mo returns: symbol,range,interval,dataPoints[]{date,open,high,low,close,volume} --- ## IP Geolocation proxy_id: ip-geolocation proxy_url: https://api.lightningenable.com/l402/proxy/ip-geolocation source: ip-api.com (free tier, 45 req/min) region: global note: Only public IPs accepted. Private/reserved ranges rejected for SSRF protection. GET /lookup | 2 sats ip: string, required, IPv4 or IPv6 address example: /lookup?ip=8.8.8.8 returns: ip,country,countryCode,region,regionName,city,zip,latitude,longitude,timezone,isp,org,as POST /bulk | 5 sats body: string[], JSON array of IP addresses (max 100) example: POST with ["8.8.8.8","1.1.1.1","208.67.222.222"] returns: results[]{ip,country,countryCode,region,city,latitude,longitude,timezone,isp,org} --- ## Suite: Research | 10 sats proxy_id: research-suite proxy_url: https://api.lightningenable.com/l402/proxy/research-suite 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 proxy_url: https://api.lightningenable.com/l402/proxy/finance-suite sources: SEC EDGAR, FRED, Currency Exchange, Stock Quote (Yahoo Finance) GET /overview | 10 sats query: string, required, company name or ticker or financial topic (ticker symbols like "AAPL" auto-include stock quote) symbols: string, optional, comma-separated currency codes example: /overview?query=TSLA&symbols=EUR,GBP returns: edgar{company{cik,companyName},recentFilings[],keyFacts[]},fred{relevantSeries[]},currency{base,date,rates[]},stock{quote{symbol,name,price,change,changePercent,fiftyTwoWeekHigh,fiftyTwoWeekLow}|null} partial_failure: failed sources return {error,message} ## Suite: Compliance | 8 sats proxy_id: compliance-suite proxy_url: https://api.lightningenable.com/l402/proxy/compliance-suite 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 proxy_url: https://api.lightningenable.com/l402/proxy/health-suite 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}