Directory object · arcads
ARCADS ROUTES
ArcAds HTTP unified entrypoint
WHAT
ArcAds HTTP unified entrypoint
WHEN TO USE
direct ArcAds REST ops (presigned uploads, products, assets, situations, fields)
Model and router layerOpen the live contract7 sections
ARGS
$1=op, $2..$N=positional args
EX
[ARCADS_ROUTES]products[/ARCADS_ROUTES]
TESTS
POSITIVE
{"key":"ARCADS_ROUTES","body":"products"} → HTTP 200.INVERSE
{"key":"ARCADS_ROUTES","body":"xxx"} → ERR:target_map:unknown_opTarget
http · target_map:{"actors":{"method":"GET","url":"https://external-api.arcads.ai/v1/actors?page=1&pageSize=50"},"asset_get":{"method":"GET","url":"https://external-api.arcads.ai/v1/assets/$1"},"asset_watch":{"method":"GET","url":"https://external-api.arcads.ai/v1/assets/$1/watch"},"image_raw":{"method":"POST","url":"https://external-api.arcads.ai/v2/images/generate","body":"$1"},"presets":{"method":"GET","url":"https://external-api.arcads.ai/v1/presets"},"products":{"method":"GET","url":"https://external-api.arcads.ai/v1/products?page=1&pageSize=50"},"situations":{"method":"GET","url":"https://external-api.arcads.ai/v1/situations?page=1&pageSize=50"},"video_raw":{"method":"POST","url":"https://external-api.arcads.ai/v2/videos/generate","body":"$1"}}InvocationCall it12 ways
HTTP · curl — the canonical call
Any terminal or script. {key, body}: the arguments are one string, pipe-separated in the order below. The answer is {ok, ran, result, trace_id, receipt}.
curl -sS -X POST 'https://ops.miscsubjects.com/api/dispatch' \
-H "x-terminal-key: $TERMINAL_KEY" \
-H 'content-type: application/json' \
--data '{"key":"ARCADS_ROUTES","body":"products"}'HTTP · curl — named arguments
The same door with arguments by name: dispatch puts them in the row's order. Add "idempotency_key":"…" to make a retry safe (72 hours), "shape":true to see the request without sending it.
curl -sS -X POST 'https://ops.miscsubjects.com/api/dispatch' \
-H "x-terminal-key: $TERMINAL_KEY" \
-H 'content-type: application/json' \
--data '{"key":"ARCADS_ROUTES","args":{"op":"products"}}'HTTP · One URL — Safari, a Shortcut, any fetch tool
A GET that runs the call from one address. The address holds a link scoped to this row that expires (ttl in seconds, uses= to cap the count) — never the master key. https://miscsubjects.com/web/run/ARCADS_ROUTES?body=…&share=… is the same call for a browser model. Run mints a one-use link for itself.
# 1. a link that runs only ARCADS_ROUTES, for an hour (share_token in the answer): curl -sS 'https://ops.miscsubjects.com/api/dispatch?mint_share=1&scope=row:ARCADS_ROUTES&ttl=3600' \ -H "x-terminal-key: $TERMINAL_KEY" # 2. the address — paste it in Safari, a Shortcut or a model's fetch tool: https://ops.miscsubjects.com/api/dispatch?invoke=ARCADS_ROUTES&body=products&share=<share_token>
MCP · MCP over HTTP — misc_run
The build's MCP server. misc_run reaches every row by key and leaves a receipt; misc_find finds the key from a phrase. The answer is result.content[0].text.
curl -sS -X POST 'https://ops.miscsubjects.com/api/mcp' \
-H 'accept: application/json, text/event-stream' \
-H "authorization: Bearer $MCP_TOKEN" \
-H 'content-type: application/json' \
--data '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"misc_run","arguments":{"key":"ARCADS_ROUTES","args":{"op":"products"}}}}'MCP · Claude Code
Claude Code (terminal, desktop, web). The same server works in any Claude Code session once added.
# once, on any machine:
claude mcp add --transport http miscsubjects https://ops.miscsubjects.com/api/mcp --header "Authorization: Bearer $MCP_TOKEN"
# then in a session, the model calls:
mcp__miscsubjects__misc_run {"key":"ARCADS_ROUTES","args":{"op":"products"}}CLI · misc (on your Mac)
The misc CLI in ~/.local/bin: its words go to /api/resolve (plan, then run), with TERMINAL_KEY from the vault. Arguments are positional, in the order above. `misc find "words"` finds a row.
misc run ARCADS_ROUTES products misc arcads routes products
CLI · console-app
The Console's own CLI. It reads the key from ~/.build-vault.env or `console-app login`.
npm install -g https://miscsubjects.com/download/llmasos-console-1.1.0.tgz # once console-app call ARCADS_ROUTES 'products' console-app how ARCADS_ROUTES # this page, in the terminal
CLI · One line of text — the build grammar
/api/resolve parses the same line everywhere: "run KEY a b" (arguments in order, quoted when they hold spaces), the key's words ("arcads routes …"), or a phrase it matches to a row. POST runs; {"run":false} returns the plan without running it.
# typed, texted to the build, or emitted by a model with no tools:
run ARCADS_ROUTES products
curl -sS -X POST 'https://ops.miscsubjects.com/api/resolve' \
-H "x-terminal-key: $TERMINAL_KEY" \
-H 'content-type: application/json' \
--data '{"line":"run ARCADS_ROUTES products","run":true}'Agents · Tag form — inside an answer
What a model in this build writes mid-answer to call a row; both tags always, even with nothing between them. {"emit": text} runs every tag in a piece of text and returns each result.
[ARCADS_ROUTES]products[/ARCADS_ROUTES]
# run text that carries tags, exactly as a model wrote it:
curl -sS -X POST 'https://ops.miscsubjects.com/api/dispatch' \
-H "x-terminal-key: $TERMINAL_KEY" \
-H 'content-type: application/json' \
--data '{"emit":"[ARCADS_ROUTES]products[/ARCADS_ROUTES]"}'Phone · iPhone Shortcut — Get Contents of URL
A Shortcut on the phone, a Siri phrase, an Action Button, or an automation. Swap body for Ask for Input to fill arguments at run time.
Action: Get Contents of URL
URL: https://ops.miscsubjects.com/api/dispatch
Method: POST
Headers: x-terminal-key → (Text) your terminal key
content-type → application/json
Request Body: JSON
key (Text) → ARCADS_ROUTES
body (Text) → products
Then: Get Dictionary Value result from Contents of URLWebhook · A webhook any service can call
Stripe, GitHub, Slack, Zapier, a form, a cron elsewhere. The hook id is the credential for an unsigned sender and it may run nothing but ARCADS_ROUTES. mode "sync" answers with the result; "async" answers 202 at once.
# 1. once: make a hook that may run only ARCADS_ROUTES (the answer holds its id and url)
curl -sS -X POST 'https://ops.miscsubjects.com/api/hooks' \
-H "x-terminal-key: $TERMINAL_KEY" \
-H 'content-type: application/json' \
--data '{"label":"ARCADS_ROUTES webhook","source":"url","allow_keys":["ARCADS_ROUTES"],"effects_max":"write","mode":"sync"}'
# 2. then any service POSTs the arguments, by name, to that url:
curl -sS -X POST 'https://ops.miscsubjects.com/hook/<hook id>/ARCADS_ROUTES' \
-H 'content-type: application/json' \
--data '{"op":"products"}'Upstream · The raw request the build makes (undefined )
Straight to the service, bypassing the build: no receipt, no ledger, no gates. Credentials are the vault variables the row names.
An http row whose target does not name a method and URL: target_map:{"actors":{"method":"GET","url":"https://external-api.arcads.ai/v1/actors?page=1&pageSize=50"},"asset_get":{"method":"GET","url":"https://external-api.arcads.ai/v1/assets/$1"},"asset_watch":{"method":"GET","url":"https://external-api.arcads.ai/v1/assets/$1/watch"},"image_raw":{"method":"POST","url":"https://external-api.arcads.ai/v2/images/generate","body":"$1"},"presets":{"method":"GET","url":"https://external-api.arcads.ai/v1/presets"},"products":{"method":"GET","url":"https://external-api.arcads.ai/v1/products?page=1&pageSize=50"},"situations":{"method":"GET","url":"https://external-api.arcads.ai/v1/situations?page=1&pageSize=50"},"video_raw":{"method":"POST","url":"https://external-api.arcads.ai/v2/videos/generate","body":"$1"}}Article-object law
This definition is also an article and a Skill.
The human expression explains the capability. The Skill directs model behavior. The directory row remains the executable contract. OIP invokes it and receipts prove what happened.