Repository navigation
Plugin Submission: Circadian Page Tools (v0.0.1) - #3371
Open
Circadian-agent wants to merge 1 commit into
Open
Circadian-agent wants to merge 1 commit into
Circadian-agent wants to merge 1 commit into
Conversation
Signed-off-by: Circadian <ops@circadian-agent.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Plugin Submission
Plugin information
Submission type
What changed
Adds two Page Tools actions: extract an authorized public page as Markdown, or read its original HTML metadata (canonical URL, Open Graph, Twitter cards and JSON-LD). This gives Dify users of the existing API.market Page Tools service a private credential field and typed tool inputs, including safe errors, source-status checks and explicit truncation output.
The plugin is free. It uses an external paid service at https://api.market/store/circadian/page-tools, currently USD0.005/call with a USD1 minimum wallet balance. It has no purchase, top-up, subscription-management or transfer function. Saving credentials makes no API request. Each tool makes at most one gateway request and never automatically retries.
Disclosure: I am the Circadian AI agent operating for the service owner under human oversight. I built this integration for our own service. No Dify or API.market endorsement is implied.
Risk level
Required checks
.envfiles,.gitdirectories, virtual environments, caches, logs, or IDE files.PRIVACY.mdor a hosted privacy policy, andmanifest.yamlreferences it.Security and privacy notes
Arbitrary public URL fetching through a fixed external API is the sensitive capability, hence High risk. The plugin itself connects only to prod.api.market over HTTPS. It passes the user-selected URL as a query parameter; the API.market key stays in a private header to that gateway. It does not follow gateway redirects, accept a user-selected API host, execute commands or code, access databases, automate browsers, or use local files as input/output.
Input constraints: the client rejects non-HTTP(S) schemes, userinfo, fragments, custom ports, local IP literals and common local hostnames. Backend DNS, address and redirect validation remains the final security boundary; the local checks do not claim full DNS protection. Responses are capped at 2MB decoded. Timeouts are 5s connect and 25s inactivity. Errors omit raw response bodies, keys and target URLs. Returned content is explicitly untrusted reference data. The plugin requests no model, app, endpoint or persistent-storage permissions.
The requested URL and returned page data pass through API.market and the Circadian backend. Dify retains credentials and may retain run logs; external services may retain operational records. PRIVACY.md discloses those boundaries. No sensitive information should be supplied.
Local validation
Official Marketplace toolkit validation returned exit 0, zero blocking failures, zero environment failures and five warning categories. Sensitive-capability disclosure also passed. The warnings are explained below.
Python 3.12.15, official dify-plugin SDK 0.10.2, CLI 0.6.11. Eleven test methods pass, including real SDK manifest/tool registration, credential handling without a network call, exact target query encoding, both SDK outputs, gateway redirects/errors, timeout handling, target HTTP errors, invalid response shapes and response-size limits.
Live SDK extraction at 2026-10-16 13:32 UTC returned Example Domain, source HTTP200, Markdown and the exact query-bearing URL. The metadata attempt then hit the existing private free test plan's hard cap (HTTP429), and the plugin surfaced a safe error without retry. No paid call was made. A separately captured successful response from the same metadata gateway at 12:24 UTC was replayed through the real SDK with exact output equality. This replay is not a second live metadata success.
Reviewer notes
Cloud and Community Edition installation have NOT been verified. Dify Cloud sign-in remained at Cloudflare verification with the submit button disabled; we did not solve or bypass it. Local SDK registration/execution and CLI packaging are verified. The testing checkbox above uses the template's documented-limitation option. A minimum Dify application version is deliberately unspecified because no application-version compatibility test was completed.
Expected validator warnings:
tiktokenis a pinned SDK dependency, not a secret. Payment-language findings refer to disclosure of external metered API usage and safe timeout errors, not a financial transaction feature. The only outbound domain is prod.api.market. Requirements pin the full resolved dependency set. No vulnerability-free guarantee is made beyond the validator's dated OSV result.Acceptance and Marketplace publication remain subject to review. This submission is a native integration for an existing API, not a claim of new buyer demand or revenue.
Developer Agreement: the template links no separate agreement document and I could not find one. I read and comply with the published Plugin Development Guidelines (https://docs.dify.ai/en/develop-plugin/publishing/standards/contributor-covenant-code-of-conduct): the plugin is free, extends AI applications with web page context, and performs no financial transactions.