Skip to main content
Use this catalog for Memex request shapes. Agents should fetch this page before the first Memex request in a new session and again whenever a request fails because of an unknown field, tool name, or argument shape.

Surface map

Use caseRESTMCPSkill or plugin
Search saved contentPOST /searchsearch_contentDefaults to the compact response shape. Use raw=true for the rich machine-readable payload. POST /search-content is also accepted.
Save content or a public URLPOST /save-content-entitysave_content_by_urlUse save-content-entity for structured saves. Use POST /save-content-by-url for URL-only saves.
Create a saved viewPOST /create-view-Creates a reusable saved search scope for the authenticated user.
List accessible saved viewsPOST /list-views-Returns owned views plus views shared with the authenticated user.
Search inside a saved viewPOST /execute-view-search-Runs the raw search response shape constrained to a view ID or public view token.
Create a public sharing linkPOST /ensure-shared-library-entry-linkcreate_sharing_linkCreates or updates a share link for saved content with view or collaborate access.
List public sharing linksPOST /list-shared-library-entry-linkslist_sharing_linksLists existing content share links and their view or collaborate access.
List subscribed feedsPOST /list-feedslist_subscribed_feedsReturns the authenticated user’s subscribed RSS and YouTube feeds.
Create an account for a humanPOST /agent-create-user-Used by agent signup flows
Fetch current plansPOST /get-available-plans-Used by credit purchase flows
Fetch all available tag namesPOST /get-available-tag-names-Returns the authenticated user’s current tag names
List auto-tagging rulesPOST /list-auto-tagging-rules-Returns the authenticated user’s auto-tagging rules
Create an auto-tagging rulePOST /create-auto-tagging-rule-Creates an auto-tagging rule for existing tag IDs
Complete checkout for an authenticated userPOST /checkout-Buys one-time credit plans with a Stripe Shared Payment Token
Preferred base URL: https://api.memex.garden

Core operations

Search saved content

  • REST route: POST https://api.memex.garden/search
  • Also accepted: POST https://api.memex.garden/search-content
  • MCP tool: search_content
  • Auth: Authentication
  • Response contract: Response shape

Parameters

FieldTypeRequiredNotes
querystringNoSearch text. Can include inline tags like #tag-name.
rewriteQuerybooleanNoRewrites the query before embedding generation.
forceFullQueryProcessingbooleanNoForces full query processing even for short queries.
includeFieldsstring[]NoOptional allow-list of fields to return on result entities.
excludeFieldsstring[]NoOptional block-list of result fields.
tagstringNoTag filter string. Space- or comma-separated values are accepted.
tag_idsstring[]NoExplicit tag IDs to filter on.
tagMatchStrategy"AND" | "OR"NoDefault is "AND".
dateFromstringNoInclusive lower date bound.
dateTostringNoInclusive upper date bound.
timeRange{ start?: number; end?: number }NoExplicit timestamp range in milliseconds.
contentTypesstring[]NoExact content_entity.type filter list. Pass one or more values to restrict search results to those stored content types.
feedIdsstring[]NoRestricts search to entries from one or more subscribed feed IDs. Get IDs from POST /list-feeds or MCP list_subscribed_feeds.
feedScope"all"NoSet to "all" to restrict search to entries from all subscribed feeds. Omit to search the full library unless feedIds is set.
feedReadStates("unread" | "read" | "archived")[]NoOptional read-state filter for feed entries. Omit to include unread and read entries while excluding archived entries.
viewIdsstring[]NoRestricts search to one or more accessible saved views. Use this for view-scoped searches that need LLM-ready or full responses.
sortBy"date-asc" | "date-desc"NoDefault is "date-desc".
offsetnumberNoMinimum 0. Default is 0.
limitnumberNoMinimum 1, maximum 500, default 30.
relevanceThresholdnumberNoSemantic relevance threshold.
enableRerankbooleanNoOverrides reranking behavior. Default is on for compact raw=false output and off for raw=true.
rawbooleanNoDefault false. false returns the compact slim response as a results array. true returns the full machine-readable payload.
rerankWindownumberNoDefault 100, capped at 100.
includeTagsbooleanNoIncludes related tags in the reference payload.
includeNotesbooleanNoIncludes annotations attached to each matched content entity. Default is false.

