Productivity & teams
Redmine
Issues, time entries and projects in your Redmine, from your agent.
12 endpoints
Read Recall cards, tags and review status with an AI agent or script. Use MCP or REST to build knowledge summaries, Markdown exports and review reports.
13 tools Read and write
Recall has had an official MCP server and REST API since April 2026, both on the Free plan. They search, list and read your cards, and nothing else: no saving, no notes, no tags, no deletes (checked 25 Oct 2026). Cotlet runs 13 Recall tools hosted, the reads plus the writes, over MCP for agents and REST for scripts.
| What you need | Official MCP | Official API | Cotlet |
|---|---|---|---|
| Search and read cards | Yes | Yes, in your code | Yes |
| Tag list and knowledge base stats | Yes | No endpoint | Yes |
| Save links and write notes | No | No | Yes |
| Add or remove tags, delete cards | No | No | Yes, deletes after your OK |
| Markdown export, connections, review | No | No | Yes |
| The route Recall provides | Yes, official | Yes, official | Uses the web app |
Checked 25 Oct 2026. Sources: Recall Docs: API · Recall Docs: MCP Server · Recall changelog · Recall feature request: write API
Use your own account in its Cotlet Cloud Browser.
Connect your agent or create a Cotlet API key.
Ask your agent or send an HTTP request.
We never keep your Recall login, and no card is deleted until you approve it. Who can see your session
Use MCP with your AI agent, or HTTP requests in n8n, Make, Zapier and scripts. Follow the MCP setup below or jump to the REST guide.
Enable Recall for agents. Create a Cotlet account, sign in to Recall in its Cloud Browser and press Enable for agents.
Add the Cotlet address. Put https://cotlet.dev/mcp/v1 into your agent as an MCP server or connector.
Allow the connection. Chat apps send you to a Cotlet sign-in. Editors, n8n and scripts take an API key from the console.
The shared address, https://cotlet.dev/mcp/v1, carries Recall next to your other apps. Recall's own server can stay connected too; give it the reads and Cotlet the writes. Enabled Recall after connecting? Refresh the connector so the new tools appear.
Settings > Connectors > Add custom connector
URL: https://cotlet.dev/mcp/v1/connect
Claude Code:
claude mcp add --transport http cotlet-recall \
https://cotlet.dev/mcp/v1 \
--header "Authorization: Bearer $COTLET_API_KEY" Settings > Apps & Connectors > Create
MCP server URL: https://cotlet.dev/mcp/v1/connect
Authentication: OAuth // ~/.cursor/mcp.json
{
"mcpServers": {
"cotlet-recall": {
"url": "https://cotlet.dev/mcp/v1",
"headers": { "Authorization": "Bearer ${env:COTLET_API_KEY}" }
}
}
} # ~/.codex/config.toml
[mcp_servers.cotlet-recall]
url = "https://cotlet.dev/mcp/v1"
bearer_token_env_var = "COTLET_API_KEY" MCP Client Tool (inside an AI Agent)
Transport: HTTP Streamable
URL: https://cotlet.dev/mcp/v1
Auth: Bearer, <your key>
Tool: recall_write Make: MCP Client > Call a tool
Zapier: MCP Client by Zapier > Run Tool
Server URL: https://cotlet.dev/mcp/v1
Token: <your key>
Tool: recall_read Create a Cotlet API key with access to Recall and its read operations. Store it as COTLET_API_KEY in your environment or automation platform's credential store.
Sign in to Recall in its Cotlet Cloud Browser and enable the app for agents. Use your own Recall account; plan restrictions still apply to paid features.
curl "https://cotlet.dev/api/v1/recall/cards/search?q=pricing&mode=focused" \
-H "Authorization: Bearer $COTLET_API_KEY" A successful REST call puts the tool output in result. This illustrative response excerpt omits call IDs, messages and credit details.
{
"status": "success",
"app": "recall",
"tool": "search_cards",
"result": {
"documents": [
{
"card_id": "card_8f2a61",
"title": "How we price a B2B SaaS",
"created_at": "Oct 14, 2026",
"source_url": "https://blog.example.com/how-we-price",
"chunks": [
{
"chunk_id": "chunk_004",
"content": "Start with three tiers and anchor on the middle one.",
"source": "page 2"
}
]
}
],
"total_cards": 1,
"total_chunks": 1
}
} Read result.documents, where text chunks are grouped by card. Focused search selects fewer cards with more chunks; exhaustive mode selects more cards with preview chunks.
Neither search mode exposes cursor pagination. Narrow card lists by date or tag; multiple tag IDs match with OR.
get_card returns selected chunks, defaulting to 20 with a maximum of 50. Use focus_query for a topic and do not treat selected chunks as guaranteed complete card text.
| Tool | Connect through | Example workflow |
|---|---|---|
| n8n | HTTP Request | Search cards and read selected card chunks into a research brief that retains source references. |
| Make | HTTP > Make a request | Read selected cards and export their Markdown into your chosen knowledge archive. |
| Python or Node.js | REST API | Combine knowledge-base stats and review status into a personal learning dashboard. |
Send Authorization: Bearer <your Cotlet API key> in request headers. You configure the schedule, destination and record comparisons.
Cotlet reads Recall; your workflow steps write to your chosen destination. These HTTP workflows do not require a native Cotlet connector or a prebuilt template.
Python and Node.js can use the same HTTP requests without an AI agent. Keep access keys in credentials, outside shared workflow exports.
The API and MCP reference lists operations and inputs. The REST API guide explains authentication, errors and approvals.
Content comes back as text chunks with page numbers or timestamps. The whole-library zip export in Settings is not a tool; Markdown goes one card at a time.
Runs Recall's combined semantic and keyword search over your cards and returns the matching text chunks grouped by card. mode focused returns fewer cards with more chunks each and suits answering a question; exhaustive returns more cards with a few preview chunks each and suits listing. Pass card_id to search inside one card. tag_ids match with OR logic. Read-only.
MCP callrecall_read → search_cards
REST endpointGET https://cotlet.dev/api/v1/recall/cards/search
| Name | Type | Description |
|---|---|---|
| q string required | string | Search query. |
| mode enum | enum | focused or exhaustive. Default: focused. |
| card_id string | string | Search inside this card only. |
| tag_ids string[] | string[] | Only cards with one of these tags. IDs from list_tags. |
| date_from date | date | Only cards saved on or after this date. |
| date_to date | date | Only cards saved on or before this date. |
| source_url_contains string | string | Only cards whose source URL contains this text, e.g. a domain. |
{
"q": "q"
} {
"documents": [
{
"card_id": "card_8f2a61",
"title": "How we price a B2B SaaS",
"created_at": "Oct 14, 2026",
"source_url": "https://blog.example.com/how-we-price",
"chunks": [
{
"chunk_id": "chunk_004",
"content": "Start with three tiers and anchor on the middle one.",
"source": "page 2"
}
]
}
],
"total_cards": 1,
"total_chunks": 1
} Returns the cards that match the filters, each with id, title, created_at and, when Recall has them, image and source_url. Without filters it returns all of your cards, so pass a date range or a tag on a large knowledge base. A card with no source URL (a note) is not matched by source_url_contains. Use card_id from the result in get_card and the write tools.
MCP callrecall_read → list_cards
REST endpointGET https://cotlet.dev/api/v1/recall/cards
| Name | Type | Description |
|---|---|---|
| tag_ids string[] | string[] | Only cards with one of these tags. IDs from list_tags. |
| date_from date | date | Only cards saved on or after this date. |
| date_to date | date | Only cards saved on or before this date. |
| source_url_contains string | string | Only cards whose source URL contains this text, e.g. a domain. |
{
"results": [
{
"card_id": "card_8f2a61",
"title": "How we price a B2B SaaS",
"created_at": "Oct 14, 2026",
"source_url": "https://blog.example.com/how-we-price"
},
{
"card_id": "card_c40b19",
"title": "Notes on onboarding calls",
"created_at": "Oct 12, 2026"
}
],
"total_count": 2
} Returns one card with its content chunks and source URL. Chunks carry a source such as a page number and, for video and podcasts, timestamps. Pass focus_query to get the chunks that match a topic instead of a generic selection, which helps on long cards. max_chunks defaults to 20 and goes up to 50. A card that does not exist returns APP_NOT_FOUND.
MCP callrecall_read → get_card
REST endpointGET https://cotlet.dev/api/v1/recall/cards/{card_id}
| Name | Type | Description |
|---|---|---|
| card_id string required | string | Card ID from list_cards or search_cards. |
| focus_query string | string | Return the chunks that match this query. |
| max_chunks integer | integer | 1 to 50. Default: 20. |
{
"card_id": "card_8c41d2"
} {
"card_id": "card_8f2a61",
"title": "How we price a B2B SaaS",
"created_at": "Oct 14, 2026",
"source_url": "https://blog.example.com/how-we-price",
"chunks": [
{
"chunk_id": "chunk_004",
"content": "Start with three tiers and anchor on the middle one.",
"source": "page 2"
},
{
"chunk_id": "chunk_007",
"content": "Annual billing at a 20% discount lifts retention.",
"source": "page 3"
}
]
} Gives an overview of the whole knowledge base: the number of cards, the date of the oldest and newest card, the most used tags and the domains you save from most. Use it to decide where to look first. Read-only.
MCP callrecall_read → get_knowledge_base_stats
REST endpointGET https://cotlet.dev/api/v1/recall/knowledge-base-stats
No parameters.
{
"total_cards": 412,
"oldest_card": "Mar 3, 2025",
"newest_card": "Oct 24, 2026",
"top_tags": [
{
"name": "Reading",
"cards": 31
},
{
"name": "Business/Pricing",
"cards": 9
}
],
"top_sources": [
{
"domain": "youtube.com",
"cards": 74
},
{
"domain": "blog.example.com",
"cards": 22
}
]
} Returns one card as Markdown text. It is the single-card export from the card menu. The export of the whole knowledge base in Settings is a zip file and is not available as a tool. Nothing changes in Recall.
MCP callrecall_read → export_card_markdown
REST endpointGET https://cotlet.dev/api/v1/recall/cards/{card_id}/markdown/export
| Name | Type | Description |
|---|---|---|
| card_id string required | string | Card ID from list_cards or search_cards. |
{
"card_id": "card_8c41d2"
} {
"card_id": "card_8f2a61",
"filename": "how-we-price-a-b2b-saas.md",
"markdown": "# How we price a B2B SaaS\n\nStart with three tiers and anchor on the middle one.\n"
} One link per save. On the Free plan each new card's summary counts toward Recall's 10 a month. A deleted card is gone for good.
Does what Add > paste a URL does: it creates a card from one link. Recall adds a tag on its own and, by default, writes a concise summary into the Notebook; both follow your Recall settings. On the Free plan a summary counts toward the 10 AI summaries per month. Returns the new card_id. Saving reaches no one and one delete_card call removes the card, so it does not wait for your OK.
MCP callrecall_write → save_url
REST endpointPOST https://cotlet.dev/api/v1/recall/url/save
| Name | Type | Description |
|---|---|---|
| url string required | string | The link to save. One URL per call. |
{
"url": "https://blog.example.com/pricing-psychology"
} {
"card_id": "card_e91d07",
"title": "Pricing psychology for SaaS",
"source_url": "https://blog.example.com/pricing-psychology",
"status": "saved",
"tags": [
"Business/Pricing"
]
} Does what the pen button does: it creates a card with an empty Notebook and fills it with your text. The text is plain, without images or tables. The note gets the same tags, connections and AI features as any card. Writing a note reaches no one and delete_card undoes it, so it does not wait for your OK.
MCP callrecall_write → create_note
REST endpointPOST https://cotlet.dev/api/v1/recall/notes
| Name | Type | Description |
|---|---|---|
| title string required | string | Title of the note. |
| body string required | string | Text of the note. |
{
"title": "title",
"body": "body"
} {
"card_id": "card_5a3c88",
"title": "Pricing pages compared",
"status": "created"
} Deletes one card with its Notebook, summary and connections. Recall has no recycle bin, so a deleted card cannot be recovered, and Cotlet cannot bring it back. Use export_card_markdown first if you may want it later. Returns the deleted card_id and title. By default you confirm each call; you can switch that off for this tool.
MCP callrecall_write → delete_card
REST endpointDELETE https://cotlet.dev/api/v1/recall/cards/{card_id}
| Name | Type | Description |
|---|---|---|
| card_id string required | string | Card ID from list_cards or search_cards. |
{
"card_id": "card_8c41d2"
} {
"card_id": "card_c40b19",
"title": "Notes on onboarding calls",
"status": "deleted"
} Reads the Review dashboard only. It does not answer questions or start a quiz.
Returns what the Review dashboard shows: how many questions are ready now, how many are due this week and your streak. by_stage counts every question in the five stages Recall uses: New, Learning, Practiced, Confident and Mastered. It only reports; it does not answer or start a review.
MCP callrecall_read → get_review_status
REST endpointGET https://cotlet.dev/api/v1/recall/review-status
No parameters.
{
"ready_now": 18,
"due_this_week": 42,
"streak_days": 6,
"total_questions": 120,
"by_stage": {
"new": 14,
"learning": 22,
"practiced": 31,
"confident": 36,
"mastered": 17
}
} Your signed-in Recall profile, encrypted with AES-256-GCM, in Finland. No password or code.
The 13 Recall tools. Never the cookie or your Recall API keys.
Your whole library: cards, notebooks, tags, review questions.
Plan and billing, API keys, chats, personas, full export, tag deletion.
Recall can mail a one-time code. You type it in, we never do.
Disable for agents, reset the browser, or log out of Recall there.
Our site scores A+ on Qualys SSL Labs, securityheaders.com and Mozilla Observatory (live results). We have no SOC 2 report or third-party pentest yet.
"Automated Usage: Using scripts, bots, or automation tools to artificially increase usage."
The Terms of Service repeat it as "automation to artificially generate excessive usage" and let Recall suspend accounts that break the policy. The first step the policy names is a talk and a paused subscription, not a ban. One more line matters: Recall may refuse a refund in the first 30 days for "automation". Recall ships its own API and MCP, so an agent in your library is expected; a loop that saves hundreds of links a day to burn summaries is not. We found no public case of a Recall account paused or closed for automation (checked 25 Oct 2026).
Recall says it is built for one user and that heavy use across many devices can cause trouble. Keep big imports to its own CSV import (up to 1,000 links) and let the agent tag and file after.
Recall ships release notes every two weeks or so (changelog, Jun to Oct 2026), and a moved menu or renamed field is ours to fix. When Recall's own MCP gets write access, the "MCP 2.0" it lists as coming next, we will say here which tools it covers. status.cotlet.dev watches the site, console and API every 3 minutes.
| Action | Undo |
|---|---|
| Save a link | Delete the card; a Free summary already used stays used |
| Create a note | Delete the card |
| Add tags | Remove them with remove_tags_from_card |
| Remove tags | Add them back with add_tags_to_card |
| Delete a card | No, Recall has no recycle bin |
1 of 13 tools asks first: delete_card. Saves, notes and tags reach nobody and undo with one call, so they run at once. You can switch the wait off for a scheduled cleanup.
A recycle bin is an open request on Recall's feedback board. Until it ships, export before you delete.
{
"name": "save_url",
"arguments": {
"url": "https://blog.example.com/pricing-psychology"
}
} curl -X POST https://cotlet.dev/api/v1/recall/url/save \
-H "Authorization: Bearer $COTLET_API_KEY" \
-H "Content-Type: application/json" \
-d '{"url":"https://blog.example.com/pricing-psychology"}' {
"card_id": "card_e91d07",
"title": "Pricing psychology for SaaS",
"source_url": "https://blog.example.com/pricing-psychology",
"status": "saved",
"tags": [
"Business/Pricing"
]
} A cron job or script reaches the same tools over REST at /api/v1/recall, with the same key and price. It can sit next to Recall's own read API in one script: Recall for search, Cotlet for saving. The tools table lists the REST path of each tool.
About $21 a monthfor one reader saving about 30 links a month, 3,580 credits. Your Recall plan stays with Recall.
| Job | Calls | Credits |
|---|---|---|
| Save a reading list and tag it, weekly | 17 × 4 | 680 |
| Friday digest of new cards | 11 × 4 | 440 |
| Research note from saved cards | 7 × 4 | 280 |
| Markdown backup of the week, weekly | 11 × 4 | 440 |
| Tag cards that have no tag | 18 × 1 | 180 |
| Clear out cards from one old site | 6 × 1 | 60 |
| Cloud Browser, 30 days | 1,500 | |
| Total | 3,580 |
The month is our example: Recall publishes no typical library size. If your agent only reads, Recall's own MCP does it for free. On Recall Free, 8 saves a week would pass the 10 summaries a month, so Plus fits this reader. Dollars at the $29 pack rate.
| Credits | Price, one time | Calls at 10 credits | Per 1,000 credits |
|---|---|---|---|
| 5,000 | $29 | 500 | $5.80 |
| 15,000 | $79 | 1,500 | $5.27 |
| 32,000 | $149 | 3,200 | $4.66 |
| 60,000 | $249 | 6,000 | $4.15 |
Only successful calls use credits; failed calls and timeouts cost nothing. At a balance of 0 calls pause, never a surprise charge. Authenticate with the Authorization: Bearer header.
| Option | What it does | Where it stops |
|---|---|---|
| Recall MCP server | Official, free, OAuth in the browser. 4 tools: search, filter, read a card, stats and tags. | Read-only. Writes are announced as "MCP 2.0", no date. |
| Recall API | Three read endpoints with an sk_ key from Settings. | No tags endpoint, no writes, code you host. |
| mcp-dir/recall-mcp | Hosted wrapper on the official API, MIT, 0 stars, last commit 21 Aug 2026. | The same reads as the official server. |
| Zapier, n8n | No Recall app or node. | Nothing to connect. |
| Recall extension and CSV import | Saves the page you are on, or up to 1,000 links from a file. | By hand; an agent cannot call them. |
For search and reading, Recall's own server is free and is the route Recall backs; use it. To save, write, tag, export or delete from an agent, nothing but Cotlet does it today. Both fit in the same agent, and when Recall ships writes of its own, switch the overlap back to Recall.
Take Group sp. z o.o., a software company registered in Poland, EU (VAT PL6342984273), runs Cotlet. It has worked since 2019 and was founded by Bart Krawczyk (Co-founder, CTO) and Jake Slugocki (Co-founder, SEO, sales and marketing). Send questions about the Recall tools to contact@cotlet.dev.
Yes. Call Cotlet's REST API from a script or an HTTP step in n8n, Make or Zapier with your Cotlet key. MCP is the alternative for AI agents; you do not need to connect an agent to use REST.
Sign up at https://cotlet.dev, open Recall under Integrations in the console and sign in to Recall in its Cloud Browser. The trial starts with your first app, with no card.
Yes, on the Free plan. Recall writes a concise summary into the Notebook by default, and the Free plan includes 10 AI summaries per month; Plus has unlimited summaries (Recall Pricing). You can switch to storing only the full content in your Recall settings, which Recall documents under Summarize content.
Recall's Fair Use Policy and Terms of Service ban scripts, bots or automation that artificially increase usage, for example to run up summaries. Saving, tagging and reading your own cards at a normal pace is not that. Keep bulk loops modest, because Recall can suspend an account for excessive automated usage.
No. Recall has no recycle bin, and a deleted card cannot be recovered (Recall Docs: Deleting Content). That is why delete_card asks for your OK on each call by default. Export the card as Markdown first if you may want it.
Recall says so. Its release notes of 19 Aug and 12 Sep 2026 list "MCP 2.0 with write access" under "Coming Next", without a date. On 25 Oct 2026 its docs still call the server read-only.
No. Nothing tells an agent that you saved a card. Run the agent on a schedule instead, for example a weekly list_cards from the last 7 days.
Only the way in differs. Both carry the same 13 tools, inputs and answers, with one API key and one price. Agents use MCP; scripts and HTTP steps use REST.
No. Cotlet is independent and not affiliated with Recall or recall.it.
Free 7-day trial with 2,000 credits, no card needed.
May we use Google Analytics to see which pages help people? It sets cookies only if you accept. No ads, and we never sell data. Cookie policy