Skip to content

Latest commit

 

History

History

tools

Folders and files

README.md

@launchstack/tools

Shared, contract-typed capabilities that the feature verticals compose. A tool is something you import — it runs in the caller's process and shares its types, config, and auth context. Deployed compute with its own API lives in services/; product verticals that orchestrate tools into user-facing flows live in pipelines/.

Layering: retrieval ← tools ← pipelines ← apps. Tools may import the runtime, evidence, store, llm, retrieval, and conversion bricks; imports of @launchstack/pipelines are banned (lint-enforced). Capabilities move down into this package; compositions stay up in pipelines/. ESLint permits process.env throughout this package, not only in config.ts; keep provider environment reads in each tool's config.ts module by convention.

Every tool is one subpath export with zod-typed inputs/outputs. The shared contract types (ToolRunContext, ToolResult, ToolError) live in src/contract.ts.

Catalog

Tool Import What it does Consumers
company-context @launchstack/tools/company-context Company identity (one DB read), knowledge-base context assembly, and CompanyDNA extraction (metadata-first with RAG fallback). Owns the company_metadata data contract (./schema) and the readFact confidence gate. marketing-pipeline, email-pipeline, company-metadata (schema)
grounded-retrieval @launchstack/tools/grounded-retrieval Company-scoped RAG retrieval with named snippet policies (topK / weights / caps) and a declared empty-vs-throw failure policy. company-context, brand-voice, persona, claim-evidence
brand-voice @launchstack/tools/brand-voice Synthesize a BrandVoice profile (tone, vocabulary, sentence style, formality) from the company's own documents. marketing-pipeline; email tone rules (planned)
persona @launchstack/tools/persona Synthesize a TargetPersona (role, pain points, priorities, language style) for a described audience, grounded in company knowledge. marketing-pipeline
web-research @launchstack/tools/web-research Provider-pluggable web search (Exa/Serper registry, strategy selection, retry, URL dedup) plus the shared in-memory TTL cache (createTtlCache). Env reads live in its config.ts. trend-search (planning/synthesis/jobs stay there), marketing competitor + research
place-search @launchstack/tools/place-search Plan, geocode and execute searches for physical places (Foursquare provider); the targeting perspective is caller data. Extracted from client-prospector. client-prospector, distribution
org-resolver @launchstack/tools/org-resolver Deterministic organisation identity: domain/name+country resolve keys, aggregator-domain guard, legal-suffix stripping, mention merging. No LLM, no network. distribution
trade-data @launchstack/tools/trade-data Port for customs/shipment records ("who ships what to whom") with a none default, a static provider for fixtures, and a registry for real adapters (TRADE_DATA_PROVIDER). distribution
investor-search @launchstack/tools/investor-search Venture funds raising now, from SEC Form D filings (EDGAR full-text search + each filing's primary document): managers, office, phone, target size, amount closed. Keyless; paced under SEC's 10 req/s, retries EFTS's passing 500s, hides single-deal SPVs. User-Agent from SEC_EDGAR_USER_AGENT. Investor relations (Studio)
grant-search @launchstack/tools/grant-search Open funding calls for a described applicant: Grants.gov's public search and each hit's synopsis (keyless; award range, eligibility, description), plus foundation and programme listings from the web when a search key is configured. Listings only; the caller scores them. GRANTS_GOV_ENABLED, GRANTS_GOV_API_URL. proposals
compliance-screen @launchstack/tools/compliance-screen Port for sanctions/PEP screening with an OpenSanctions yente adapter (OPENSANCTIONS_API_URL); results are advisory flags. distribution
image-generation @launchstack/tools/image-generation Generate an image and persist it through an injected store, returning a reference rather than bytes. Endpoint resolves IMAGE_* → CHAT_* → AI_*, so an OpenRouter chat credential already serves images. Spend is reported only after a successful write. agent image tool (planned); marketing assets (planned)
claim-evidence @launchstack/tools/claim-evidence Extract factual claims from content and look up their knowledge-base sources. Scores are relevance (retrieval), never "confidence"; "no source" is a null match, not a zero. marketing-pipeline
platform-profiles @launchstack/tools/platform-profiles One registry per social platform: posting guidelines, structure templates, few-shot examples, hashtag caps, hard char limits, judge reference posts. marketing generation + publish, evaluate route, benchmark
content-scoring @launchstack/tools/content-scoring One versioned rubric, two consumers: the offline LLM judge (scorePost, never rewrites) and the live quality gate (validatePostQuality). Variant ranking arrives with the P2 runner. marketing generation gate, benchmark, evaluate route
social-publish @launchstack/tools/social-publish One PublishAdapter per platform (X, LinkedIn, Reddit, Bluesky) behind one registry: typed config in config.ts, session/token caching, profile char limits, and the platform-native postId on every success. marketing publish route (with history write-back)
stage-runner @launchstack/tools/stage-runner A table and a loop — deliberately not a workflow engine. One declaration per stage (policy, run, report/narration as data); the runner owns timing, progress events, required-vs-degradable failure, and cancellation. marketing-pipeline; any future pipeline

Tests

pnpm --filter @launchstack/tools test — vitest, deterministic (RAG port is faked via configureRag; DB-touching paths are covered by the web app's integration suites).