Search behavior

  • raw defaults to false, which returns the compact, token-efficient response shape with consistent top-level type, url, createdAt, title?, text, and optional slim media.
  • Set raw: true to receive the original machine-readable response with results, extraEntities, referencesByResultId, referencedEntities, and referencedTags.
  • If your client exposes response options named llm and full, use llm when you want the default compact response (raw: false or omitted), and use full when you want the machine-readable response (raw: true).
  • Search responses include direct references for annotation and chat-thread results by default.
  • Search result entities include a resolved url whenever Memex can derive a stable source URL. Prefer that field for citations and references.
  • includeTags adds related tag entities and tag IDs to referencesByResultId.
  • In raw: true, includeNotes adds an annotations array on each matched result. Each note includes compiled text, resolvedReferences, and a references field. That references field contains the note’s direct reference entities, and if one of those direct references is itself an annotation, that nested annotation includes its own references one level deeper.
  • In raw: false, includeNotes adds user_notes on each compact result in the results array. Each note is precompiled into YAML text with its own compact references object.
  • Raw annotation and chat-thread references are resolved from both reference_content_ids and memex-reference nodes found inside annotation JSON content or chat-thread message JSON content.
  • Search requests only consume credits when reranking is applied.
  • Compact raw=false requests default reranking on when the query is eligible for rerank. Raw raw=true requests default reranking off unless you explicitly pass enableRerank: true.
  • Rerank-enabled requests cost 1 credit and can return credit errors plus upgradeOptions.
  • Unsupported contentTypes values are rejected with an error that includes the supported values.
  • Omitting both feedIds and feedScope searches the full library, not only feed-sourced content.

LLM vs full response options

Use the same search route for both response modes:
  • llm response: omit raw or set "raw": false. This is the default and is best for agent prompts, summaries, and direct LLM context because results are compact and normalized.
  • full response: set "raw": true. This is best for programmatic processing because it preserves the full result graph, including extraEntities, referencesByResultId, referencedEntities, and referencedTags.
Search inside a view with the LLM-ready response:
{
    "viewIds": ["view_id"],
    "query": "vector database benchmarks",
    "limit": 10,
    "raw": false
}
Search inside a view with the full response:
{
    "viewIds": ["view_id"],
    "query": "vector database benchmarks",
    "limit": 10,
    "raw": true,
    "includeNotes": true
}
Use POST /list-feeds or MCP list_subscribed_feeds to fetch feed IDs first. Search one feed:
{
    "query": "vector databases",
    "feedIds": ["feed_id"],
    "limit": 20
}
Search multiple specific feeds:
{
    "query": "vector databases",
    "feedIds": ["feed_id_1", "feed_id_2"],
    "limit": 20
}
Search all subscribed feeds:
{
    "query": "vector databases",
    "feedScope": "all",
    "limit": 20
}
Include archived feed entries as well:
{
    "query": "vector databases",
    "feedScope": "all",
    "feedReadStates": ["unread", "read", "archived"],
    "limit": 20
}

Available contentTypes values

These are the exact persisted content_entity.type values accepted by POST /search, POST /search-content, and the MCP search_content tool: web, pdf, youtube, twitter, instagram, tiktok, facebook, linkedin, pinterest, reddit, snapchat, chatgpt, claude, annotation, image, transcribedMedia, audioRecording, selector, chatThread, twitterProfile, subreddit, youtubeChannel Example:
{
    "query": "transcript search",
    "contentTypes": ["youtube", "transcribedMedia", "audioRecording"],
    "limit": 10
}

Save content or a public URL

  • REST route: POST https://api.memex.garden/save-content-entity
  • URL-only REST route: POST https://api.memex.garden/save-content-by-url
  • MCP tool: save_content_by_url
  • Auth: Authentication
  • Response contract: Response shape

Parameters

URL-save payload:
{
    "data": {
        "url": "https://example.com/article",
        "title": "Optional title",
        "description": "Optional description",
        "html": "<main>Optional HTML</main>"
    },
    "tags": ["research"],
    "includeHtml": false
}
URL-only payload:
FieldTypeRequiredNotes
urlstringYesPublic URL to save.
tagsstring[]NoTag names. Missing tags are created and attached.
titlestringNoOptional title override.
descriptionstringNoOptional description override.
htmlstringNoOptional HTML payload for web saves.
includeHtmlbooleanNoIf true, the response includes HTML on web entities.
Behavior notes:
  • Tag names are trimmed and deduplicated.
  • For normal web URLs without html, Memex fetches the page body itself.
  • Pass data.url for structured saves, or url for URL-only saves.
  • REST route: POST https://api.memex.garden/ensure-shared-library-entry-link
  • MCP tool: create_sharing_link
  • Auth: Authentication
  • Response contract: Response shape
MCP payload:
FieldTypeRequiredNotes
contentIdstringYesSaved content entity ID returned by search_content, save_content_by_url, or REST saves.
access"view" | "collaborate"NoDefault is "view". "collaborate" creates or updates the link with collaborative access.
REST payload:
FieldTypeRequiredNotes
contentIdstringYesSaved content entity ID to share.
accessMode"public_link" | "public_link_contribute"YesUse "public_link" for view access and "public_link_contribute" for collaborative access.
MCP example:
{
    "contentId": "content_entity_id",
    "access": "collaborate"
}
MCP response includes:
  • shareUrl: full Memex URL for the public share link
  • publicToken: underlying public invite token
  • access: requested API access value, either view or collaborate
  • accessMode: stored Memex access mode
  • REST route: POST https://api.memex.garden/list-shared-library-entry-links
  • MCP tool: list_sharing_links
  • Auth: Authentication
  • Response contract: Response shape
