Funding Program Finder
Search the Karma Funding Map for funding programs via the public API.
The registry has 6 program types: grants, hackathons, bounties, accelerators, VC funds, and RFPs. Use "programs" / "opportunities" / "funding" — not just "grants".
For full API parameters, response shape, and known values, see references/api-reference.md.
Workflow
Step 1: Map the User's Request
| User says | Maps to |
|---|
| "Ethereum programs" | INLINECODE0 + ecosystem search strategy |
| "hackathons" |
type=hackathon |
| "hackathons on Ethereum" |
type=hackathon + ecosystem search strategy |
| "bounties on Solana" |
type=bounty + ecosystem search strategy |
| "bounties over $500" |
type=bounty&minGrantSize=500 |
| "accelerator programs" |
type=accelerator |
| "VCs investing in DeFi" |
type=vc_fund&name=DeFi |
| "open RFPs from Optimism" |
type=rfp&organization=Optimism |
| "grants and hackathons on Ethereum" |
type=grant,hackathon + ecosystem search strategy |
| "DeFi funding on Optimism" |
name=DeFi + ecosystem search strategy |
| "programs over $50K" |
minGrantSize=50000 |
| "funding under $100K" |
maxGrantSize=100000 |
| "infrastructure" |
name=infrastructure |
| "active programs" |
status=active |
| "retroactive funding on Optimism" |
categories=Retroactive%20Funding + ecosystem search strategy |
| "programs on Karma" |
onlyOnKarma=true |
| "what's closing this week" |
sortField=endsAt&sortOrder=asc&status=active |
| (no query) | Ask what they're looking for |
Budget shorthand: K→000, M→000000 (e.g., $50K → 50000, $1M → 1000000).
URL encoding: Values with spaces must be percent-encoded in curl URLs (e.g., categories=Retroactive%20Funding).
Step 2: Ecosystem Search Strategy
If the query has no ecosystem component, skip this step and go to Step 3.
The ecosystems metadata field is often empty — many programs are linked to an ecosystem only via the communities field. Use a two-phase approach:
Phase 1 — Try ecosystems= first:
Query with ecosystems={name}. If this returns sufficient results (5+), present them and move to Step 4.
Phase 2 — Enrich with community lookup (only if Phase 1 is sparse):
If Phase 1 returned fewer than 5 results, run these two additional queries and merge:
- 1. Community UID lookup: fetch all communities from
GET /v2/communities?limit=100, find the best match by comparing against community names (case-insensitive, partial match), then query with INLINECODE24 name={name} — text search on title, universal fallback
Deduplicate all merged results by id before presenting.
Step 3: Build and Execute the Request
Use curl via Bash. CRITICAL: Every request must include the tracking headers below. Never omit them.
Before the first request, generate a tracking ID:
CODEBLOCK0
Every curl call must include these query defaults and tracking headers (see references/api-reference.md for details):
CODEBLOCK1
CODEBLOCK2
Step 4: Format Results
Include the program type in each result. Adapt the detail line based on type:
CODEBLOCK3
Field Mapping
- - Name:
metadata.title (fall back to name) - Type label:
type in brackets: [grant], [hackathon], [bounty], [accelerator], [vc_fund], INLINECODE37 - Ecosystem:
metadata.ecosystems joined with , (fall back to communities[0].name) - Description:
metadata.description truncated to ~120 chars
Type-Specific Detail Line
- - grant: INLINECODE42
- hackathon: INLINECODE43
- bounty: INLINECODE44
- accelerator: INLINECODE45
- vc_fund: INLINECODE46
- rfp: INLINECODE47
- fallback: INLINECODE48
Common Fields
- - Deadline:
deadline (top-level) formatted as Mon DD, YYYY (or "Rolling" if null) - Apply link:
submissionUrl (top-level), fall back to metadata.socialLinks.grantsSite or metadata.website or metadata.socialLinks.website (first non-empty)
Edge Cases
| Scenario | Response |
|---|
| No results | If the user specified an ecosystem, run the full ecosystem search strategy (Phase 1 + Phase 2) before giving up. If no ecosystem was specified, broaden non-ecosystem filters first (remove type, budget, or keyword filters). If still none: "No programs found matching your criteria. Try broadening — remove type, ecosystem, or budget filters." |
| No query |
Ask: "What kind of funding are you looking for? I can search grants, hackathons, bounties, accelerators, VC funds, and RFPs — filtered by ecosystem, budget, category, or keywords." |
| "more results" / "page 2" | Re-run with
page=2 |
| API returns empty
programs array | Check if filters are too narrow. Suggest removing one filter at a time. |
| API response missing expected fields | Use fallback values: show "N/A" for missing budget, "Rolling" for missing deadline, skip missing description. Never fail on a missing optional field. |
Error Handling
| Error | Cause | Action |
|---|
| HTTP 5xx | API server issue | "The Karma API is temporarily unavailable. Try again in a moment." |
| HTTP 429 |
Rate limiting | Wait 5 seconds, retry once. If it fails again, tell the user to wait. |
| Connection timeout | Network or API down | "Could not reach the Karma API. Check your connection or try again shortly." |
| Malformed JSON response | Unexpected API change | "Got an unexpected response from the API. The response format may have changed." |
| Community lookup returns no match | User's ecosystem name doesn't match any community | Fall back to
ecosystems= and
name= queries only. Do not fail — partial results are better than none. |
Troubleshooting
Ecosystem search returns 0 results
The user asked for an ecosystem (e.g., "Monad grants") but all 3 queries returned nothing.
- - Verify the ecosystem name against the known values in INLINECODE59
- Try a broader
name= search with just the keyword - The ecosystem may genuinely have no programs listed yet — tell the user
Community UID lookup finds no match
The community list (~48 entries) doesn't contain a match for the user's query.
- - Try partial matching: "OP" should match "Optimism"
- Try without the community query —
ecosystems= and name= may still return results - Do not block on this — proceed with the other two queries
Results look stale or incomplete
Programs may have outdated metadata (missing budgets, old deadlines).
- - Present what's available; do not hide results with missing fields
- Use "N/A" or "Rolling" for missing values
- Note to the user: "Some programs may have incomplete information"
资助项目查找器
通过公共API搜索Karma资助地图中的资助项目。
注册表包含6种项目类型:资助金、黑客松、赏金、加速器、风险投资基金和RFP。请使用项目/机会/资助——而不仅仅是资助金。
完整的API参数、响应格式和已知值,请参阅references/api-reference.md。
工作流程
步骤1:映射用户请求
| 用户输入 | 映射结果 |
|---|
| 以太坊项目 | ecosystems=Ethereum + 生态系统搜索策略 |
| 黑客松 |
type=hackathon |
| 以太坊上的黑客松 | type=hackathon + 生态系统搜索策略 |
| Solana上的赏金 | type=bounty + 生态系统搜索策略 |
| 超过500美元的赏金 | type=bounty&minGrantSize=500 |
| 加速器项目 | type=accelerator |
| 投资DeFi的风险投资 | type=vc_fund&name=DeFi |
| Optimism的公开RFP | type=rfp&organization=Optimism |
| 以太坊上的资助金和黑客松 | type=grant,hackathon + 生态系统搜索策略 |
| Optimism上的DeFi资助 | name=DeFi + 生态系统搜索策略 |
| 超过5万美元的项目 | minGrantSize=50000 |
| 低于10万美元的资助 | maxGrantSize=100000 |
| 基础设施 | name=infrastructure |
| 活跃项目 | status=active |
| Optimism上的追溯性资助 | categories=Retroactive%20Funding + 生态系统搜索策略 |
| Karma上的项目 | onlyOnKarma=true |
| 本周即将截止的项目 | sortField=endsAt&sortOrder=asc&status=active |
| (无查询) | 询问用户想找什么 |
预算简写:K→000,M→000000(例如,$50K → 50000,$1M → 1000000)。
URL编码: 包含空格的值必须在curl URL中进行百分号编码(例如,categories=Retroactive%20Funding)。
步骤2:生态系统搜索策略
如果查询没有生态系统组件,跳过此步骤直接进入步骤3。
ecosystems元数据字段通常为空——许多项目仅通过communities字段与生态系统关联。使用两阶段方法:
阶段1——先尝试ecosystems=:
使用ecosystems={name}查询。如果返回足够的结果(5个以上),展示结果并进入步骤4。
阶段2——通过社区查找补充(仅在阶段1结果稀疏时):
如果阶段1返回少于5个结果,运行以下两个额外查询并合并:
- 1. 社区UID查找:从GET /v2/communities?limit=100获取所有社区,通过与社区名称比较(不区分大小写,部分匹配)找到最佳匹配,然后使用communityUid={uid}查询
- name={name}——标题文本搜索,通用后备方案
在展示前按id去重所有合并结果。
步骤3:构建并执行请求
通过Bash使用curl。关键:每个请求必须包含以下跟踪头。切勿省略。
在第一个请求之前,生成一个跟踪ID:
bash
INVOCATION_ID=$(uuidgen)
每个curl调用必须包含这些查询默认值和跟踪头(详情请参阅references/api-reference.md):
查询默认值(对于截止日期查询,覆盖sortField=endsAt&sortOrder=asc)
isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc
必需的头——包含在每个请求中
从此技能的frontmatter metadata.version读取版本
-H X-Source: skill:find-funding-opportunities
-H X-Invocation-Id: $INVOCATION_ID
-H X-Skill-Version: {metadata.version}
bash
无生态系统
curl -s -H X-Source: skill:find-funding-opportunities -H X-Invocation-Id: $INVOCATION_ID -H X-Skill-Version: {metadata.version} \
https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&type=hackathon
生态系统——阶段1
curl -s -H X-Source: skill:find-funding-opportunities -H X-Invocation-Id: $INVOCATION_ID -H X-Skill-Version: {metadata.version} \
https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&ecosystems=Ethereum
生态系统——阶段2(仅在阶段1返回少于5个结果时)
curl -s -H X-Source: skill:find-funding-opportunities -H X-Invocation-Id: $INVOCATION_ID -H X-Skill-Version: {metadata.version} \
https://gapapi.karmahq.xyz/v2/communities?limit=100
从响应中匹配社区UID,然后:
curl -s -H X-Source: skill:find-funding-opportunities -H X-Invocation-Id: $INVOCATION_ID -H X-Skill-Version: {metadata.version} \
https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&communityUid={uid}
curl -s -H X-Source: skill:find-funding-opportunities -H X-Invocation-Id: $INVOCATION_ID -H X-Skill-Version: {metadata.version} \
https://gapapi.karmahq.xyz/v2/program-registry/search?isValid=accepted&limit=10&sortField=updatedAt&sortOrder=desc&name=Ethereum
步骤4:格式化结果
在每个结果中包含项目类型。根据类型调整详情行:
找到42个项目(显示前10个):
- 1. Optimism资助金 [grant] — Optimism
为Optimism建设者提供的追溯性和前瞻性资助
预算:$10M | 状态:活跃
申请:https://app.charmverse.io/...
- 2. ETHDenver 2026 [hackathon] — 以太坊
年度以太坊黑客松和会议
日期:2026年3月1日–7日 | 截止:2026年2月15日
申请:https://ethdenver.com/apply
- 3. Rust智能合约审计 [bounty] — Solana
审计Solana程序的漏洞
奖励:$5,000 | 难度:高级
申请:https://superteam.fun/...
显示10个中的42个。询问更多或缩小搜索范围。
字段映射
- - 名称:metadata.title(后备为name)
- 类型标签:方括号中的type:[grant]、[hackathon]、[bounty]、[accelerator]、[vc_fund]、[rfp]
- 生态系统:metadata.ecosystems用, 连接(后备为communities[0].name)
- 描述:metadata.description截断至约120个字符
类型特定详情行
- - grant:预算:{programBudget} | 状态:{status}
- hackathon:日期:{startsAt}–{endsAt} | 截止:{deadline}
- bounty:奖励:{programBudget} | 难度:{difficulty if available}
- accelerator:阶段:{stage if available} | 截止:{deadline}
- vc_fund:支票规模:{minGrantSize}–{maxGrantSize} | 阶段:{stage if available}
- rfp:预算:{programBudget} | 组织:{organizations[0]} | 截止:{deadline}
- 后备:预算:{programBudget} | 状态:{status}
公共字段
- - 截止日期:deadline(顶层)格式化为月 DD, YYYY(如果为null则显示滚动申请)
- 申请链接:submissionUrl