Perq
Проверенные бесплатные ИИ-кредиты, бесплатные тарифы и стартап-программы. У каждого результата есть ссылка на источник и дата последней проверки.
Размещённый MCP-сервер
npx add-mcp 'https://perq.sh/mcp'Устанавливается в Claude Code, Codex, Cursor и другие
Документация
Markdown copy of https://perq.sh/agents (For agents: search API and MCP server | Perq), generated 2026-10-30. Index of every page for agents: https://perq.sh/llms.txt. Search API and MCP server: https://perq.sh/agents. Give your AI agent Perq's verified free AI credits: a search API, a remote MCP server at https://perq.sh/mcp, and an agent skill. No key, read-only.
MCP · REST · llms.txt · skill
For agents
Claude Code
claude mcp add --transport http perq https://perq.sh/mcp
Cursor / any MCP client
{
"mcpServers": {
"perq": {
"url": "https://perq.sh/mcp"
}
}
}
MCP serverSearch APIClaims & votesEarly accessAgent skillllms.txt
Let your agent answer “what free credits can I get for X?” with Perq’s verified data: 215 live offers across 12 categories and 11 packs, each with the vendor’s source URL, a verbatim quote from that page and a last-verified time (latest: Oct 30, 2026, 6:08 AM ET). No API key, no signup, read-only, CORS open. Want new offers before they’re listed? See early access (webhook, private feed, MCP).
Please show the source link and last-verified date with every offer, and never present an offer that the API didn’t return. Terms belong to the vendors and can change.
Remote MCP server
URL: https://perq.sh/mcp. Transport: Streamable HTTP (stateless, JSON responses). No auth. Tools:
find_credits(need, filters?): Answers “what free credits can I get for X”. Ranked offers for a plain-language need (need may be empty when you only filter or sort). Filters: category, type, student, no_application, status (live | closed | all), audience (startup | student | anyone | members), min_value (USD), sort (relevance | popular | votes | newest | verified | value | az), include_closed, limit. Results include live claims, claims_7d and votes counts and a claim_redirect_url.trending(by?, window?, category?, limit?): What people actually claim (or vote “worked for me”) this week or all time. Real counts only: an empty list says nothing has been claimed yet.get_offer(id): One offer with its source quote, last-verified time, recorded changes and the packs that contain it.list_packs(): Curated bundles with their headline and up-to total where one is computed.get_pack(slug): One pack with every offer and how its total was computed.recently_changed(days?): Offers added, updated or closed in the last N days (US Eastern dates).subscribe(email | webhook_url, topics?): Early access: new offers about 24h before they are public. Email gets a confirmation link; a webhook gets its signing secret, a private feed token and a signed verification ping.early_offers(token): Embargoed offers (each with public_after) plus new, changed and closed events from the last 30 days, for a private feed token.
Claude Code
claude mcp add --transport http perq https://perq.sh/mcp
Cursor (~/.cursor/mcp.json or .cursor/mcp.json)
{
"mcpServers": {
"perq": {
"url": "https://perq.sh/mcp"
}
}
}
VS Code (.vscode/mcp.json)
{
"servers": {
"perq": {
"type": "http",
"url": "https://perq.sh/mcp"
}
}
}
Codex (~/.codex/config.toml)
[mcp_servers.perq]
url = "https://perq.sh/mcp"
Claude Desktop and claude.ai
Settings → Connectors → Add custom connector, then paste https://perq.sh/mcp.
Other clients
Point any MCP client that supports Streamable HTTP at https://perq.sh/mcp. For stdio-only clients, bridge it:
# Any client that only speaks stdio
npx -y mcp-remote https://perq.sh/mcp
Raw JSON-RPC, for testing:
curl -sS https://perq.sh/mcp -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"find_credits","arguments":{"need":"free speech to text credits","filters":{"limit":3}}}}'
Discovery
Server name sh.perq/perq. Server Card: /mcp/server-card (also at /.well-known/mcp-server-card), listed in /.well-known/ai-catalog.json. Card plus tool list: /.well-known/mcp.json.
Search API
GET https://perq.sh/api/search?q=<need> returns offers ranked against a plain-language need. Closed offers are excluded unless include_closed=true.
q: the need, e.g. “free speech to text credits”, “GPU for a bootstrapped startup”, “vector database”.category:agents-automation,cloud-gpu,llm-api,dev-tools,observability,database-backend,voice-audio,perk-marketplace,vector-db,image-video,productivity,acceleratortype:startup-program,free-tier,signup-credit,student-education,marketplace-perk,accelerator-perk,promo-codestudent=true: only offers for students, educators or researchers.no_application=true: only free tiers, signup credits and promo codes (no application or approval).sort:relevance(default),popular(most claimed in the last 7 days, then all time),votes(most “worked for me”),newest(first listed),verified(most recently re-checked),value(largest stated one-time USD credit),az. Closed offers always sort last.status:live(default),closedorall(same asinclude_closed=true).audience(aliaseligibility):startup,student,anyone(open sign-up: free tiers, signup credits, promo codes),members(customers of a bank or perk marketplace). Comma-separate to require several.min_value: minimum stated one-time USD amount, e.g.10000or10k. Only offers whosecredit_valueleads with an explicit USD figure have avalue_usd; others are left out when this is set.categoryandtypealso take comma-separated lists.limit: 1–50, default 10. Unknownsort,statusoraudiencevalues return 400 with the allowed values.
Each result also carries value_usd, audience, live claims, claims_7d and votes (null if counts are briefly unavailable; see counts_available) and claim_redirect_url.
curl -sS -G "https://perq.sh/api/search" \
--data-urlencode "q=free speech to text credits" -d limit=5
# Most claimed LLM API offers this week, with live counts
curl -sS "https://perq.sh/api/search?q=&category=llm-api&sort=popular&limit=5"
# Startup programs worth at least $100,000 (stated one-time USD), largest first
curl -sS "https://perq.sh/api/search?q=&audience=startup&min_value=100000&sort=value"
# GPU compute for a bootstrapped startup, no application needed
curl -sS -G "https://perq.sh/api/search" --data-urlencode "q=GPU for a bootstrapped startup" -d no_application=true
# Student and research perks for LLM APIs
curl -sS -G "https://perq.sh/api/search" --data-urlencode "q=LLM API" -d student=true
# One offer by id
curl -sS "https://perq.sh/api/offers/deepgram-200-credit"
GET https://perq.sh/api/offers/<id> returns one offer (404 with suggestions for an unknown id). Response fields include credit_value, eligibility, how_to_claim, claim_url, source_url, source_snippet, last_verified and status. Example result (real data):
{
"query": "free speech to text credits",
"total_matches": "…",
"results": [
{
"id": "deepgram-200-credit",
"vendor": "Deepgram",
"category": "voice/audio",
"offer_type": "signup credit",
"status": "live",
"credit_value": "$200 free credit, then pay-as-you-go",
"eligibility": "New Deepgram accounts",
"how_to_claim": "Sign up",
"claim_url": "https://deepgram.com/pricing",
"source_url": "https://deepgram.com/pricing",
"source_snippet": "Free $200 Credit then pay-as-you-go",
"last_verified": "2026-10-30T06:08:42-04:00",
"no_application": true,
"value_usd": 200,
"audience": [
"anyone"
],
"perq_url": "https://perq.sh/offers/deepgram-200-credit",
"claim_redirect_url": "https://perq.sh/go/deepgram-200-credit?via=agent",
"claims": "…",
"claims_7d": "…",
"votes": "…",
"score": "…"
}
],
"counts_available": true
}
Static files: /api/offers.json (full dataset), /api/packs.json (packs with total breakdowns), /llms.txt, /llms-full.txt, /feed.xml.
Claims and votes
Counts are real and never seeded or padded. A claim is one visitor clicking an offer’s claim link (one per visitor per offer per day); a vote is “worked for me” (same dedupe, rate limited per network). Visitors are a salted daily hash of IP and User-Agent: no cookies, no stored IPs, salts deleted after the day (same approach as /stats). Bots and our own tests (X-Perq-Test header) are excluded.
GET https://perq.sh/api/counts:{"offers":{"<id>":{"claims":…,"claims_7d":…,"claims_agent":…,"votes":…,"votes_7d":…}},"totals":{…}}. Only offers with at least one claim or vote are listed. Cached for about 20 seconds.GET https://perq.sh/go/<id>?via=agent: a 302 straight to the vendor’sclaim_urlthat counts one agent-referred claim (returned asclaim_redirect_url). Nothing is added to the vendor URL. Hand it to your user instead ofclaim_urlif you want their claim to count toward “most claimed”;claim_urlstays the direct link.POST https://perq.sh/api/claim{"id":"<offer id>"}: records a claim when your client openedclaim_urlitself. 204. Agent claims are counted separately from site visitors.
Early access: new offers before they’re public
Newly verified offers go to subscribers first and appear on Perq (site, search API, MCP search, llms.txt, feeds, sitemap) about 24 hours later. Closures and changes are delivered right away. People can subscribe by email on /newsletter. Agents have three options:
1. Webhook (push)
POST https://perq.sh/api/subscribe with webhook_url (https, public host, port 443 or 8443) and optional topics (llm-api, gpu, voice, startup-programs, student, agents, dev-tools; omit for everything).
curl -sS https://perq.sh/api/subscribe -H 'content-type: application/json' \
-d '{"webhook_url":"https://example.com/hooks/perq","topics":["llm-api","gpu"]}'
Response (201). The secret is shown once: store it.
{
"id": "sub_…",
"kind": "webhook",
"status": "active",
"topics": [
"llm-api",
"gpu"
],
"webhook_url": "https://example.com/hooks/perq",
"secret": "whsec_… (shown once)",
"feed_token": "pf_sub_….…",
"feed_json": "https://perq.sh/api/early/pf_sub_….….json",
"feed_rss": "https://perq.sh/api/early/pf_sub_….….rss",
"unsubscribe": {
"method": "POST",
"url": "https://perq.sh/api/unsubscribe",
"body": {
"token": "pf_sub_….…"
}
},
"verification_ping": {
"delivered": true,
"http_status": 200
}
}
We immediately POST a signed perq.verification ping. Answer any 2xx to activate deliveries (a failed ping is retried before each daily delivery for 7 days). After that, every new offer, change and closure arrives as one JSON POST with event type offer.new, offer.changed or offer.closed:
{
"type": "offer.new",
"event_id": "new:<offer-id>",
"delivery_id": "dlv_…",
"created_at": "2026-10-21T10:20:00Z",
"subscriber_id": "sub_…",
"embargoed": true,
"public_after": "2026-10-22T10:20:00Z",
"offer": {
"id": "<offer-id>",
"vendor": "…",
"category": "…",
"offer_type": "…",
"status": "live",
"credit_value": "…",
"eligibility": "…",
"how_to_claim": "…",
"claim_url": "https://…",
"source_url": "https://…",
"source_snippet": "…",
"last_verified": "…",
"page_url": "https://perq.sh/offers/<offer-id>"
},
"feed_json": "https://perq.sh/api/early/pf_….json"
}
Headers: X-Perq-Event, X-Perq-Delivery (dedupe on it), X-Perq-Timestamp (unix seconds) and X-Perq-Signature: v1=<hex HMAC-SHA256(secret, timestamp + "." + raw body)>. Redirects are not followed; failed deliveries are retried on the next daily run (up to 6 attempts).
import crypto from 'node:crypto';
// rawBody: the exact bytes received. secret: the whsec_… value from signup.
function verifyPerq(secret, rawBody, headers) {
const ts = headers['x-perq-timestamp'], sig = headers['x-perq-signature'] || '';
if (!ts || Math.abs(Date.now() / 1000 - Number(ts)) > 300) return false; // replay window: 5 minutes
const want = 'v1=' + crypto.createHmac('sha256', secret).update(ts + '.' + rawBody).digest('hex');
return sig.length === want.length && crypto.timingSafeEqual(Buffer.from(sig), Buffer.from(want));
} // then dedupe on x-perq-delivery
import hmac, hashlib, time
def verify_perq(secret: str, raw_body: bytes, headers) -> bool:
ts, sig = headers.get('X-Perq-Timestamp', ''), headers.get('X-Perq-Signature', '')
if not ts or abs(time.time() - int(ts)) > 300: return False
want = 'v1=' + hmac.new(secret.encode(), ts.encode() + b'.' + raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(sig, want)
2. Private feed (pull)
Every subscriber gets a private feed: GET https://perq.sh/api/early/<feed_token>.json or .rss. It lists offers that are still embargoed (each with public_after) and new, changed and closed events from the last 30 days, filtered by your topics. The token works like a password. Webhook signups get it in the response; email subscribers see it after they confirm and in every digest.
3. MCP
The MCP server at https://perq.sh/mcp has subscribe (email or webhook_url, topics) and early_offers(token). Only subscribe an address or URL your user asked you to.
curl -sS https://perq.sh/mcp -H 'content-type: application/json' -H 'accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"early_offers","arguments":{"token":"pf_sub_….…"}}}'
Email (for people)
curl -sS https://perq.sh/api/subscribe -H 'content-type: application/json' \
-d '{"email":"you@example.com","topics":["voice"]}'
# -> 202 {"status":"pending_confirmation", ...}: the person must click the link in the email
Double opt-in: nothing is sent until the confirmation link is clicked. One digest per day, only on days with something new. One-click unsubscribe (RFC 8058 List-Unsubscribe) in every email.
Unsubscribe and limits
Webhooks and feeds: POST https://perq.sh/api/unsubscribe with {"token":"<feed_token>"}. Limits per IP: 5 signups per 10 minutes (email) or per hour (webhooks); feeds 240 requests per hour per token. Webhook URLs that resolve to private, loopback, link-local or reserved addresses are rejected, and the address is checked again before every delivery. Errors are JSON: {"error":"rate_limited","message":"…","retry_after":…}.
Agent skill
A SKILL.md (agentskills.io format) that tells an agent when to use Perq and how to present results: /skill.md. Source and plugin manifests: github.com/f-o-x11/perq-skill (MIT).
Any agent (Claude Code, Codex, Cursor, Hermes Agent and others), via the skills CLI:
npx skills add f-o-x11/perq-skill
Claude Code plugin (skill + MCP server):
claude plugin marketplace add f-o-x11/perq-skill
claude plugin install perq@perq
Gemini CLI extension:
gemini extensions install https://github.com/f-o-x11/perq-skill
Or copy the file by hand for Claude Code:
mkdir -p ~/.claude/skills/perq && curl -fsSL https://perq.sh/skill.md -o ~/.claude/skills/perq/SKILL.md
Fair use
Free to use with attribution (a link to https://perq.sh). Responses are cached for five minutes. The data is re-verified against vendor pages daily. Questions or corrections: ops@avatar33.com. Perq is operated by Avatar 8 LLC. No paid ranking.
Published by Avatar 8 (Avatar 8 LLC), ops@avatar33.com. Data: https://perq.sh/api/offers.json · OpenAPI: https://perq.sh/openapi.json