MCP payload:
FieldTypeRequiredNotes
contentIdstringNoOptional saved content entity ID to filter by.
contentTypestringNoOptional exact content_entity.type value to filter by.
access"view" | "collaborate"NoOptional access filter. Omit to return both view and collaborate links.
REST payload:
FieldTypeRequiredNotes
contentIdstringNoOptional saved content entity ID to filter by.
contentTypestringNoOptional exact content_entity.type value to filter by.
accessMode"public_link" | "public_link_contribute"NoOptional access-mode filter. Omit to return both view and collaborate links.
MCP example:
{
    "access": "collaborate"
}
MCP response:
{
    "links": [
        {
            "sharedResourceId": "shared_resource_id",
            "contentId": "content_entity_id",
            "contentType": "web",
            "access": "view",
            "accessMode": "public_link",
            "publicToken": "public_token",
            "shareUrl": "https://memex.garden/read/content_entity_id?invite=public_token",
            "createdAt": "2026-06-14T00:00:00.000Z"
        }
    ]
}

View endpoints

Views are saved search scopes. Use them to define a reusable subset of a Memex library, list the caller’s accessible scopes, then run search constrained to one view.

POST /create-view

  • Full URL: https://api.memex.garden/create-view
  • Auth: authenticated user
  • Used for: creating a saved view owned by the caller
FieldTypeRequiredNotes
titlestringYesView title. Empty titles are rejected.
descriptionstringNoOptional description.
faviconstringNoOptional icon URL or emoji-like display value.
scopeViewScopeV1YesSaved scope expression. version must be 1.
scope.expression can be one of:
TypeShape
library{ "type": "library" }
query{ "type": "query", "text": "vector databases" }
tag{ "type": "tag", "tagId": "tag_id" }
contentType{ "type": "contentType", "contentType": "web" }
time{ "type": "time", "field": "contentCreatedAt", "start": 1717200000000, "end": 1719792000000 }
feed{ "type": "feed", "feedId": "feed_id", "entryScope": "saved" }
group{ "type": "group", "operator": "AND", "children": [ ...expressions ] }
not{ "type": "not", "child": { ...expression } }
Example:
curl https://api.memex.garden/create-view \
  -H "Authorization: Bearer YOUR_MEMEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "AI research",
    "description": "Saved web and PDF sources tagged for AI research",
    "scope": {
      "version": 1,
      "expression": {
        "type": "group",
        "operator": "AND",
        "children": [
          { "type": "tag", "tagId": "tag_ai_research" },
          { "type": "contentType", "contentType": "web" }
        ]
      },
      "defaults": {
        "sortBy": "date-desc",
        "includeNotes": true
      }
    }
  }'
Response notes:
  • Returns view.
  • view.id is the value to pass as viewId to /execute-view-search.
  • defaults.sortBy applies when a view search request omits sortBy.
  • defaults.includeNotes controls whether scoped search returns attached notes.

POST /list-views

  • Full URL: https://api.memex.garden/list-views
  • Auth: authenticated user
  • Used for: listing views the caller owns or can access through sharing
Request body:
{}
Response notes:
  • Returns views: ViewListItem[].
  • Each view includes id, title, description, scope, createdAt, updatedAt, and accessRole.
  • accessRole is owner, viewer, or writer.
  • Returns tagEntities for tag IDs referenced by the listed view scopes.

POST /execute-view-search

  • Full URL: https://api.memex.garden/execute-view-search
  • Auth: authenticated user for viewId, or no auth when using a public shared view token
  • Used for: searching only inside the content matched by a saved view
  • Response contract: the full/raw /search response shape from Response shape
