FlashData for Haystack
Build research pipelines and agent tools with six Google sources and nine YouTube sources. This package exposes 17 components for 15 capabilities: YouTube delivery has separate submit, status and result components. It does not include a model, embeddings, or a vector store.
Requires Python 3.11+ and Haystack 3.4. Install from the versioned source release:
pip install "git+https://github.com/flashdatadev/flashdata-mcp.git@haystack-v0.2.1#subdirectory=packages/haystack"
The package is also available on PyPI. Installation is free under MIT; FlashData API calls use
paid Credits. Configure FLASHDATA_API_KEY through your environment or secret manager after
creating a key in your FlashData account. Use the linked source guides for current rates and limits.
from haystack import Pipeline
from flashdata_haystack import FlashDataGoogleSearch, as_tool
pipe = Pipeline()
pipe.add_component("search", FlashDataGoogleSearch())
result = pipe.run({"search": {"query": "retrieval augmented generation evaluation", "num": 5}})
print(result["search"]["result"])
# Constructing a tool does not call an API or a model.
tool = as_tool(FlashDataGoogleSearch())
# Add it to an existing Haystack Agent; the agent decides when to search.
The full API JSON is available as result. Realtime components also return documents, one
Haystack Document per top-level API result. Document content is complete JSON, with source and
result index metadata. Search snippets are not fetched webpage content; no media is automatically
downloaded. Each example also shows how to format results into context without a model call.
| Capability | Guide and runnable pipeline | Source contract |
|---|---|---|
| Google Search | Web evidence for an agent | Inputs, outputs, pricing |
| Google News | News briefing | Source guide |
| Google Images | Image shortlist | Source guide |
| Google Shopping | Offer comparison | Source guide |
| Google Videos | Video references | Source guide |
| Google Places | Local business shortlist | Source guide |
| YouTube Search | Tutorial discovery | Source guide |
| YouTube Extended Search | Larger research inventory | Source guide |
| YouTube Metadata | Video inspection | Source guide |
| YouTube Transcript | Timestamped evidence | Source guide |
| YouTube Captions | Uploader caption review | Source guide |
| YouTube License Metadata | License-label inspection | Source guide |
| YouTube Channel | Channel briefing | Source guide |
| YouTube Autocomplete | Topic discovery | Source guide |
| YouTube Delivery | Saved job and storage delivery | Source guide |
These are source documentation and proposed directory pages. They are not proof of 15 approved
Haystack directory entries. Actual IDs, URLs and review state are tracked separately in entries.json.
Save pipelines with pipe.dumps() and load reviewed YAML using
Pipeline.loads(saved, allowed_modules=["flashdata_haystack"]). API keys use Haystack Secret;
only environment variable names are serialized. Token secrets deliberately refuse serialization.
Key and storage values never appear in tool input schemas.
YouTube delivery is asynchronous and needs customer storage. FlashDataYouTubeDownloadSubmit
defaults to allow_submit=False; the operator must explicitly enable a paid storage write and set
FLASHDATA_DOWNLOAD_STORAGE. Save the receipt and use FlashDataYouTubeDownloadStatus or
FlashDataYouTubeDownloadResult to read that job. There is no automatic retry or polling.
Requests use a 120-second network timeout (15-second connect timeout) and a 20 MiB response limit.
After an uncertain submission, inspect Jobs before resubmitting to avoid duplicate charges.
API errors are reported as FlashDataError without raw credentials or response bodies.
Model, storage and API costs are separate. See pricing and
privacy.
Development:
uv sync --group dev
uv run python scripts/sync_contract.py
uv run python scripts/generate.py
uv run ruff check --fix .
uv run ruff format .
uv run ruff check .
HAYSTACK_TELEMETRY_ENABLED=false uv run pytest
uv run python -m build
uv run twine check dist/*
The HTTP, input and storage contracts are vendored from the reviewed Python CLI implementation.
scripts/sync_contract.py reproduces them and records source hashes; only the User-Agent differs.
Generated component classes have explicit input sockets and fixed sources. Tests use HTTP fixtures
and block network access; they do not prove production API, model or customer-storage execution.
Subtitle languages
For transcript and captions, language accepts one code or a list of 1–10 distinct
codes, such as ["en", "es"]. Omit it to prefer en-orig, then en, returning one
track. Explicit strings keep the single-track response. Lists, including one-element
lists, return tracks and per-language errors inside each result. Keep available
tracks and report the failed languages; if none succeed, tracks is empty.
The auto choice applies to every language and never switches caption source.
Metadata
Release files for flashdata-haystack 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| flashdata_haystack-0.2.1.tar.gz | 150.1 kB | With provenance | Details for flashdata_haystack-0.2.1.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| flashdata_haystack-0.2.1-py3-none-any.whl | Python 3 | none | any | Details for flashdata_haystack-0.2.1-py3-none-any.whl |
Total release size: 168.4 kB
Release files / flashdata_haystack-0.2.1.tar.gz
| Download URL | flashdata_haystack-0.2.1.tar.gz |
|---|---|
| Size | 150.1 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
f0c47f29d294322c69b93c6bf3c9893c03614de97b7b0724d07cd6f2290ac3d3
|
|
BLAKE2b-256 checksum How to use checksums |
3b60f07a107142cab3f3aeaaa58ca5697be084ae5aedcdf2f32f24b42dc3dde5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logRelease files / flashdata_haystack-0.2.1-py3-none-any.whl
| Download URL | flashdata_haystack-0.2.1-py3-none-any.whl |
|---|---|
| Size | 18.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
ec7711ca8682a6619c31a9e4506e33bbd6d97b42e3dab64ab3f44ea450623083
|
|
BLAKE2b-256 checksum How to use checksums |
4de2cfb09f7bf2cdf1140114a74717b184f6cbfc13487eb1b747d3c90f6f55ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logSecurity for flashdata-haystack 0.2.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
Both files in this release have been uploaded with provenance metadata.
Attestation for flashdata_haystack-0.2.1.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Nov 11, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.