POST /execute-view-search always returns the full response shape. If you want the LLM-ready compact response for a private view, call POST /search with viewIds: ["view_id"] and omit raw or set raw: false. Use raw: true for the full response.
FieldTypeRequiredNotes
viewIdstringRequired unless token is suppliedSaved view ID accessible to the authenticated user.
tokenstringRequired unless viewId is suppliedPublic shared view token.
querystringNoSearch text inside the view. Omit it to browse the view by sort order.
rewriteQuerybooleanNoRewrites the query before embedding generation.
forceFullQueryProcessingbooleanNoForces full query processing even for short queries.
enableRerankbooleanNoEnables LLM reranking when the query is eligible.
rerankWindownumberNoCandidate window for reranking. Maximum 100.
includeChunkContextbooleanNoIncludes nearby chunk context in eligible raw results.
tagIdsstring[]NoAdditional tag filter. Each tag ID must already belong to the view scope.
contentTypesstring[]NoFurther restricts results to exact content_entity.type values.
timeRange{ start?: number; end?: number }NoFurther restricts results by Unix timestamps in milliseconds.
sortBy"date-asc" | "date-desc"NoOverrides the view default sort.
offsetnumberNoMinimum 0. Default is 0.
limitnumberNoMinimum 1, maximum 500, default 30.
Authenticated view example:
curl https://api.memex.garden/execute-view-search \
  -H "Authorization: Bearer YOUR_MEMEX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "viewId": "view_id",
    "query": "vector database benchmarks",
    "limit": 10,
    "enableRerank": true
  }'
Public token example:
curl https://api.memex.garden/execute-view-search \
  -H "Content-Type: application/json" \
  -d '{
    "token": "public_view_token",
    "query": "launch notes",
    "limit": 10
  }'
Behavior notes:
  • The search is first constrained to content matched by the view’s saved expression.
  • tagIds, contentTypes, and timeRange only narrow the view result set further.
  • If the scoped view contains no matching content, the response uses the raw search shape with an empty results array.

Content endpoints

POST /get-available-tag-names

  • Full URL: https://api.memex.garden/get-available-tag-names
  • Auth: authenticated user
  • Used for: fetching the caller’s available tag names for autocomplete, filtering, or agent prompts
Request body:
{}
Response notes:
  • Returns tagNames: string[].
  • Names are deduplicated case-insensitively and sorted alphabetically.
  • Includes ordinary tags and any user-available special tags.

POST /list-auto-tagging-rules

  • Full URL: https://api.memex.garden/list-auto-tagging-rules
  • Auth: authenticated user
  • Used for: reading the caller’s auto-tagging rule configuration
Request body:
{}
Response notes:
  • Returns rules, an array of auto-tagging rules.
  • Rule fields include id, tag_id, add_tag_ids, enabled, source flags, text_queries, ai_prompt, content_types, feed_ids, and condition_expression.

POST /create-auto-tagging-rule

  • Full URL: https://api.memex.garden/create-auto-tagging-rule
  • Auth: authenticated user
  • Used for: creating an auto-tagging rule for one or more existing tag IDs
Request body:
{
    "data": {
        "tag_id": "00000000-0000-0000-0000-000000000000",
        "enabled": false,
        "source_library": true,
        "text_queries": ["vector databases"],
        "ai_prompt": "Content about vector databases"
    }
}
Response notes:
  • Returns ruleId.
  • Provide tag_id or at least one add_tag_ids value.
  • If omitted, enabled defaults to false.

POST /list-feeds

  • Full URL: https://api.memex.garden/list-feeds
  • Auth: authenticated user
  • Used for: listing the caller’s subscribed RSS and YouTube feeds
Request body:
{}
Response notes:
  • Returns feeds: FeedListItem[].
  • Feed items include IDs, source URLs, display metadata, read-state timestamps, visibility, status, and initial import progress when present.
  • Only subscriptions owned by the authenticated user are returned.

Account and billing helper endpoints

POST /agent-create-user

  • Full URL: https://api.memex.garden/agent-create-user
  • Auth: x-agent-service-token
  • Used for: agent-assisted signup on behalf of a human
FieldTypeRequiredNotes
targetUserEmailstringYesEmail address to create the account for.
targetUserNamestringNoOptional display name.
targetUserPicturestringNoOptional avatar URL.

POST /get-available-plans

  • Full URL: https://api.memex.garden/get-available-plans
  • Auth: none
  • Used for: fetching the live pricing catalog before checkout
Request body:
{}

POST /checkout

  • Full URL: https://api.memex.garden/checkout
  • Auth: Authorization: Bearer <apiKey> or another accepted Memex bearer token
  • Used for: buying one-time credit plans from an agent runtime
FieldTypeRequiredNotes
planIdstringNoRequired unless variantId is supplied.
variantIdstringNoRequired unless planId is supplied.
payment.providerstripeYesOnly Stripe is supported.
payment.sharedPaymentTokenstringYesStripe Shared Payment Token issued to Memex.Garden.
Use /checkout for one-time plans. For subscription plans, send the user to https://memex.garden/pricing.

MCP protocol request shape

MCP requests go to: https://api.memex.garden/mcp

List tools

{
    "jsonrpc": "2.0",
    "id": "tools-list-1",
    "method": "tools/list",
    "params": {}
}

Call a tool

{
    "jsonrpc": "2.0",
    "id": "call-1",
    "method": "tools/call",
    "params": {
        "name": "search_content",
        "arguments": {
            "query": "vector databases",
            "limit": 5
        }
    }
}